@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';
@@ -1095,6 +1095,9 @@ function roundCoordTo(coord, decimal = 3) {
1095
1095
  NumberUtils.roundToNDecimal(coord[1], decimal)
1096
1096
  ];
1097
1097
  }
1098
+ function roundCoordToString(coord, decimal = 3) {
1099
+ return roundCoordTo(coord, decimal).map(r => r.toString());
1100
+ }
1098
1101
  /**
1099
1102
  * Returns an array of converted coordinates.
1100
1103
  * Conversion is done for every configured projections
@@ -1554,7 +1557,7 @@ class OgcFilterWriter {
1554
1557
  const wfsExpression = filterOptions.expression;
1555
1558
  let geometry;
1556
1559
  if (wfsWktGeometry) {
1557
- const wkt = new olWKT();
1560
+ const wkt = new olFormatWKT();
1558
1561
  geometry = wkt.readGeometry(wfsWktGeometry, {
1559
1562
  dataProjection: wfsSrsName,
1560
1563
  featureProjection: wfsSrsName || 'EPSG:3857'
@@ -8687,7 +8690,7 @@ class HoverFeatureDirective {
8687
8690
  zIndex: 901,
8688
8691
  renderMode: "vector",
8689
8692
  declutter: true,
8690
- source: new olSourceVectorTile({}),
8693
+ source: new olSourceVectorTile({ projection: this.map.projection }),
8691
8694
  style: (feature, resolution) => {
8692
8695
  if (this.mvtStyleOptions && feature.getId() in this.selectionMVT) {
8693
8696
  return this.createHoverStyle(feature, this.mvtStyleOptions, resolution);
@@ -9656,7 +9659,7 @@ class GeoDBService {
9656
9659
  this.compression = compression;
9657
9660
  this.dbName = 'geoData';
9658
9661
  this.collisionsMap = new Map();
9659
- this._newTiles = 0;
9662
+ this._newData = 0;
9660
9663
  }
9661
9664
  /**
9662
9665
  * Only blob can be will be compressed
@@ -9691,7 +9694,7 @@ class GeoDBService {
9691
9694
  return this.ngxIndexedDBService.getByID(this.dbName, url);
9692
9695
  }), concatMap((dbObject) => {
9693
9696
  if (!dbObject) {
9694
- this._newTiles++;
9697
+ this._newData++;
9695
9698
  return this.ngxIndexedDBService.add(this.dbName, geoDBData);
9696
9699
  }
9697
9700
  else {
@@ -9743,11 +9746,11 @@ class GeoDBService {
9743
9746
  deleteByKey(url) {
9744
9747
  return this.ngxIndexedDBService.deleteByKey(this.dbName, url);
9745
9748
  }
9746
- getRegionTileCountByID(id) {
9749
+ getRegionCountByID(id) {
9747
9750
  const subject = new Subject();
9748
9751
  const dbRequest = this.getRegionByID(id)
9749
- .subscribe((tiles) => {
9750
- subject.next(tiles.length);
9752
+ .subscribe((datas) => {
9753
+ subject.next(datas.length);
9751
9754
  subject.complete();
9752
9755
  });
9753
9756
  return subject;
@@ -9766,9 +9769,9 @@ class GeoDBService {
9766
9769
  }
9767
9770
  const IDBKey = IDBKeyRange.only(id);
9768
9771
  const dbRequest = this.ngxIndexedDBService.getAllByIndex(this.dbName, 'regionID', IDBKey);
9769
- dbRequest.subscribe((tiles) => {
9770
- tiles.forEach((tile) => {
9771
- this.ngxIndexedDBService.deleteByKey(this.dbName, tile.url);
9772
+ dbRequest.subscribe((datas) => {
9773
+ datas.forEach((data) => {
9774
+ this.ngxIndexedDBService.deleteByKey(this.dbName, data.url);
9772
9775
  });
9773
9776
  });
9774
9777
  return dbRequest;
@@ -9779,7 +9782,7 @@ class GeoDBService {
9779
9782
  }
9780
9783
  resetCounters() {
9781
9784
  this.resetCollisionsMap();
9782
- this._newTiles = 0;
9785
+ this._newData = 0;
9783
9786
  }
9784
9787
  resetCollisionsMap() {
9785
9788
  this.collisionsMap = new Map();
@@ -9797,8 +9800,8 @@ class GeoDBService {
9797
9800
  }
9798
9801
  }
9799
9802
  }
9800
- get newTiles() {
9801
- return this._newTiles;
9803
+ get newData() {
9804
+ return this._newData;
9802
9805
  }
9803
9806
  }
9804
9807
  GeoDBService.ɵfac = function GeoDBService_Factory(t) { return new (t || GeoDBService)(i0.ɵɵinject(i1$3.NgxIndexedDBService), i0.ɵɵinject(i2$1.CompressionService)); };
@@ -10819,7 +10822,7 @@ class QueryService {
10819
10822
  features = this.extractGML2Data(res, layer, allowedFieldsAndAlias);
10820
10823
  break;
10821
10824
  }
10822
- if (features.length > 0 && features[0].geometry === null) {
10825
+ if (features.length > 0 && (features[0].geometry === null || !features[0].geometry)) {
10823
10826
  const geomToAdd = this.createGeometryFromUrlClick(url);
10824
10827
  for (const feature of features) {
10825
10828
  feature.geometry = geomToAdd;
@@ -10830,7 +10833,7 @@ class QueryService {
10830
10833
  new RegExp('FEATURE_COUNT=' + this.featureCount) :
10831
10834
  new RegExp('FEATURE_COUNT=' + this.defaultFeatureCount);
10832
10835
  if (featureCount.test(url) &&
10833
- ((wmsDatasource.params?.FEATURE_COUNT && features.length === this.featureCount) ||
10836
+ ((wmsDatasource.params?.FEATURE_COUNT && this.featureCount > 1 && features.length === this.featureCount) ||
10834
10837
  (!wmsDatasource.params?.FEATURE_COUNT && features.length === this.defaultFeatureCount))) {
10835
10838
  this.languageService.translate.get('igo.geo.query.featureCountMax', { value: layer.title }).subscribe(message => {
10836
10839
  const messageObj = this.messageService.info(message);
@@ -12520,6 +12523,9 @@ class CatalogBrowserComponent {
12520
12523
  if (!layer.options.sourceOptions.optionsFromApi) {
12521
12524
  layer.options.sourceOptions.optionsFromApi = true;
12522
12525
  }
12526
+ if (this.catalog.profils?.length) {
12527
+ layer.options.security = { profils: this.catalog.profils };
12528
+ }
12523
12529
  return this.layerService.createAsyncLayer(layer.options);
12524
12530
  });
12525
12531
  zip(...layers$).subscribe((oLayers) => {
@@ -15450,7 +15456,20 @@ var FontType;
15450
15456
  FontType["LucidaConsole"] = "Lucida Console";
15451
15457
  FontType["BrushScriptMT"] = "Brush Script MT";
15452
15458
  FontType["ComicSansMS"] = "Comic Sans MS";
15453
- })(FontType || (FontType = {}));
15459
+ })(FontType || (FontType = {}));
15460
+ var LabelType;
15461
+ (function (LabelType) {
15462
+ LabelType["Coordinates"] = "Coordinates";
15463
+ LabelType["Length"] = "Length";
15464
+ LabelType["Area"] = "Area";
15465
+ LabelType["Predefined"] = "Predefined";
15466
+ LabelType["Custom"] = "Custom";
15467
+ })(LabelType || (LabelType = {}));
15468
+ var CoordinatesUnit;
15469
+ (function (CoordinatesUnit) {
15470
+ CoordinatesUnit["DecimalDegree"] = "DD";
15471
+ CoordinatesUnit["DegreesMinutesSeconds"] = "DMS";
15472
+ })(CoordinatesUnit || (CoordinatesUnit = {}));
15454
15473
 
15455
15474
  class DrawIconService {
15456
15475
  constructor(config) {
@@ -16090,6 +16109,22 @@ function createOlTooltipDrawAtPoint(olPoint) {
16090
16109
  olTooltip.setPosition(olPoint.getFlatCoordinates());
16091
16110
  olPoint.set('_tooltip', olTooltip);
16092
16111
  return olTooltip;
16112
+ }
16113
+ function DDtoDMS(value, unit) {
16114
+ const conversionMapper = new Map([
16115
+ [CoordinatesUnit.DecimalDegree, (val) => {
16116
+ if (typeof val[0] === 'number') {
16117
+ return roundCoordToString(val, 5);
16118
+ }
16119
+ else {
16120
+ const numVal = [Number(val[0]), Number(val[1])];
16121
+ return roundCoordToString(numVal, 5);
16122
+ }
16123
+ }],
16124
+ [CoordinatesUnit.DegreesMinutesSeconds, (val) => convertDDToDMS(val, 2)]
16125
+ ]);
16126
+ let conversion = conversionMapper.get(unit);
16127
+ return conversion ? conversion(value) : undefined;
16093
16128
  }
16094
16129
 
16095
16130
  class DrawStyleService {
@@ -16099,7 +16134,7 @@ class DrawStyleService {
16099
16134
  this.strokeColor = 'rgba(143,7,7,1)';
16100
16135
  this.strokeWidth = 1;
16101
16136
  this.labelsAreShown = true;
16102
- this.fontSize = '20';
16137
+ this.fontSize = '15';
16103
16138
  this.fontStyle = FontType.Arial.toString();
16104
16139
  this.offsetX = 0;
16105
16140
  this.offsetY = 0;
@@ -16945,8 +16980,24 @@ class DrawControl {
16945
16980
  * Freehand mode observable (defaults to false)
16946
16981
  */
16947
16982
  this.freehand$ = new BehaviorSubject(false);
16983
+ /**
16984
+ * Observables from predefined radius (defaults to false and undefined)
16985
+ */
16986
+ this.ispredefinedRadius$ = new BehaviorSubject(false);
16987
+ this.predefinedRadius$ = new BehaviorSubject(undefined);
16988
+ this.radiusDrawEnd$ = new BehaviorSubject(undefined);
16948
16989
  this.olDrawingLayer = options.drawingLayer ? options.drawingLayer : this.createOlInnerOverlayLayer();
16949
16990
  this.olGeometryType = this.options.geometryType;
16991
+ this.olInteractionStyle = this.options.interactionStyle;
16992
+ }
16993
+ /**
16994
+ * take the value of radius
16995
+ */
16996
+ get radiusVal() {
16997
+ return this.predefinedRadius$.getValue();
16998
+ }
16999
+ set radiusValData(radiusCercle) {
17000
+ this.predefinedRadius$.next(radiusCercle);
16950
17001
  }
16951
17002
  /**
16952
17003
  * Wheter the control is active
@@ -16983,6 +17034,9 @@ class DrawControl {
16983
17034
  getSource() {
16984
17035
  return this.olDrawingLayerSource;
16985
17036
  }
17037
+ setOlInteractionStyle(style) {
17038
+ this.olInteractionStyle = style;
17039
+ }
16986
17040
  /**
16987
17041
  * Set the current geometry type
16988
17042
  * @param geometryType the geometry type
@@ -16990,6 +17044,12 @@ class DrawControl {
16990
17044
  setGeometryType(geometryType) {
16991
17045
  this.olGeometryType = geometryType;
16992
17046
  }
17047
+ /**
17048
+ * Get the current geometry type
17049
+ */
17050
+ getGeometryType() {
17051
+ return this.olGeometryType;
17052
+ }
16993
17053
  /**
16994
17054
  * Create a drawing source if none is defined in the options
16995
17055
  */
@@ -17031,21 +17091,35 @@ class DrawControl {
17031
17091
  // Create Draw interaction
17032
17092
  let olDrawInteraction;
17033
17093
  if (!this.freehand$.getValue()) {
17034
- olDrawInteraction = new OlDraw({
17035
- type: this.olGeometryType,
17036
- source: this.getSource(),
17037
- stopClick: true,
17038
- style: this.options.interactionStyle,
17039
- maxPoints: this.options.maxPoints,
17040
- freehand: false,
17041
- freehandCondition: () => false
17042
- });
17094
+ if (!this.ispredefinedRadius$.getValue()) {
17095
+ olDrawInteraction = new OlDraw({
17096
+ type: this.olGeometryType,
17097
+ source: this.getSource(),
17098
+ stopClick: true,
17099
+ style: this.olInteractionStyle,
17100
+ maxPoints: this.options.maxPoints,
17101
+ freehand: false,
17102
+ freehandCondition: () => false
17103
+ });
17104
+ }
17105
+ else {
17106
+ olDrawInteraction = new OlDraw({
17107
+ type: 'Point',
17108
+ source: this.getSource(),
17109
+ stopClick: true,
17110
+ style: this.olInteractionStyle,
17111
+ maxPoints: this.options.maxPoints,
17112
+ freehand: false,
17113
+ freehandCondition: () => false
17114
+ });
17115
+ }
17043
17116
  }
17044
17117
  else {
17045
17118
  if (this.olGeometryType === 'Point') {
17046
17119
  olDrawInteraction = new OlDraw({
17047
17120
  type: 'Circle',
17048
17121
  source: this.getSource(),
17122
+ style: typeof this.olInteractionStyle === 'function' ? undefined : this.olInteractionStyle,
17049
17123
  maxPoints: this.options.maxPoints,
17050
17124
  freehand: true
17051
17125
  });
@@ -17054,6 +17128,7 @@ class DrawControl {
17054
17128
  olDrawInteraction = new OlDraw({
17055
17129
  type: this.olGeometryType,
17056
17130
  source: this.getSource(),
17131
+ style: this.olInteractionStyle,
17057
17132
  maxPoints: this.options.maxPoints,
17058
17133
  freehand: true
17059
17134
  });
@@ -17116,6 +17191,9 @@ class DrawControl {
17116
17191
  * @param event Draw event (drawend)
17117
17192
  */
17118
17193
  onDrawEnd(event) {
17194
+ if (event.feature.getGeometry().getType() === 'Point') {
17195
+ this.radiusDrawEnd$.next(this.predefinedRadius$.getValue());
17196
+ }
17119
17197
  this.unsubscribeKeyDown();
17120
17198
  unByKey(this.onDrawKey);
17121
17199
  const olGeometry = event.feature.getGeometry();
@@ -17173,57 +17251,570 @@ class DrawControl {
17173
17251
  }
17174
17252
  }
17175
17253
 
17254
+ function DrawPopupComponent_div_12_mat_radio_group_5_mat_radio_button_1_Template(rf, ctx) { if (rf & 1) {
17255
+ const _r10 = i0.ɵɵgetCurrentView();
17256
+ i0.ɵɵelementStart(0, "mat-radio-button", 11);
17257
+ 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)); });
17258
+ i0.ɵɵtext(1);
17259
+ i0.ɵɵelementEnd();
17260
+ } if (rf & 2) {
17261
+ const option_r8 = ctx.$implicit;
17262
+ const ctx_r7 = i0.ɵɵnextContext(3);
17263
+ i0.ɵɵproperty("value", option_r8.value)("disabled", ctx_r7.optionAvailable(option_r8.value))("checked", option_r8.checked);
17264
+ i0.ɵɵadvance(1);
17265
+ i0.ɵɵtextInterpolate1(" ", ctx_r7.getProperLengthLabel(option_r8.value), " ");
17266
+ } }
17267
+ function DrawPopupComponent_div_12_mat_radio_group_5_Template(rf, ctx) { if (rf & 1) {
17268
+ i0.ɵɵelementStart(0, "mat-radio-group", 5);
17269
+ i0.ɵɵtemplate(1, DrawPopupComponent_div_12_mat_radio_group_5_mat_radio_button_1_Template, 2, 4, "mat-radio-button", 10);
17270
+ i0.ɵɵelementEnd();
17271
+ } if (rf & 2) {
17272
+ const ctx_r2 = i0.ɵɵnextContext(2);
17273
+ i0.ɵɵadvance(1);
17274
+ i0.ɵɵproperty("ngForOf", ctx_r2.arrayBuiltInType);
17275
+ } }
17276
+ function DrawPopupComponent_div_12_ng_container_6_mat_checkbox_1_Template(rf, ctx) { if (rf & 1) {
17277
+ const _r14 = i0.ɵɵgetCurrentView();
17278
+ i0.ɵɵelementStart(0, "mat-checkbox", 13);
17279
+ 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)); });
17280
+ i0.ɵɵtext(1);
17281
+ i0.ɵɵelementEnd();
17282
+ } if (rf & 2) {
17283
+ const option_r12 = ctx.$implicit;
17284
+ const ctx_r11 = i0.ɵɵnextContext(3);
17285
+ i0.ɵɵproperty("value", option_r12.value)("disabled", ctx_r11.optionAvailable(option_r12.value))("checked", option_r12.checked);
17286
+ i0.ɵɵadvance(1);
17287
+ i0.ɵɵtextInterpolate1(" ", ctx_r11.getProperLengthLabel(option_r12.value), " ");
17288
+ } }
17289
+ function DrawPopupComponent_div_12_ng_container_6_Template(rf, ctx) { if (rf & 1) {
17290
+ i0.ɵɵelementContainerStart(0, 5);
17291
+ i0.ɵɵtemplate(1, DrawPopupComponent_div_12_ng_container_6_mat_checkbox_1_Template, 2, 4, "mat-checkbox", 12);
17292
+ i0.ɵɵelementContainerEnd();
17293
+ } if (rf & 2) {
17294
+ const ctx_r3 = i0.ɵɵnextContext(2);
17295
+ i0.ɵɵadvance(1);
17296
+ i0.ɵɵproperty("ngForOf", ctx_r3.arrayBuiltInType);
17297
+ } }
17298
+ function DrawPopupComponent_div_12_div_7_mat_option_6_Template(rf, ctx) { if (rf & 1) {
17299
+ i0.ɵɵelementStart(0, "mat-option", 3);
17300
+ i0.ɵɵtext(1);
17301
+ i0.ɵɵelementEnd();
17302
+ } if (rf & 2) {
17303
+ const unit_r17 = ctx.$implicit;
17304
+ i0.ɵɵproperty("value", unit_r17);
17305
+ i0.ɵɵadvance(1);
17306
+ i0.ɵɵtextInterpolate1(" ", unit_r17, " ");
17307
+ } }
17308
+ function DrawPopupComponent_div_12_div_7_Template(rf, ctx) { if (rf & 1) {
17309
+ const _r19 = i0.ɵɵgetCurrentView();
17310
+ i0.ɵɵelementStart(0, "div")(1, "mat-form-field", 14);
17311
+ i0.ɵɵelement(2, "input", 15, 16);
17312
+ i0.ɵɵelementEnd();
17313
+ i0.ɵɵelementStart(4, "mat-form-field", 17)(5, "mat-select", 18);
17314
+ 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)); });
17315
+ i0.ɵɵtemplate(6, DrawPopupComponent_div_12_div_7_mat_option_6_Template, 2, 2, "mat-option", 19);
17316
+ i0.ɵɵelementEnd()()();
17317
+ } if (rf & 2) {
17318
+ const ctx_r4 = i0.ɵɵnextContext(2);
17319
+ i0.ɵɵadvance(2);
17320
+ i0.ɵɵpropertyInterpolate("value", ctx_r4.currentCoordinates);
17321
+ i0.ɵɵadvance(3);
17322
+ i0.ɵɵproperty("value", ctx_r4.coordinatesMeasureUnit);
17323
+ i0.ɵɵadvance(1);
17324
+ i0.ɵɵproperty("ngForOf", ctx_r4.allCoordinatesUnits);
17325
+ } }
17326
+ function DrawPopupComponent_div_12_div_8_mat_option_6_Template(rf, ctx) { if (rf & 1) {
17327
+ i0.ɵɵelementStart(0, "mat-option", 3);
17328
+ i0.ɵɵtext(1);
17329
+ i0.ɵɵelementEnd();
17330
+ } if (rf & 2) {
17331
+ const unit_r22 = ctx.$implicit;
17332
+ const ctx_r21 = i0.ɵɵnextContext(3);
17333
+ i0.ɵɵproperty("value", unit_r22);
17334
+ i0.ɵɵadvance(1);
17335
+ i0.ɵɵtextInterpolate1(" ", ctx_r21.getLengthUnitEnum(unit_r22), " ");
17336
+ } }
17337
+ function DrawPopupComponent_div_12_div_8_Template(rf, ctx) { if (rf & 1) {
17338
+ const _r24 = i0.ɵɵgetCurrentView();
17339
+ i0.ɵɵelementStart(0, "div")(1, "mat-form-field", 14);
17340
+ i0.ɵɵelement(2, "input", 20, 16);
17341
+ i0.ɵɵelementEnd();
17342
+ i0.ɵɵelementStart(4, "mat-form-field", 17)(5, "mat-select", 18);
17343
+ 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)); });
17344
+ i0.ɵɵtemplate(6, DrawPopupComponent_div_12_div_8_mat_option_6_Template, 2, 2, "mat-option", 19);
17345
+ i0.ɵɵelementEnd()()();
17346
+ } if (rf & 2) {
17347
+ const ctx_r5 = i0.ɵɵnextContext(2);
17348
+ i0.ɵɵadvance(2);
17349
+ i0.ɵɵpropertyInterpolate("placeholder", ctx_r5.lengthLabelT);
17350
+ i0.ɵɵpropertyInterpolate("value", ctx_r5.currentLength);
17351
+ i0.ɵɵadvance(3);
17352
+ i0.ɵɵproperty("value", ctx_r5.lengthMeasureUnit);
17353
+ i0.ɵɵadvance(1);
17354
+ i0.ɵɵproperty("ngForOf", ctx_r5.allLengthUnits);
17355
+ } }
17356
+ function DrawPopupComponent_div_12_div_9_mat_option_7_Template(rf, ctx) { if (rf & 1) {
17357
+ i0.ɵɵelementStart(0, "mat-option", 3);
17358
+ i0.ɵɵtext(1);
17359
+ i0.ɵɵelementEnd();
17360
+ } if (rf & 2) {
17361
+ const unit_r27 = ctx.$implicit;
17362
+ const ctx_r26 = i0.ɵɵnextContext(3);
17363
+ i0.ɵɵproperty("value", unit_r27);
17364
+ i0.ɵɵadvance(1);
17365
+ i0.ɵɵtextInterpolate1(" ", ctx_r26.getAreaUnitEnum(unit_r27), " ");
17366
+ } }
17367
+ function DrawPopupComponent_div_12_div_9_Template(rf, ctx) { if (rf & 1) {
17368
+ const _r29 = i0.ɵɵgetCurrentView();
17369
+ i0.ɵɵelementStart(0, "div")(1, "mat-form-field", 14);
17370
+ i0.ɵɵelement(2, "input", 20, 16);
17371
+ i0.ɵɵpipe(4, "translate");
17372
+ i0.ɵɵelementEnd();
17373
+ i0.ɵɵelementStart(5, "mat-form-field", 17)(6, "mat-select", 18);
17374
+ 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)); });
17375
+ i0.ɵɵtemplate(7, DrawPopupComponent_div_12_div_9_mat_option_7_Template, 2, 2, "mat-option", 19);
17376
+ i0.ɵɵelementEnd()()();
17377
+ } if (rf & 2) {
17378
+ const ctx_r6 = i0.ɵɵnextContext(2);
17379
+ i0.ɵɵadvance(2);
17380
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 4, "igo.geo.draw.labelType.Area"));
17381
+ i0.ɵɵpropertyInterpolate("value", ctx_r6.currentArea);
17382
+ i0.ɵɵadvance(4);
17383
+ i0.ɵɵproperty("value", ctx_r6.areaMeasureUnit);
17384
+ i0.ɵɵadvance(1);
17385
+ i0.ɵɵproperty("ngForOf", ctx_r6.allAreaUnits);
17386
+ } }
17387
+ function DrawPopupComponent_div_12_Template(rf, ctx) { if (rf & 1) {
17388
+ const _r31 = i0.ɵɵgetCurrentView();
17389
+ i0.ɵɵelementStart(0, "div")(1, "div")(2, "p", 5);
17390
+ i0.ɵɵtext(3);
17391
+ i0.ɵɵpipe(4, "translate");
17392
+ i0.ɵɵelementEnd();
17393
+ i0.ɵɵtemplate(5, DrawPopupComponent_div_12_mat_radio_group_5_Template, 2, 1, "mat-radio-group", 6);
17394
+ i0.ɵɵtemplate(6, DrawPopupComponent_div_12_ng_container_6_Template, 2, 1, "ng-container", 6);
17395
+ i0.ɵɵtemplate(7, DrawPopupComponent_div_12_div_7_Template, 7, 3, "div", 4);
17396
+ i0.ɵɵtemplate(8, DrawPopupComponent_div_12_div_8_Template, 7, 4, "div", 4);
17397
+ i0.ɵɵtemplate(9, DrawPopupComponent_div_12_div_9_Template, 8, 6, "div", 4);
17398
+ i0.ɵɵelementEnd();
17399
+ i0.ɵɵelementStart(10, "div", 7)(11, "button", 8);
17400
+ 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()); });
17401
+ i0.ɵɵtext(12);
17402
+ i0.ɵɵpipe(13, "translate");
17403
+ i0.ɵɵelementEnd();
17404
+ i0.ɵɵelementStart(14, "button", 9);
17405
+ 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()); });
17406
+ i0.ɵɵtext(15);
17407
+ i0.ɵɵelementEnd()()();
17408
+ } if (rf & 2) {
17409
+ const ctx_r0 = i0.ɵɵnextContext();
17410
+ i0.ɵɵadvance(3);
17411
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 8, "igo.geo.draw.builtInInstructions"));
17412
+ i0.ɵɵadvance(2);
17413
+ i0.ɵɵproperty("ngIf", ctx_r0.olGeometryType !== "Polygon");
17414
+ i0.ɵɵadvance(1);
17415
+ i0.ɵɵproperty("ngIf", ctx_r0.olGeometryType === "Polygon");
17416
+ i0.ɵɵadvance(1);
17417
+ i0.ɵɵproperty("ngIf", ctx_r0.labelFlag === ctx_r0.labelType.Coordinates);
17418
+ i0.ɵɵadvance(1);
17419
+ i0.ɵɵproperty("ngIf", ctx_r0.labelFlag === ctx_r0.labelType.Length || ctx_r0.polygonCheck === 2);
17420
+ i0.ɵɵadvance(1);
17421
+ i0.ɵɵproperty("ngIf", ctx_r0.labelFlag === ctx_r0.labelType.Area || ctx_r0.polygonCheck === 2);
17422
+ i0.ɵɵadvance(3);
17423
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 10, "igo.geo.draw.cancel"), " ");
17424
+ i0.ɵɵadvance(3);
17425
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.noLabelButton(), " ");
17426
+ } }
17427
+ function DrawPopupComponent_div_13_Template(rf, ctx) { if (rf & 1) {
17428
+ const _r36 = i0.ɵɵgetCurrentView();
17429
+ i0.ɵɵelementStart(0, "div")(1, "div")(2, "p", 5);
17430
+ i0.ɵɵtext(3);
17431
+ i0.ɵɵpipe(4, "translate");
17432
+ i0.ɵɵelementEnd();
17433
+ i0.ɵɵelementStart(5, "mat-form-field", 21)(6, "input", 22, 16);
17434
+ 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)); });
17435
+ i0.ɵɵpipe(8, "translate");
17436
+ i0.ɵɵelementEnd()()();
17437
+ i0.ɵɵelementStart(9, "div", 7)(10, "button", 8);
17438
+ 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()); });
17439
+ i0.ɵɵtext(11);
17440
+ i0.ɵɵpipe(12, "translate");
17441
+ i0.ɵɵelementEnd();
17442
+ i0.ɵɵelementStart(13, "button", 9);
17443
+ 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)); });
17444
+ i0.ɵɵtext(14);
17445
+ i0.ɵɵelementEnd()()();
17446
+ } if (rf & 2) {
17447
+ const ctx_r1 = i0.ɵɵnextContext();
17448
+ i0.ɵɵadvance(3);
17449
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 5, "igo.geo.draw.dialogInstruction"));
17450
+ i0.ɵɵadvance(3);
17451
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(8, 7, "igo.geo.draw.dialogTitle"));
17452
+ i0.ɵɵpropertyInterpolate("value", ctx_r1.currentLabel);
17453
+ i0.ɵɵadvance(5);
17454
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(12, 9, "igo.geo.draw.cancel"), " ");
17455
+ i0.ɵɵadvance(3);
17456
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.noLabelButton(), " ");
17457
+ } }
17176
17458
  class DrawPopupComponent {
17177
- constructor(dialogRef, data) {
17459
+ constructor(languageService, dialogRef, data) {
17460
+ this.languageService = languageService;
17178
17461
  this.dialogRef = dialogRef;
17179
17462
  this.data = data;
17180
17463
  this.confirmFlag = false;
17181
- }
17464
+ this.labelFlag = LabelType.Custom;
17465
+ this.geometryType = GeometryType;
17466
+ this.labelType = LabelType;
17467
+ this.arrayBuiltInType = [];
17468
+ this.olGeometryType = undefined;
17469
+ this.polygonCheck = 0; // Count for polygon label types checkboxes
17470
+ this.currentLabel = this.data.olGeometry.get('draw');
17471
+ this.labelLength = this.currentLabel ? this.currentLabel.length : 0;
17472
+ let olGeometry;
17473
+ const projection = this.data.map.ol.getView().getProjection();
17474
+ if (this.data.olGeometry instanceof OlFeature) {
17475
+ if (this.data.olGeometry.get('rad')) {
17476
+ const longitudeLatitude = [this.data.olGeometry.get('longitude'), this.data.olGeometry.get('latitude')];
17477
+ this.olGeometryType = GeometryType.Circle;
17478
+ olGeometry = new OlCircle(longitudeLatitude, this.data.olGeometry.get('rad'));
17479
+ }
17480
+ else {
17481
+ this.olGeometryType = this.data.olGeometry.getGeometry().getType();
17482
+ olGeometry = this.data.olGeometry.get('geometry');
17483
+ }
17484
+ }
17485
+ else {
17486
+ this.olGeometryType = this.data.olGeometry.getType();
17487
+ olGeometry = this.data.olGeometry;
17488
+ }
17489
+ if (this.olGeometryType === GeometryType.Point || this.olGeometryType === GeometryType.Circle) {
17490
+ if (this.data.olGeometry instanceof OlFeature) {
17491
+ let longitude = this.data.olGeometry.get('longitude');
17492
+ let latitude = this.data.olGeometry.get('latitude');
17493
+ this.longlatDD = roundCoordTo([longitude, latitude], 5);
17494
+ this.coordinatesInDD = '(' + latitude + ', '
17495
+ + longitude + ')';
17496
+ }
17497
+ else {
17498
+ let point4326 = transform(this.data.olGeometry.getFlatCoordinates(), projection, 'EPSG:4326');
17499
+ this.longlatDD = roundCoordTo([point4326[0], point4326[1]], 5);
17500
+ this.coordinatesInDD =
17501
+ '(' + this.longlatDD[1] + ', ' + this.longlatDD[0] + ')';
17502
+ }
17503
+ this.currentCoordinates = this.coordinatesInDD;
17504
+ }
17505
+ if (this.olGeometryType === GeometryType.LineString) {
17506
+ this.lengthInMeters = measureOlGeometryLength(olGeometry, projection.getCode()).toFixed(2);
17507
+ this.currentLength = this.lengthInMeters;
17508
+ }
17509
+ else if (this.olGeometryType === GeometryType.Polygon) {
17510
+ this.lengthInMeters = measureOlGeometryLength(olGeometry, projection.getCode()).toFixed(2);
17511
+ this.currentLength = this.lengthInMeters;
17512
+ this.areaInMetersSquare = measureOlGeometryArea(olGeometry, projection.getCode()).toFixed(2);
17513
+ this.currentArea = this.areaInMetersSquare;
17514
+ }
17515
+ else if (this.olGeometryType === GeometryType.Circle) {
17516
+ let circularPolygon = fromCircle(olGeometry, 10000);
17517
+ const radius = this.getRadius(circularPolygon);
17518
+ this.lengthInMeters = radius.toFixed(2);
17519
+ this.currentLength = this.lengthInMeters;
17520
+ this.areaInMetersSquare = measureOlGeometryArea(circularPolygon, projection.getCode()).toFixed(2);
17521
+ this.currentArea = this.areaInMetersSquare;
17522
+ }
17523
+ if (data.olGeometry.get('labelType') === LabelType.Coordinates) {
17524
+ this.onLabelTypeChange(LabelType.Predefined);
17525
+ this.onLabelTypeChange(LabelType.Coordinates, true);
17526
+ this.coordinatesMeasureUnit = data.olGeometry.get('measureUnit');
17527
+ }
17528
+ else if (data.olGeometry.get('labelType') === LabelType.Length) {
17529
+ this.onLabelTypeChange(LabelType.Predefined);
17530
+ this.onLabelTypeChange(LabelType.Length, true);
17531
+ this.lengthMeasureUnit = data.olGeometry.get('measureUnit');
17532
+ }
17533
+ else if (data.olGeometry.get('labelType') === LabelType.Area) {
17534
+ this.onLabelTypeChange(LabelType.Predefined);
17535
+ this.onLabelTypeChange(LabelType.Area, true);
17536
+ this.areaMeasureUnit = data.olGeometry.get('measureUnit');
17537
+ }
17538
+ else if (data.olGeometry.get('labelType')?.length === 2) {
17539
+ this.onLabelTypeChange(LabelType.Predefined);
17540
+ this.onLabelTypeChange(LabelType.Length, true);
17541
+ this.onLabelTypeChange(LabelType.Area, true);
17542
+ this.lengthMeasureUnit = data.olGeometry.get('measureUnit')[0];
17543
+ this.areaMeasureUnit = data.olGeometry.get('measureUnit')[1];
17544
+ }
17545
+ this.buildArrayType();
17546
+ }
17547
+ /**
17548
+ * HTML Interactions
17549
+ */
17182
17550
  cancelDrawing() {
17183
17551
  this.dialogRef.close();
17184
17552
  }
17185
- confirm(labelString) {
17553
+ confirm(input) {
17186
17554
  this.confirmFlag = true;
17187
- this.dialogRef.close(labelString);
17555
+ if (this.labelFlag === LabelType.Predefined) {
17556
+ this.dialogRef.close();
17557
+ }
17558
+ else if (this.labelFlag === LabelType.Custom) {
17559
+ this.dialogRef.close({
17560
+ label: input
17561
+ });
17562
+ }
17563
+ else if (this.labelFlag === LabelType.Coordinates) {
17564
+ this.dialogRef.close({
17565
+ label: this.currentCoordinates,
17566
+ measureUnit: this.coordinatesMeasureUnit
17567
+ });
17568
+ }
17569
+ else if (this.olGeometryType === GeometryType.Polygon) {
17570
+ if (this.polygonCheck === 2) {
17571
+ this.labelFlag = [LabelType.Length, LabelType.Area];
17572
+ this.dialogRef.close({
17573
+ label: 'P: ' + this.currentLength + ' ' + MeasureLengthUnitAbbreviation[MeasureLengthUnit.Meters] + '\n'
17574
+ + this.languageService.translate.instant('igo.geo.draw.labelType.A') + this.currentArea + ' ' +
17575
+ MeasureAreaUnitAbbreviation[MeasureAreaUnit.SquareMeters], measureUnit: [this.lengthMeasureUnit, this.areaMeasureUnit]
17576
+ });
17577
+ }
17578
+ else {
17579
+ this.labelFlag === LabelType.Length ?
17580
+ this.dialogRef.close({
17581
+ label: 'P: ' + this.currentLength + ' ' + MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
17582
+ measureUnit: this.lengthMeasureUnit
17583
+ }) :
17584
+ this.dialogRef.close({
17585
+ label: this.currentArea + ' ' + MeasureAreaUnitAbbreviation[this.areaMeasureUnit],
17586
+ measureUnit: this.areaMeasureUnit
17587
+ });
17588
+ }
17589
+ }
17590
+ else if (this.labelFlag === LabelType.Length) {
17591
+ if (this.olGeometryType === GeometryType.Circle) {
17592
+ this.dialogRef.close({
17593
+ label: 'R: ' + this.currentLength + ' ' + MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
17594
+ measureUnit: this.lengthMeasureUnit
17595
+ });
17596
+ }
17597
+ else if (this.olGeometryType === GeometryType.LineString) {
17598
+ this.dialogRef.close({
17599
+ label: this.currentLength + ' ' + MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
17600
+ measureUnit: this.lengthMeasureUnit
17601
+ });
17602
+ }
17603
+ }
17604
+ else if (this.labelFlag === LabelType.Area) {
17605
+ this.dialogRef.close({
17606
+ label: this.currentArea + ' ' + MeasureAreaUnitAbbreviation[this.areaMeasureUnit],
17607
+ measureUnit: this.areaMeasureUnit
17608
+ });
17609
+ }
17610
+ }
17611
+ onLabelTypeChange(labelType, checked) {
17612
+ if (labelType !== LabelType.Predefined &&
17613
+ labelType !== LabelType.Custom &&
17614
+ this.olGeometryType === GeometryType.Polygon) {
17615
+ this.arrayBuiltInType.find(type => type.value === labelType) ?
17616
+ this.arrayBuiltInType.find(type => type.value === labelType).checked = checked : this.labelFlag = undefined;
17617
+ checked ? this.labelFlag = labelType : this.labelFlag = this.arrayBuiltInType.find(type => type.checked)?.value;
17618
+ }
17619
+ else {
17620
+ this.labelFlag = labelType;
17621
+ }
17622
+ if (labelType === LabelType.Predefined) {
17623
+ if (this.olGeometryType === GeometryType.Point) {
17624
+ this.labelFlag = LabelType.Coordinates;
17625
+ this.currentCoordinates = this.coordinatesInDD;
17626
+ this.coordinatesMeasureUnit = CoordinatesUnit.DecimalDegree;
17627
+ }
17628
+ else if (this.olGeometryType === GeometryType.LineString) {
17629
+ this.labelFlag = LabelType.Length;
17630
+ this.currentLength = this.lengthInMeters;
17631
+ this.lengthMeasureUnit = MeasureLengthUnit.Meters;
17632
+ }
17633
+ }
17634
+ else if (labelType === LabelType.Area) {
17635
+ this.currentArea = this.areaInMetersSquare;
17636
+ this.areaMeasureUnit = MeasureAreaUnit.SquareMeters;
17637
+ }
17638
+ else if (labelType === LabelType.Length) {
17639
+ this.currentLength = this.lengthInMeters;
17640
+ this.lengthMeasureUnit = MeasureLengthUnit.Meters;
17641
+ }
17642
+ else if (this.labelFlag === LabelType.Coordinates) {
17643
+ this.currentCoordinates = this.coordinatesInDD;
17644
+ this.coordinatesMeasureUnit = CoordinatesUnit.DecimalDegree;
17645
+ }
17646
+ const labeltypes = [this.labelType.Length, this.labelType.Area];
17647
+ if (this.olGeometryType === GeometryType.Polygon &&
17648
+ labeltypes.includes(labelType)) {
17649
+ checked ? this.polygonCheck += 1 : this.polygonCheck -= 1;
17650
+ ;
17651
+ }
17652
+ else {
17653
+ this.polygonCheck = 0;
17654
+ }
17655
+ }
17656
+ onChangeLengthUnit(lengthUnit) {
17657
+ this.lengthMeasureUnit = lengthUnit;
17658
+ this.currentLength = metersToUnit(Number(this.lengthInMeters), lengthUnit).toFixed(2);
17659
+ }
17660
+ onChangeAreaUnit(areaUnit) {
17661
+ this.areaMeasureUnit = areaUnit;
17662
+ this.currentArea = squareMetersToUnit(Number(this.areaInMetersSquare), areaUnit).toFixed(2);
17663
+ }
17664
+ onChangeCoordinateUnit(coordinatesUnit) {
17665
+ this.coordinatesMeasureUnit = coordinatesUnit;
17666
+ let coordinates = DDtoDMS(this.longlatDD, coordinatesUnit);
17667
+ this.currentCoordinates = '(' + coordinates[1] + ', ' + coordinates[0] + ')';
17668
+ }
17669
+ buildArrayType() {
17670
+ for (const labelType of Object.values(LabelType)) {
17671
+ if (labelType !== LabelType.Custom && labelType !== LabelType.Predefined) {
17672
+ this.arrayBuiltInType.push({
17673
+ value: labelType,
17674
+ checked: this.selectOptions(labelType) ||
17675
+ this.labelFlag === labelType ||
17676
+ (this.polygonCheck === 2 && labelType !== LabelType.Coordinates)
17677
+ });
17678
+ }
17679
+ }
17680
+ }
17681
+ noLabelButton() {
17682
+ if (this.labelFlag === LabelType.Predefined || (this.labelFlag === LabelType.Custom && this.labelLength === 0)) {
17683
+ return this.languageService.translate.instant('igo.geo.draw.noLabel');
17684
+ }
17685
+ return 'OK';
17686
+ }
17687
+ get customOrPredefined() {
17688
+ if (this.labelFlag === LabelType.Custom) {
17689
+ return LabelType.Custom;
17690
+ }
17691
+ return LabelType.Predefined;
17692
+ }
17693
+ optionAvailable(currentOption) {
17694
+ switch (this.olGeometryType) {
17695
+ case GeometryType.Point:
17696
+ if (currentOption === LabelType.Coordinates) {
17697
+ return false;
17698
+ }
17699
+ return true;
17700
+ case GeometryType.LineString:
17701
+ if (currentOption === LabelType.Length) {
17702
+ return false;
17703
+ }
17704
+ return true;
17705
+ case GeometryType.Polygon:
17706
+ if (currentOption === LabelType.Coordinates) {
17707
+ return true;
17708
+ }
17709
+ return false;
17710
+ default:
17711
+ return false;
17712
+ }
17713
+ }
17714
+ get allLengthUnits() {
17715
+ return Object.values(MeasureLengthUnit);
17716
+ }
17717
+ getLengthUnitEnum(lengthUnit) {
17718
+ return MeasureLengthUnitAbbreviation[lengthUnit];
17719
+ }
17720
+ get allAreaUnits() {
17721
+ return Object.values(MeasureAreaUnit);
17722
+ }
17723
+ get allCoordinatesUnits() {
17724
+ return Object.values(CoordinatesUnit);
17725
+ }
17726
+ getAreaUnitEnum(areaUnit) {
17727
+ return MeasureAreaUnitAbbreviation[areaUnit];
17728
+ }
17729
+ getRadius(olGeometry) {
17730
+ const length = getLength(olGeometry);
17731
+ return Number(length / (2 * Math.PI));
17732
+ }
17733
+ get lengthLabelT() {
17734
+ if (this.olGeometryType === GeometryType.Polygon) {
17735
+ return this.languageService.translate.instant('igo.geo.measure.perimeter');
17736
+ }
17737
+ if (this.olGeometryType === GeometryType.Circle) {
17738
+ return this.languageService.translate.instant('igo.geo.search.coordinates.radius');
17739
+ }
17740
+ return this.languageService.translate.instant('igo.geo.draw.labelType.Length');
17741
+ }
17742
+ getLabelLength(event) {
17743
+ this.labelLength = event.length;
17744
+ }
17745
+ selectOptions(option) {
17746
+ if (this.olGeometryType === GeometryType.Point) {
17747
+ return option === LabelType.Coordinates;
17748
+ }
17749
+ else if (this.olGeometryType === GeometryType.LineString) {
17750
+ return option === LabelType.Length;
17751
+ }
17752
+ }
17753
+ getProperLengthLabel(option) {
17754
+ if (option === LabelType.Length) {
17755
+ if (this.olGeometryType === GeometryType.Polygon) {
17756
+ return this.languageService.translate.instant('igo.geo.measure.perimeter');
17757
+ }
17758
+ if (this.olGeometryType === GeometryType.Circle) {
17759
+ return this.languageService.translate.instant('igo.geo.search.coordinates.radius');
17760
+ }
17761
+ return this.languageService.translate.instant('igo.geo.draw.labelType.Length');
17762
+ }
17763
+ return this.languageService.translate.instant('igo.geo.draw.labelType.' + option);
17188
17764
  }
17189
17765
  }
17190
- DrawPopupComponent.ɵfac = function DrawPopupComponent_Factory(t) { return new (t || DrawPopupComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
17191
- 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) { if (rf & 1) {
17192
- const _r1 = i0.ɵɵgetCurrentView();
17193
- i0.ɵɵelementStart(0, "div", 0)(1, "p", 1);
17766
+ DrawPopupComponent.ɵfac = function DrawPopupComponent_Factory(t) { return new (t || DrawPopupComponent)(i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
17767
+ 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) { if (rf & 1) {
17768
+ i0.ɵɵelementStart(0, "div")(1, "h2", 0);
17194
17769
  i0.ɵɵtext(2);
17195
17770
  i0.ɵɵpipe(3, "translate");
17196
- i0.ɵɵelementEnd();
17197
- i0.ɵɵelementStart(4, "mat-form-field", 2);
17198
- i0.ɵɵelement(5, "input", 3, 4);
17199
- i0.ɵɵpipe(7, "translate");
17200
17771
  i0.ɵɵelementEnd()();
17201
- i0.ɵɵelementStart(8, "div", 5)(9, "button", 6);
17202
- i0.ɵɵlistener("click", function DrawPopupComponent_Template_button_click_9_listener() { return ctx.cancelDrawing(); });
17772
+ i0.ɵɵelementStart(4, "div", 1)(5, "mat-button-toggle-group", 2);
17773
+ i0.ɵɵlistener("change", function DrawPopupComponent_Template_mat_button_toggle_group_change_5_listener($event) { return ctx.onLabelTypeChange($event.value); });
17774
+ i0.ɵɵelementStart(6, "mat-button-toggle", 3);
17775
+ i0.ɵɵtext(7);
17776
+ i0.ɵɵpipe(8, "translate");
17777
+ i0.ɵɵelementEnd();
17778
+ i0.ɵɵelementStart(9, "mat-button-toggle", 3);
17203
17779
  i0.ɵɵtext(10);
17204
17780
  i0.ɵɵpipe(11, "translate");
17205
- i0.ɵɵelementEnd();
17206
- i0.ɵɵelementStart(12, "button", 7);
17207
- 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)); });
17208
- i0.ɵɵtext(13, "OK ");
17209
- i0.ɵɵelementEnd()();
17781
+ i0.ɵɵelementEnd()()();
17782
+ i0.ɵɵtemplate(12, DrawPopupComponent_div_12_Template, 16, 12, "div", 4);
17783
+ i0.ɵɵtemplate(13, DrawPopupComponent_div_13_Template, 15, 11, "div", 4);
17210
17784
  } if (rf & 2) {
17211
17785
  i0.ɵɵadvance(2);
17212
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.draw.dialogInstruction"));
17786
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 8, "igo.geo.draw.popupTitle"), " ");
17213
17787
  i0.ɵɵadvance(3);
17214
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(7, 6, "igo.geo.draw.dialogTitle"));
17215
- i0.ɵɵpropertyInterpolate("value", ctx.data.currentLabel);
17216
- i0.ɵɵadvance(5);
17217
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(11, 8, "igo.geo.draw.cancel"), " ");
17218
- } }, dependencies: [i3.MatButton, i13.MatFormField, i14.MatInput, i1.MatDialogContent, i1.MatDialogActions, i7.TranslatePipe] });
17788
+ i0.ɵɵproperty("value", ctx.customOrPredefined);
17789
+ i0.ɵɵadvance(1);
17790
+ i0.ɵɵproperty("value", ctx.labelType.Custom);
17791
+ i0.ɵɵadvance(1);
17792
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 10, "igo.geo.draw.labelType.custom"), " ");
17793
+ i0.ɵɵadvance(2);
17794
+ i0.ɵɵproperty("value", ctx.labelType.Predefined);
17795
+ i0.ɵɵadvance(1);
17796
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 12, "igo.geo.draw.labelType.predefined"), " ");
17797
+ i0.ɵɵadvance(2);
17798
+ i0.ɵɵproperty("ngIf", ctx.labelFlag !== ctx.labelType.Custom);
17799
+ i0.ɵɵadvance(1);
17800
+ i0.ɵɵproperty("ngIf", ctx.labelFlag === ctx.labelType.Custom);
17801
+ } }, 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}"] });
17219
17802
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawPopupComponent, [{
17220
17803
  type: Component,
17221
- 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" }]
17222
- }], function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
17804
+ 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"] }]
17805
+ }], function () { return [{ type: i2$1.LanguageService }, { type: i1.MatDialogRef }, { type: undefined, decorators: [{
17223
17806
  type: Inject,
17224
17807
  args: [MAT_DIALOG_DATA]
17225
17808
  }] }]; }, { confirmFlag: [{
17226
17809
  type: Input
17810
+ }], labelFlag: [{
17811
+ type: Input
17812
+ }], coordinatesMeasureUnit: [{
17813
+ type: Input
17814
+ }], lengthMeasureUnit: [{
17815
+ type: Input
17816
+ }], areaMeasureUnit: [{
17817
+ type: Input
17227
17818
  }] }); })();
17228
17819
 
17229
17820
  class DrawShorcutsComponent {
@@ -17317,107 +17908,151 @@ DrawLayerPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dra
17317
17908
  }] }); })();
17318
17909
 
17319
17910
  const _c0$c = ["selectedLayer"];
17320
- function DrawComponent_mat_option_30_Template(rf, ctx) { if (rf & 1) {
17911
+ function DrawComponent_mat_slide_toggle_22_Template(rf, ctx) { if (rf & 1) {
17912
+ const _r10 = i0.ɵɵgetCurrentView();
17913
+ i0.ɵɵelementStart(0, "mat-slide-toggle", 5);
17914
+ 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)); });
17915
+ i0.ɵɵtext(1);
17916
+ i0.ɵɵpipe(2, "translate");
17917
+ i0.ɵɵelementEnd();
17918
+ } if (rf & 2) {
17919
+ const ctx_r0 = i0.ɵɵnextContext();
17920
+ i0.ɵɵproperty("checked", ctx_r0.freehandMode)("labelPosition", "before");
17921
+ i0.ɵɵadvance(1);
17922
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 3, "igo.geo.draw.freehandMode"), " ");
17923
+ } }
17924
+ function DrawComponent_div_23_mat_option_7_Template(rf, ctx) { if (rf & 1) {
17321
17925
  i0.ɵɵelementStart(0, "mat-option", 2);
17322
17926
  i0.ɵɵtext(1);
17927
+ i0.ɵɵpipe(2, "translate");
17323
17928
  i0.ɵɵelementEnd();
17324
17929
  } if (rf & 2) {
17325
- const layer_r7 = ctx.$implicit;
17326
- i0.ɵɵproperty("value", layer_r7);
17930
+ const measureUnit_r12 = ctx.$implicit;
17931
+ i0.ɵɵproperty("value", measureUnit_r12);
17327
17932
  i0.ɵɵadvance(1);
17328
- i0.ɵɵtextInterpolate1(" ", layer_r7.title, " ");
17933
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.measure." + measureUnit_r12), " ");
17329
17934
  } }
17330
- function DrawComponent_button_34_Template(rf, ctx) { if (rf & 1) {
17331
- const _r9 = i0.ɵɵgetCurrentView();
17332
- i0.ɵɵelementStart(0, "button", 20);
17333
- 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); });
17935
+ function DrawComponent_div_23_Template(rf, ctx) { if (rf & 1) {
17936
+ const _r14 = i0.ɵɵgetCurrentView();
17937
+ i0.ɵɵelementStart(0, "div", 22)(1, "form", 23)(2, "mat-form-field", 24);
17938
+ i0.ɵɵelement(3, "input", 25);
17939
+ i0.ɵɵpipe(4, "translate");
17940
+ i0.ɵɵelementEnd()();
17941
+ i0.ɵɵelementStart(5, "mat-form-field", 26)(6, "mat-select", 9);
17942
+ 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)); });
17943
+ i0.ɵɵtemplate(7, DrawComponent_div_23_mat_option_7_Template, 3, 4, "mat-option", 11);
17944
+ i0.ɵɵelementEnd()()();
17945
+ } if (rf & 2) {
17946
+ const ctx_r1 = i0.ɵɵnextContext();
17947
+ i0.ɵɵadvance(3);
17948
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 5, "igo.geo.spatialFilter.radius"));
17949
+ i0.ɵɵproperty("formControl", ctx_r1.radiusFormControl)("readonly", ctx_r1.freehandMode);
17950
+ i0.ɵɵadvance(3);
17951
+ i0.ɵɵproperty("value", ctx_r1.measureUnit);
17952
+ i0.ɵɵadvance(1);
17953
+ i0.ɵɵproperty("ngForOf", ctx_r1.measureUnits);
17954
+ } }
17955
+ function DrawComponent_mat_option_32_Template(rf, ctx) { if (rf & 1) {
17956
+ i0.ɵɵelementStart(0, "mat-option", 2);
17957
+ i0.ɵɵtext(1);
17958
+ i0.ɵɵelementEnd();
17959
+ } if (rf & 2) {
17960
+ const layer_r15 = ctx.$implicit;
17961
+ i0.ɵɵproperty("value", layer_r15);
17962
+ i0.ɵɵadvance(1);
17963
+ i0.ɵɵtextInterpolate1(" ", layer_r15.title, " ");
17964
+ } }
17965
+ function DrawComponent_button_36_Template(rf, ctx) { if (rf & 1) {
17966
+ const _r17 = i0.ɵɵgetCurrentView();
17967
+ i0.ɵɵelementStart(0, "button", 27);
17968
+ 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); });
17334
17969
  i0.ɵɵpipe(1, "translate");
17335
17970
  i0.ɵɵpipe(2, "translate");
17336
- i0.ɵɵelement(3, "mat-icon", 21);
17971
+ i0.ɵɵelement(3, "mat-icon", 28);
17337
17972
  i0.ɵɵelementEnd();
17338
17973
  } if (rf & 2) {
17339
- const ctx_r2 = i0.ɵɵnextContext();
17340
- 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"));
17974
+ const ctx_r4 = i0.ɵɵnextContext();
17975
+ 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"));
17341
17976
  i0.ɵɵadvance(3);
17342
- i0.ɵɵproperty("svgIcon", ctx_r2.activeDrawingLayer.visible ? "eye" : "eye-off");
17977
+ i0.ɵɵproperty("svgIcon", ctx_r4.activeDrawingLayer.visible ? "eye" : "eye-off");
17343
17978
  } }
17344
- function DrawComponent_button_37_Template(rf, ctx) { if (rf & 1) {
17345
- const _r11 = i0.ɵɵgetCurrentView();
17346
- i0.ɵɵelementStart(0, "button", 22);
17347
- 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()); });
17979
+ function DrawComponent_button_39_Template(rf, ctx) { if (rf & 1) {
17980
+ const _r19 = i0.ɵɵgetCurrentView();
17981
+ i0.ɵɵelementStart(0, "button", 29);
17982
+ 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()); });
17348
17983
  i0.ɵɵpipe(1, "translate");
17349
17984
  i0.ɵɵpipe(2, "async");
17350
- i0.ɵɵelement(3, "mat-icon", 23);
17985
+ i0.ɵɵelement(3, "mat-icon", 30);
17351
17986
  i0.ɵɵelementEnd();
17352
17987
  } if (rf & 2) {
17353
- const ctx_r3 = i0.ɵɵnextContext();
17354
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 2, "igo.geo.draw.delete"))("disabled", i0.ɵɵpipeBind1(2, 4, ctx_r3.selectedFeatures$).length === 0);
17988
+ const ctx_r5 = i0.ɵɵnextContext();
17989
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 2, "igo.geo.draw.delete"))("disabled", i0.ɵɵpipeBind1(2, 4, ctx_r5.selectedFeatures$).length === 0);
17355
17990
  } }
17356
- function DrawComponent_mat_form_field_42_div_6_Template(rf, ctx) { if (rf & 1) {
17357
- i0.ɵɵelementStart(0, "div", 27);
17358
- i0.ɵɵelement(1, "img", 28);
17991
+ function DrawComponent_mat_form_field_44_div_6_Template(rf, ctx) { if (rf & 1) {
17992
+ i0.ɵɵelementStart(0, "div", 34);
17993
+ i0.ɵɵelement(1, "img", 35);
17359
17994
  i0.ɵɵelementEnd();
17360
17995
  } if (rf & 2) {
17361
- const ctx_r12 = i0.ɵɵnextContext(2);
17996
+ const ctx_r20 = i0.ɵɵnextContext(2);
17362
17997
  i0.ɵɵadvance(1);
17363
- i0.ɵɵpropertyInterpolate("src", ctx_r12.icon, i0.ɵɵsanitizeUrl);
17998
+ i0.ɵɵpropertyInterpolate("src", ctx_r20.icon, i0.ɵɵsanitizeUrl);
17364
17999
  } }
17365
- function DrawComponent_mat_form_field_42_mat_option_10_Template(rf, ctx) { if (rf & 1) {
17366
- const _r16 = i0.ɵɵgetCurrentView();
17367
- i0.ɵɵelementStart(0, "mat-option", 29);
17368
- 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)); });
17369
- i0.ɵɵelementStart(1, "div", 27);
17370
- i0.ɵɵelement(2, "img", 28);
18000
+ function DrawComponent_mat_form_field_44_mat_option_10_Template(rf, ctx) { if (rf & 1) {
18001
+ const _r24 = i0.ɵɵgetCurrentView();
18002
+ i0.ɵɵelementStart(0, "mat-option", 36);
18003
+ 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)); });
18004
+ i0.ɵɵelementStart(1, "div", 34);
18005
+ i0.ɵɵelement(2, "img", 35);
17371
18006
  i0.ɵɵelementEnd()();
17372
18007
  } if (rf & 2) {
17373
- const icon_html_r14 = ctx.$implicit;
17374
- i0.ɵɵproperty("value", icon_html_r14);
18008
+ const icon_html_r22 = ctx.$implicit;
18009
+ i0.ɵɵproperty("value", icon_html_r22);
17375
18010
  i0.ɵɵadvance(2);
17376
- i0.ɵɵpropertyInterpolate("src", icon_html_r14, i0.ɵɵsanitizeUrl);
18011
+ i0.ɵɵpropertyInterpolate("src", icon_html_r22, i0.ɵɵsanitizeUrl);
17377
18012
  } }
17378
- function DrawComponent_mat_form_field_42_Template(rf, ctx) { if (rf & 1) {
17379
- const _r18 = i0.ɵɵgetCurrentView();
18013
+ function DrawComponent_mat_form_field_44_Template(rf, ctx) { if (rf & 1) {
18014
+ const _r26 = i0.ɵɵgetCurrentView();
17380
18015
  i0.ɵɵelementStart(0, "mat-form-field")(1, "mat-label");
17381
18016
  i0.ɵɵtext(2);
17382
18017
  i0.ɵɵpipe(3, "translate");
17383
18018
  i0.ɵɵelementEnd();
17384
18019
  i0.ɵɵelementStart(4, "mat-select")(5, "mat-select-trigger");
17385
- i0.ɵɵtemplate(6, DrawComponent_mat_form_field_42_div_6_Template, 2, 1, "div", 24);
18020
+ i0.ɵɵtemplate(6, DrawComponent_mat_form_field_44_div_6_Template, 2, 1, "div", 31);
17386
18021
  i0.ɵɵelementEnd();
17387
- i0.ɵɵelementStart(7, "mat-option", 25);
17388
- 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()); });
18022
+ i0.ɵɵelementStart(7, "mat-option", 32);
18023
+ 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()); });
17389
18024
  i0.ɵɵtext(8);
17390
18025
  i0.ɵɵpipe(9, "translate");
17391
18026
  i0.ɵɵelementEnd();
17392
- i0.ɵɵtemplate(10, DrawComponent_mat_form_field_42_mat_option_10_Template, 3, 2, "mat-option", 26);
18027
+ i0.ɵɵtemplate(10, DrawComponent_mat_form_field_44_mat_option_10_Template, 3, 2, "mat-option", 33);
17393
18028
  i0.ɵɵelementEnd()();
17394
18029
  } if (rf & 2) {
17395
- const ctx_r5 = i0.ɵɵnextContext();
18030
+ const ctx_r7 = i0.ɵɵnextContext();
17396
18031
  i0.ɵɵadvance(2);
17397
18032
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.draw.icon"));
17398
18033
  i0.ɵɵadvance(4);
17399
- i0.ɵɵproperty("ngIf", ctx_r5.icon);
18034
+ i0.ɵɵproperty("ngIf", ctx_r7.icon);
17400
18035
  i0.ɵɵadvance(2);
17401
18036
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 6, "igo.geo.draw.noIcon"));
17402
18037
  i0.ɵɵadvance(2);
17403
- i0.ɵɵproperty("ngForOf", ctx_r5.icons);
18038
+ i0.ɵɵproperty("ngForOf", ctx_r7.icons);
17404
18039
  } }
17405
- function DrawComponent_button_46_Template(rf, ctx) { if (rf & 1) {
17406
- const _r20 = i0.ɵɵgetCurrentView();
17407
- i0.ɵɵelementStart(0, "button", 30);
17408
- 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()); });
18040
+ function DrawComponent_button_48_Template(rf, ctx) { if (rf & 1) {
18041
+ const _r28 = i0.ɵɵgetCurrentView();
18042
+ i0.ɵɵelementStart(0, "button", 37);
18043
+ 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()); });
17409
18044
  i0.ɵɵpipe(1, "translate");
17410
18045
  i0.ɵɵtext(2);
17411
18046
  i0.ɵɵpipe(3, "translate");
17412
- i0.ɵɵelement(4, "mat-icon", 31);
18047
+ i0.ɵɵelement(4, "mat-icon", 38);
17413
18048
  i0.ɵɵelementEnd();
17414
18049
  } if (rf & 2) {
17415
- const ctx_r6 = i0.ɵɵnextContext();
18050
+ const ctx_r8 = i0.ɵɵnextContext();
17416
18051
  i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 3, "igo.geo.layer.style.styleModalTooltip"));
17417
18052
  i0.ɵɵadvance(2);
17418
18053
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 5, "igo.geo.layer.style.styleModal"), " ");
17419
18054
  i0.ɵɵadvance(2);
17420
- i0.ɵɵproperty("matBadge", ctx_r6.selectedFeatures$.value.length);
18055
+ i0.ɵɵproperty("matBadge", ctx_r8.selectedFeatures$.value.length);
17421
18056
  } }
17422
18057
  class DrawComponent {
17423
18058
  constructor(languageService, formBuilder, drawStyleService, dialog, drawIconService) {
@@ -17441,10 +18076,24 @@ class DrawComponent {
17441
18076
  {
17442
18077
  name: 'Drawing',
17443
18078
  title: this.languageService.translate.instant('igo.geo.draw.labels'),
17444
- tooltip: this.languageService.translate.instant('igo.geo.draw.changeLabel'),
17445
18079
  valueAccessor: (feature) => {
17446
18080
  return feature.properties.draw;
17447
18081
  }
18082
+ },
18083
+ {
18084
+ name: 'Edition',
18085
+ title: '',
18086
+ sort: false,
18087
+ valueAccessor: (feature) => {
18088
+ return [{
18089
+ editMode: false,
18090
+ icon: 'pencil',
18091
+ color: 'primary',
18092
+ click: () => { this.editLabelDrawing(feature); },
18093
+ style: 'mat-icon-button'
18094
+ }];
18095
+ },
18096
+ renderer: EntityTableColumnRenderer.ButtonGroup,
17448
18097
  }
17449
18098
  ]
17450
18099
  };
@@ -17460,8 +18109,14 @@ class DrawComponent {
17460
18109
  this.selectedFeatures$ = new BehaviorSubject([]);
17461
18110
  this.drawControlIsDisabled = true;
17462
18111
  this.drawControlIsActive = false;
18112
+ this.freehandMode = false;
17463
18113
  this.subscriptions$$ = [];
17464
18114
  this.position = 'bottom';
18115
+ this.radiusFormControl = new UntypedFormControl(1000);
18116
+ this.measureUnit = MeasureLengthUnit.Meters;
18117
+ this.radiusFormControlChange$$ = new Subscription();
18118
+ this.predefinedRadius$ = new BehaviorSubject(undefined);
18119
+ this.radiusDrawEnd$ = new BehaviorSubject(undefined);
17465
18120
  this.isCreatingNewLayer = false;
17466
18121
  this.currGeometryType = this.geometryType.Point;
17467
18122
  this.buildForm();
@@ -17492,6 +18147,13 @@ class DrawComponent {
17492
18147
  set activeDrawingLayer(value) {
17493
18148
  this._activeDrawingLayer = value;
17494
18149
  }
18150
+ /**
18151
+ * Available measure units for the measure type given
18152
+ * @internal
18153
+ */
18154
+ get measureUnits() {
18155
+ return [MeasureLengthUnit.Meters, MeasureLengthUnit.Kilometers];
18156
+ }
17495
18157
  // Initialize the store that will contain the entities and create the Draw control
17496
18158
  ngOnInit() {
17497
18159
  if (!this.stores.length) {
@@ -17544,6 +18206,11 @@ class DrawComponent {
17544
18206
  });
17545
18207
  this.onLayerChange(this.activeDrawingLayer);
17546
18208
  }
18209
+ this.radiusFormControlChange$$ = this.radiusFormControl.valueChanges.subscribe(value => {
18210
+ if (this.activeDrawControl.ispredefinedRadius$.getValue()) {
18211
+ this.changeRadius(value);
18212
+ }
18213
+ });
17547
18214
  }
17548
18215
  /**
17549
18216
  * Remove the drawing layer and the interactions
@@ -17554,6 +18221,7 @@ class DrawComponent {
17554
18221
  this.activeStore.state.updateAll({ selected: false });
17555
18222
  this.deactivateDrawControl();
17556
18223
  this.subscriptions$$.map((s) => s.unsubscribe());
18224
+ this.radiusFormControlChange$$.unsubscribe();
17557
18225
  }
17558
18226
  /**
17559
18227
  * Create a Draw Control
@@ -17627,30 +18295,21 @@ class DrawComponent {
17627
18295
  // open the dialog box used to enter label
17628
18296
  const dialogRef = this.dialog.open(DrawPopupComponent, {
17629
18297
  disableClose: false,
17630
- data: { currentLabel: olGeometry.get('draw') }
18298
+ data: { olGeometry: olGeometry, map: this.map }
17631
18299
  });
17632
18300
  // when dialog box is closed, get label and set it to geometry
17633
- dialogRef.afterClosed().subscribe((label) => {
18301
+ dialogRef.afterClosed().subscribe((result) => {
17634
18302
  // checks if the user clicked ok
17635
18303
  if (dialogRef.componentInstance.confirmFlag) {
17636
- this.updateLabelOfOlGeometry(olGeometry, label);
17637
- if (!olGeometry.values_.fontStyle) {
17638
- this.updateFontSizeAndStyle(olGeometry, '20', FontType.Arial);
17639
- }
17640
- if (!olGeometry.values_.drawingStyle) {
18304
+ this.updateLabelOfOlGeometry(olGeometry, result.label);
18305
+ this.updateLabelType(olGeometry, dialogRef.componentInstance.labelFlag);
18306
+ this.updateMeasureUnit(olGeometry, result.measureUnit);
18307
+ if (!(olGeometry instanceof OlFeature)) {
18308
+ this.updateFontSizeAndStyle(olGeometry, '15', FontType.Arial);
17641
18309
  this.updateFillAndStrokeColor(olGeometry, 'rgba(255,255,255,0.4)', 'rgba(143,7,7,1)');
18310
+ this.updateOffset(olGeometry, 0, (olGeometry instanceof OlPoint) ? -15 : 0);
17642
18311
  }
17643
- if (!(olGeometry.values_.offsetX || olGeometry.values_.offsetY)) {
17644
- this.updateOffset(olGeometry, 0, olGeometry instanceof OlPoint ? -15 : 0);
17645
- }
17646
- // if event was fired at draw end
17647
- if (isDrawEnd) {
17648
- this.onDrawEnd(olGeometry);
17649
- // if event was fired at select
17650
- }
17651
- else {
17652
- this.onSelectDraw(olGeometry, label);
17653
- }
18312
+ isDrawEnd ? this.onDrawEnd(olGeometry) : this.onSelectDraw(olGeometry, result.label, [dialogRef.componentInstance.labelFlag, result.measureUnit]);
17654
18313
  this.updateHeightTable();
17655
18314
  }
17656
18315
  // deletes the feature
@@ -17682,7 +18341,55 @@ class DrawComponent {
17682
18341
  const entityId = entity.properties.id;
17683
18342
  const olGeometryId = olGeometry.ol_uid;
17684
18343
  if (entityId === olGeometryId) {
17685
- this.updateLabelOfOlGeometry(olGeometry, entity.properties.draw);
18344
+ if (entity.properties.labelType === LabelType.Coordinates) {
18345
+ let longLat = DDtoDMS([entity.properties.longitude, entity.properties.latitude], entity.properties.measureUnit);
18346
+ this.updateLabelOfOlGeometry(olGeometry, '(' + longLat[1] + ', ' + longLat[0] + ')');
18347
+ }
18348
+ else if (entity.properties.labelType === LabelType.Length) {
18349
+ if (olGeometry instanceof OlCircle) {
18350
+ let circularPolygon = fromCircle(olGeometry, 10000);
18351
+ const radius = metersToUnit(this.getRadius(circularPolygon), entity.properties.measureUnit);
18352
+ const unit = MeasureLengthUnitAbbreviation[entity.properties.measureUnit];
18353
+ const radiusLabel = 'R: ' + radius.toFixed(2).toString() + ' ' + unit;
18354
+ this.updateLabelOfOlGeometry(olGeometry, radiusLabel);
18355
+ }
18356
+ else {
18357
+ let olGeometryLength = measureOlGeometryLength(olGeometry, this.map.ol.getView().getProjection().getCode());
18358
+ let measureUnit;
18359
+ const temp = entity.properties.measureUnit;
18360
+ measureUnit = MeasureLengthUnitAbbreviation[entity.properties.measureUnit];
18361
+ olGeometryLength = metersToUnit(olGeometryLength, temp);
18362
+ let lengthLabel = olGeometry instanceof OlPolygon ?
18363
+ 'P: ' + olGeometryLength.toFixed(2).toString() + ' ' + measureUnit
18364
+ : olGeometryLength.toFixed(2).toString() + ' ' + measureUnit;
18365
+ this.updateLabelOfOlGeometry(olGeometry, lengthLabel);
18366
+ }
18367
+ }
18368
+ else if (entity.properties.labelType === LabelType.Area) {
18369
+ if (olGeometry instanceof OlCircle) {
18370
+ let circularPolygon = fromCircle(olGeometry, 10000);
18371
+ let circleArea = measureOlGeometryArea(circularPolygon, this.map.ol.getView().getProjection().getCode());
18372
+ const unit = MeasureAreaUnitAbbreviation[entity.properties.measureUnit];
18373
+ const temp = entity.properties.measureUnit;
18374
+ circleArea = squareMetersToUnit(circleArea, temp);
18375
+ const areaLabel = circleArea.toFixed(2).toString() + ' ' + unit;
18376
+ this.updateLabelOfOlGeometry(olGeometry, areaLabel);
18377
+ }
18378
+ else {
18379
+ let olGeometryArea = measureOlGeometryArea(olGeometry, this.map.ol.getView().getProjection().getCode());
18380
+ let measureUnit;
18381
+ const temp = entity.properties.measureUnit;
18382
+ measureUnit = MeasureAreaUnitAbbreviation[entity.properties.measureUnit];
18383
+ olGeometryArea = squareMetersToUnit(olGeometryArea, temp);
18384
+ const lengthLabel = olGeometryArea.toFixed(2).toString() + ' ' + measureUnit;
18385
+ this.updateLabelOfOlGeometry(olGeometry, lengthLabel);
18386
+ }
18387
+ }
18388
+ else {
18389
+ this.updateLabelOfOlGeometry(olGeometry, entity.properties.draw);
18390
+ }
18391
+ this.updateLabelType(olGeometry, entity.properties.labelType);
18392
+ this.updateMeasureUnit(olGeometry, entity.properties.measureUnit);
17686
18393
  this.updateFontSizeAndStyle(olGeometry, entity.properties.fontStyle.split(' ')[0].replace('px', ''), entity.properties.fontStyle.substring(entity.properties.fontStyle.indexOf(' ') + 1));
17687
18394
  this.updateFillAndStrokeColor(olGeometry, entity.properties.drawingStyle.fill, entity.properties.drawingStyle.stroke);
17688
18395
  this.updateOffset(olGeometry, entity.properties.offsetX, entity.properties.offsetY);
@@ -17690,7 +18397,7 @@ class DrawComponent {
17690
18397
  }
17691
18398
  });
17692
18399
  }
17693
- onSelectDraw(olFeature, label) {
18400
+ onSelectDraw(olFeature, label, labelTypeAndUnit) {
17694
18401
  const entities = this.activeStore.all();
17695
18402
  const olGeometry = olFeature.getGeometry();
17696
18403
  olGeometry.ol_uid = olFeature.get('id');
@@ -17716,6 +18423,8 @@ class DrawComponent {
17716
18423
  this.updateFontSizeAndStyle(olGeometry, fontSize, fontStyle);
17717
18424
  this.updateFillAndStrokeColor(olGeometry, fillColor, strokeColor);
17718
18425
  this.updateOffset(olGeometry, offsetX, offsetY);
18426
+ this.updateLabelType(olGeometry, labelTypeAndUnit[0]);
18427
+ this.updateMeasureUnit(olGeometry, labelTypeAndUnit[1]);
17719
18428
  this.replaceFeatureInStore(entity, olGeometry, rad);
17720
18429
  }
17721
18430
  });
@@ -17755,8 +18464,12 @@ class DrawComponent {
17755
18464
  lon4326 = center4326[0];
17756
18465
  lat4326 = center4326[1];
17757
18466
  rad = getDistance(center4326, extent4326);
18467
+ this.radiusFormControl.setValue(Math.round(rad));
17758
18468
  }
17759
18469
  }
18470
+ if (this.activeDrawControl.radiusDrawEnd$.getValue()) {
18471
+ rad = this.activeDrawControl.radiusDrawEnd$.getValue();
18472
+ }
17760
18473
  if (olGeometry instanceof OlPoint) {
17761
18474
  point4326 = transform(olGeometry.getFlatCoordinates(), projection, 'EPSG:4326');
17762
18475
  lon4326 = point4326[0];
@@ -17778,12 +18491,16 @@ class DrawComponent {
17778
18491
  stroke: olGeometry.get('strokeColor_')
17779
18492
  },
17780
18493
  offsetX: olGeometry.get('offsetX_'),
17781
- offsetY: olGeometry.get('offsetY_')
18494
+ offsetY: olGeometry.get('offsetY_'),
18495
+ labelType: olGeometry.get('labelType_'),
18496
+ measureUnit: olGeometry.get('measureUnit_')
17782
18497
  },
17783
18498
  meta: {
17784
18499
  id: featureId
17785
18500
  }
17786
18501
  });
18502
+ this.activeDrawControl.predefinedRadius$.next(undefined);
18503
+ this.activeDrawControl.radiusDrawEnd$.next(undefined);
17787
18504
  }
17788
18505
  buildForm() {
17789
18506
  this.form = this.formBuilder.group({
@@ -17828,11 +18545,9 @@ class DrawComponent {
17828
18545
  /**
17829
18546
  * Called when the user double-clicks the selected drawing
17830
18547
  */
17831
- editLabelDrawing() {
17832
- if (this.selectedFeatures$.value.length) {
17833
- const olGeometry = featureToOl(this.selectedFeatures$.value[0], this.map.ol.getView().getProjection().getCode());
17834
- this.openDrawDialog(olGeometry, false);
17835
- }
18548
+ editLabelDrawing(feature) {
18549
+ const olGeometryFeature = featureToOl(feature, this.map.ol.getView().getProjection().getCode());
18550
+ this.openDrawDialog(olGeometryFeature, false);
17836
18551
  }
17837
18552
  openShorcutsDialog() {
17838
18553
  this.dialog.open(DrawShorcutsComponent);
@@ -17869,6 +18584,19 @@ class DrawComponent {
17869
18584
  onToggleDrawControl(toggleIsChecked) {
17870
18585
  toggleIsChecked ? this.toggleDrawControl() : this.deactivateDrawControl();
17871
18586
  }
18587
+ onToggleFreehandMode(event) {
18588
+ if (this.isCircle() && !event.checked) {
18589
+ this.activeDrawControl.ispredefinedRadius$.next(true);
18590
+ this.changeRadius(this.radiusFormControl.value);
18591
+ }
18592
+ else {
18593
+ this.activeDrawControl.setOlInteractionStyle(createInteractionStyle(this.fillColor, this.strokeColor, this.strokeWidth));
18594
+ this.activeDrawControl.ispredefinedRadius$.next(false);
18595
+ }
18596
+ this.freehandMode = event.checked;
18597
+ this.activeDrawControl.freehand$.next(event.checked);
18598
+ this.toggleDrawControl();
18599
+ }
17872
18600
  // User changes properties of a drawing element
17873
18601
  /**
17874
18602
  * Display the current layer with the current store and the current layerSource
@@ -18019,16 +18747,19 @@ class DrawComponent {
18019
18747
  onGeometryTypeChange(geometryType) {
18020
18748
  this.currGeometryType = geometryType;
18021
18749
  this.activeDrawControl.setGeometryType(geometryType);
18750
+ this.freehandMode ?
18751
+ this.onToggleFreehandMode({ checked: true }) :
18752
+ this.onToggleFreehandMode({ checked: false });
18022
18753
  this.toggleDrawControl();
18023
18754
  }
18024
18755
  // Updates the properties of olFeature inputted
18025
18756
  /**
18026
18757
  * Update the label of a geometry when a label is entered in a dialog box
18027
- * @param olGeometry the geometry
18758
+ * @param OlFeature the feature
18028
18759
  * @param label the label
18029
18760
  */
18030
- updateLabelOfOlGeometry(olGeometry, label) {
18031
- olGeometry.setProperties({
18761
+ updateLabelOfOlGeometry(OlFeature, label) {
18762
+ OlFeature.setProperties({
18032
18763
  _label: label
18033
18764
  }, true);
18034
18765
  }
@@ -18049,13 +18780,23 @@ class DrawComponent {
18049
18780
  offsetY_: offsetY
18050
18781
  }, true);
18051
18782
  }
18783
+ updateLabelType(olFeature, typeOfLabel) {
18784
+ olFeature.setProperties({
18785
+ labelType_: typeOfLabel
18786
+ }, true);
18787
+ }
18788
+ updateMeasureUnit(olFeature, measureUnit) {
18789
+ olFeature.setProperties({
18790
+ measureUnit_: measureUnit
18791
+ }, true);
18792
+ }
18052
18793
  // Updates values of the selected element on the HTML view
18053
18794
  getFeatureFontSize() {
18054
18795
  return this.selectedFeatures$.value.length > 0
18055
18796
  ? this.selectedFeatures$.value[0].properties.fontStyle
18056
18797
  .split(' ')[0]
18057
18798
  .replace('px', '')
18058
- : '20';
18799
+ : '15';
18059
18800
  }
18060
18801
  getFeatureFontStyle() {
18061
18802
  return this.selectedFeatures$.value.length > 0
@@ -18159,6 +18900,66 @@ class DrawComponent {
18159
18900
  }
18160
18901
  this.activeDrawControl.setOlMap(this.map.ol, true);
18161
18902
  }
18903
+ /**
18904
+ * get the geometry of design
18905
+ *
18906
+ */
18907
+ isPoint() {
18908
+ return this.activeDrawControl.getGeometryType() === this.geometryType.Point;
18909
+ }
18910
+ isLineString() {
18911
+ return this.activeDrawControl.getGeometryType() === this.geometryType.LineString;
18912
+ }
18913
+ isPolygon() {
18914
+ return this.activeDrawControl.getGeometryType() === this.geometryType.Polygon;
18915
+ }
18916
+ isCircle() {
18917
+ return this.activeDrawControl.getGeometryType() === this.geometryType.Circle;
18918
+ }
18919
+ /**
18920
+ * The fonction to predefine the radius of the user
18921
+ *
18922
+ */
18923
+ changeRadius(radius) {
18924
+ let radiusMeters;
18925
+ if (radius) {
18926
+ this.measureUnit === MeasureLengthUnit.Meters ? radiusMeters = radius :
18927
+ radiusMeters = radius * 1000;
18928
+ }
18929
+ else {
18930
+ radiusMeters = undefined;
18931
+ }
18932
+ const pointStyle = (feature, resolution) => {
18933
+ const geom = feature.getGeometry();
18934
+ const coordinates = olproj.transform(geom.getCoordinates(), this.map.projection, 'EPSG:4326');
18935
+ const radius = radiusMeters / (Math.cos((Math.PI / 180) * coordinates[1])) / resolution;
18936
+ this.activeDrawControl.predefinedRadius$.next(radiusMeters);
18937
+ return new olstyle.Style({
18938
+ image: new olstyle.Circle({
18939
+ radius: radius,
18940
+ stroke: new olstyle.Stroke({
18941
+ width: 1,
18942
+ color: 'rgba(143,7,7,1)'
18943
+ }),
18944
+ fill: new olstyle.Fill({
18945
+ color: 'rgba(255,255,255,0.4)'
18946
+ })
18947
+ })
18948
+ });
18949
+ };
18950
+ this.activeDrawControl.setOlInteractionStyle(pointStyle);
18951
+ this.toggleDrawControl();
18952
+ }
18953
+ onMeasureUnitChange(selectedMeasureUnit) {
18954
+ if (selectedMeasureUnit === this.measureUnit) {
18955
+ return;
18956
+ }
18957
+ else {
18958
+ this.measureUnit = selectedMeasureUnit;
18959
+ this.measureUnit === MeasureLengthUnit.Meters ? this.radiusFormControl.setValue(this.radiusFormControl.value * 1000) :
18960
+ this.radiusFormControl.setValue(this.radiusFormControl.value / 1000);
18961
+ }
18962
+ }
18162
18963
  /**
18163
18964
  * Recreates the style of the feature stored
18164
18965
  */
@@ -18174,6 +18975,10 @@ class DrawComponent {
18174
18975
  });
18175
18976
  }
18176
18977
  }
18978
+ getRadius(olGeometry) {
18979
+ const length = getLength(olGeometry);
18980
+ return Number(length / (2 * Math.PI));
18981
+ }
18177
18982
  }
18178
18983
  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)); };
18179
18984
  DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent, selectors: [["igo-draw"]], viewQuery: function DrawComponent_Query(rf, ctx) { if (rf & 1) {
@@ -18181,8 +18986,8 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18181
18986
  } if (rf & 2) {
18182
18987
  let _t;
18183
18988
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.select = _t.first);
18184
- } }, 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) { if (rf & 1) {
18185
- const _r21 = i0.ɵɵgetCurrentView();
18989
+ } }, 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) { if (rf & 1) {
18990
+ const _r29 = i0.ɵɵgetCurrentView();
18186
18991
  i0.ɵɵelementStart(0, "div")(1, "div", 0)(2, "mat-button-toggle-group", 1);
18187
18992
  i0.ɵɵlistener("change", function DrawComponent_Template_mat_button_toggle_group_change_2_listener($event) { return ctx.onGeometryTypeChange($event.value); });
18188
18993
  i0.ɵɵelementStart(3, "mat-button-toggle", 2);
@@ -18210,36 +19015,39 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18210
19015
  i0.ɵɵlistener("change", function DrawComponent_Template_mat_slide_toggle_change_19_listener() { return ctx.onToggleLabels(); });
18211
19016
  i0.ɵɵtext(20);
18212
19017
  i0.ɵɵpipe(21, "translate");
18213
- i0.ɵɵelementEnd()();
18214
- i0.ɵɵelement(22, "mat-divider");
18215
- i0.ɵɵelementStart(23, "div")(24, "mat-form-field", 6)(25, "mat-label");
18216
- i0.ɵɵtext(26);
18217
- i0.ɵɵpipe(27, "translate");
18218
19018
  i0.ɵɵelementEnd();
18219
- i0.ɵɵelementStart(28, "mat-select", 7, 8);
18220
- 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)); });
18221
- i0.ɵɵtemplate(30, DrawComponent_mat_option_30_Template, 2, 2, "mat-option", 9);
18222
- i0.ɵɵelementStart(31, "mat-option", 10);
18223
- i0.ɵɵtext(32);
18224
- i0.ɵɵpipe(33, "translate");
18225
- i0.ɵɵelementEnd()()();
18226
- i0.ɵɵtemplate(34, DrawComponent_button_34_Template, 4, 7, "button", 11);
19019
+ i0.ɵɵtemplate(22, DrawComponent_mat_slide_toggle_22_Template, 3, 5, "mat-slide-toggle", 6);
19020
+ i0.ɵɵtemplate(23, DrawComponent_div_23_Template, 8, 7, "div", 7);
18227
19021
  i0.ɵɵelementEnd();
18228
- i0.ɵɵelement(35, "mat-divider");
18229
- i0.ɵɵelementStart(36, "div");
18230
- i0.ɵɵtemplate(37, DrawComponent_button_37_Template, 4, 6, "button", 12);
18231
- i0.ɵɵelementStart(38, "div")(39, "igo-entity-table", 13, 14);
18232
- i0.ɵɵlistener("dblclick", function DrawComponent_Template_igo_entity_table_dblclick_39_listener() { return ctx.editLabelDrawing(); });
19022
+ i0.ɵɵelement(24, "mat-divider");
19023
+ i0.ɵɵelementStart(25, "div")(26, "mat-form-field", 8)(27, "mat-label");
19024
+ i0.ɵɵtext(28);
19025
+ i0.ɵɵpipe(29, "translate");
19026
+ i0.ɵɵelementEnd();
19027
+ i0.ɵɵelementStart(30, "mat-select", 9, 10);
19028
+ 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)); });
19029
+ i0.ɵɵtemplate(32, DrawComponent_mat_option_32_Template, 2, 2, "mat-option", 11);
19030
+ i0.ɵɵelementStart(33, "mat-option", 12);
19031
+ i0.ɵɵtext(34);
19032
+ i0.ɵɵpipe(35, "translate");
18233
19033
  i0.ɵɵelementEnd()()();
18234
- i0.ɵɵelementStart(41, "div", 15);
18235
- i0.ɵɵtemplate(42, DrawComponent_mat_form_field_42_Template, 11, 8, "mat-form-field", 16);
19034
+ i0.ɵɵtemplate(36, DrawComponent_button_36_Template, 4, 7, "button", 13);
18236
19035
  i0.ɵɵelementEnd();
18237
- i0.ɵɵelementStart(43, "button", 17);
18238
- i0.ɵɵlistener("click", function DrawComponent_Template_button_click_43_listener() { return ctx.openShorcutsDialog(); });
18239
- i0.ɵɵelement(44, "mat-icon", 18);
18240
- i0.ɵɵpipe(45, "translate");
19036
+ i0.ɵɵelement(37, "mat-divider");
19037
+ i0.ɵɵelementStart(38, "div");
19038
+ i0.ɵɵtemplate(39, DrawComponent_button_39_Template, 4, 6, "button", 14);
19039
+ i0.ɵɵelementStart(40, "div");
19040
+ i0.ɵɵelement(41, "igo-entity-table", 15, 16);
19041
+ i0.ɵɵelementEnd()();
19042
+ i0.ɵɵelementStart(43, "div", 17);
19043
+ i0.ɵɵtemplate(44, DrawComponent_mat_form_field_44_Template, 11, 8, "mat-form-field", 18);
19044
+ i0.ɵɵelementEnd();
19045
+ i0.ɵɵelementStart(45, "button", 19);
19046
+ i0.ɵɵlistener("click", function DrawComponent_Template_button_click_45_listener() { return ctx.openShorcutsDialog(); });
19047
+ i0.ɵɵelement(46, "mat-icon", 20);
19048
+ i0.ɵɵpipe(47, "translate");
18241
19049
  i0.ɵɵelementEnd();
18242
- i0.ɵɵtemplate(46, DrawComponent_button_46_Template, 5, 7, "button", 19);
19050
+ i0.ɵɵtemplate(48, DrawComponent_button_48_Template, 5, 7, "button", 21);
18243
19051
  i0.ɵɵelementEnd();
18244
19052
  } if (rf & 2) {
18245
19053
  i0.ɵɵadvance(2);
@@ -18247,35 +19055,39 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18247
19055
  i0.ɵɵadvance(1);
18248
19056
  i0.ɵɵproperty("value", ctx.geometryType.Point);
18249
19057
  i0.ɵɵadvance(1);
18250
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 27, "igo.geo.draw." + ctx.geometryType.Point), " ");
19058
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 29, "igo.geo.draw." + ctx.geometryType.Point), " ");
18251
19059
  i0.ɵɵadvance(2);
18252
19060
  i0.ɵɵproperty("value", ctx.geometryType.LineString);
18253
19061
  i0.ɵɵadvance(1);
18254
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 29, "igo.geo.draw." + ctx.geometryType.LineString), " ");
19062
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 31, "igo.geo.draw." + ctx.geometryType.LineString), " ");
18255
19063
  i0.ɵɵadvance(2);
18256
19064
  i0.ɵɵproperty("value", ctx.geometryType.Polygon);
18257
19065
  i0.ɵɵadvance(1);
18258
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 31, "igo.geo.draw." + ctx.geometryType.Polygon), " ");
19066
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 33, "igo.geo.draw." + ctx.geometryType.Polygon), " ");
18259
19067
  i0.ɵɵadvance(2);
18260
19068
  i0.ɵɵproperty("value", ctx.geometryType.Circle);
18261
19069
  i0.ɵɵadvance(1);
18262
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(14, 33, "igo.geo.draw." + ctx.geometryType.Circle), " ");
19070
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(14, 35, "igo.geo.draw." + ctx.geometryType.Circle), " ");
18263
19071
  i0.ɵɵadvance(3);
18264
19072
  i0.ɵɵproperty("disabled", ctx.drawControlIsDisabled)("checked", ctx.drawControlIsActive)("labelPosition", "before");
18265
19073
  i0.ɵɵadvance(1);
18266
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(18, 35, "igo.geo.spatialFilter.drawControl"), " ");
19074
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(18, 37, "igo.geo.spatialFilter.drawControl"), " ");
18267
19075
  i0.ɵɵadvance(2);
18268
19076
  i0.ɵɵproperty("checked", ctx.labelsAreShown)("labelPosition", "before");
18269
19077
  i0.ɵɵadvance(1);
18270
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 37, "igo.geo.draw.toggleMapTooltips"), " ");
18271
- i0.ɵɵadvance(6);
18272
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(27, 39, "igo.geo.draw.layer.title"));
19078
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 39, "igo.geo.draw.toggleMapTooltips"), " ");
19079
+ i0.ɵɵadvance(2);
19080
+ i0.ɵɵproperty("ngIf", !ctx.isPoint());
19081
+ i0.ɵɵadvance(1);
19082
+ i0.ɵɵproperty("ngIf", ctx.isCircle());
19083
+ i0.ɵɵadvance(5);
19084
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(29, 41, "igo.geo.draw.layer.title"));
18273
19085
  i0.ɵɵadvance(2);
18274
19086
  i0.ɵɵproperty("value", ctx.updateActiveLayer());
18275
19087
  i0.ɵɵadvance(2);
18276
19088
  i0.ɵɵproperty("ngForOf", ctx.allLayers);
18277
19089
  i0.ɵɵadvance(2);
18278
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(33, 41, "igo.geo.draw.layer.createNewLayer"), " ");
19090
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(35, 43, "igo.geo.draw.layer.createNewLayer"), " ");
18279
19091
  i0.ɵɵadvance(2);
18280
19092
  i0.ɵɵproperty("ngIf", ctx.activeDrawingLayer);
18281
19093
  i0.ɵɵadvance(3);
@@ -18285,10 +19097,10 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18285
19097
  i0.ɵɵadvance(3);
18286
19098
  i0.ɵɵproperty("ngIf", ctx.icons.length >= 1);
18287
19099
  i0.ɵɵadvance(2);
18288
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(45, 43, "igo.geo.draw.shortcuts"));
19100
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(47, 45, "igo.geo.draw.shortcuts"));
18289
19101
  i0.ɵɵadvance(2);
18290
19102
  i0.ɵɵproperty("ngIf", ctx.selectedFeatures$.value.length);
18291
- } }, 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: [
19103
+ } }, 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: [
18292
19104
  trigger('openClose', [
18293
19105
  state('open', style({
18294
19106
  opacity: 1
@@ -18313,7 +19125,7 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18313
19125
  transition('open => closed', [animate('600ms ease')]),
18314
19126
  transition('closed => open', [animate('800ms ease')])
18315
19127
  ])
18316
- ], 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"] }]
19128
+ ], 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"] }]
18317
19129
  }], function () { return [{ type: i2$1.LanguageService }, { type: i2$2.UntypedFormBuilder }, { type: DrawStyleService }, { type: i1.MatDialog }, { type: DrawIconService }]; }, { map: [{
18318
19130
  type: Input
18319
19131
  }], stores: [{
@@ -18603,7 +19415,7 @@ StyleModalComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: StyleMo
18603
19415
  i0.ɵɵproperty("value", ctx.getFeatureOffsetY());
18604
19416
  i0.ɵɵadvance(4);
18605
19417
  i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(51, 44, "igo.geo.draw.cancel"), " ");
18606
- } }, 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}"] });
19418
+ } }, 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}"] });
18607
19419
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StyleModalComponent, [{
18608
19420
  type: Component,
18609
19421
  args: [{ selector: 'igo-style-modal-component', template: "<div mat-dialog-content>\r\n <h2 mat-dialog-title class=\"mat-typography\">{{ 'igo.geo.layer.style.styleModal' | translate }}</h2>\r\n <div\r\n class=\"edition-drawing mat-typography\"\r\n [hidden]=\"data.features.length === 0\">\r\n <form\r\n class=\"igo-form\"\r\n [formGroup]=\"form\">\r\n <div class=\"fill-color-picker mat-typography\" *ngIf=\"linestringOnly !== true\">\r\n <span>\r\n <mat-icon class=\"stroke-palette-icon\" svgIcon=\"square\"></mat-icon>\r\n {{ 'igo.geo.draw.fill' | translate }}\r\n </span>\r\n\r\n <mat-form-field\r\n class=\"fill-field\"\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.draw.colorPicker' | translate\">\r\n <mat-label>{{ getFeatureFillColor() }}</mat-label>\r\n <input\r\n #fillColorInput\r\n formControlName=\"fill\"\r\n matInput\r\n type=\"text\"\r\n [style.background]=\"getFeatureFillColor()\"\r\n [readonly]=\"true\"\r\n [colorPicker]=\"getFeatureFillColor()\"\r\n [cpWidth]=\"'200px'\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPosition]=\"'bottom'\"\r\n [cpPositionOffset]=\"'-75%'\"\r\n [cpCancelButton]=\"true\"\r\n [cpCancelButtonText]=\"'igo.geo.draw.cancel' | translate\"\r\n [cpOKButton]=\"true\"\r\n (colorPickerChange)=\"styleModalData.fillColor = $event\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"stroke-color-picker mat-typography\">\r\n <span>\r\n <mat-icon\r\n class=\"stroke-palette-icon\"\r\n svgIcon=\"square-outline\">\r\n </mat-icon>\r\n {{'igo.geo.draw.stroke' | translate}}\r\n </span>\r\n\r\n <mat-form-field\r\n class=\"stroke-field\"\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.draw.colorPicker' | translate\">\r\n <mat-label>{{ getFeatureStrokeColor() }}</mat-label>\r\n <input\r\n #strokeColorInput\r\n formControlName=\"stroke\"\r\n matInput\r\n type=\"text\"\r\n [style.background]=\"getFeatureStrokeColor()\"\r\n [readonly]=\"true\"\r\n [colorPicker]=\"getFeatureStrokeColor()\"\r\n [cpWidth]=\"'200px'\"\r\n [cpPosition]=\"'bottom'\"\r\n [cpPositionOffset]=\"'-75%'\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpCancelButton]=\"true\"\r\n [cpCancelButtonText]=\"'igo.geo.draw.cancel' | translate\"\r\n [cpOKButton]=\"true\"\r\n (colorPickerChange)=\"styleModalData.strokeColor = $event\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\">\r\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\r\n <mat-label>{{ 'igo.geo.draw.fontSize' | translate }}</mat-label>\r\n <input\r\n matInput\r\n #testFontSize\r\n type=\"number\"\r\n placeholder=\"10\"\r\n min=\"10\"\r\n onkeydown=\"return event.keyCode !== 69\"\r\n [value]=\"getFeatureFontSize()\"\r\n (input)=\"styleModalData.fontSize = $event.target.value\">\r\n <span matSuffix>px</span>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\r\n <mat-label>{{ 'igo.geo.draw.fontStyle' | translate }}</mat-label>\r\n <mat-select\r\n #testFontStyle\r\n [value]=\"getFeatureFontStyle()\"\r\n (selectionChange)=\"styleModalData.fontStyle = $event.value\">\r\n <mat-option\r\n *ngFor=\"let fontSelect of allFontStyles\"\r\n [value]=\"fontSelect\">\r\n {{ fontSelect }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\">\r\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\r\n <mat-label>{{ 'igo.geo.draw.offsetX' | translate }}</mat-label>\r\n <input\r\n matInput\r\n #offsetXInput\r\n type=\"number\"\r\n onkeydown=\"return event.keyCode !== 69\"\r\n [value]=\"getFeatureOffsetX()\"\r\n (input)=\"styleModalData.offsetX = $event.target.value\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\r\n <mat-label>{{ 'igo.geo.draw.offsetY' | translate }}</mat-label>\r\n <input\r\n matInput\r\n #offsetYInput\r\n type=\"number\"\r\n onkeydown=\"return event.keyCode !== 69\"\r\n [value]=\"getFeatureOffsetY()\"\r\n (input)=\"styleModalData.offsetY= $event.target.value\">\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n </div>\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()\">OK\r\n </button>\r\n</div>\r\n", styles: ["h2{font-weight:700;font-size:large}.igo-form{padding:10px}.fill-field,.stroke-field{width:130px}.fill-color-picker mat-icon{position:relative;top:7px}.fill-color-picker mat-form-field{left:8px}.stroke-color-picker mat-icon{position:relative;top:7px}.stroke-color-picker mat-form-field{left:35px}.box{width:25px;height:25px}.edition-drawing{padding:10px 0}.igo-input-container .mat-form-field+.mat-form-field{margin-left:8px}.igo-form-input-box{width:150px}button{margin-right:5px}\n"] }]
@@ -18745,9 +19557,9 @@ IgoLayerModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [MatInputM
18745
19557
  LayerLegendListBindingDirective,
18746
19558
  TrackFeatureButtonComponent,
18747
19559
  StyleModalComponent] }); })();
18748
- 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]);
19560
+ 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]);
18749
19561
  i0.ɵɵsetComponentScope(LayerLegendItemComponent, [i4.MatTooltip, i5.MatListItem, i9.MatLine, LayerLegendComponent], []);
18750
- 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,
19562
+ 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,
18751
19563
  LayerListToolComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
18752
19564
  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]);
18753
19565
 
@@ -20071,7 +20883,9 @@ IgoDrawModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [FormsModul
20071
20883
  IgoEntityTableModule,
20072
20884
  ColorPickerModule,
20073
20885
  BrowserModule,
20074
- BrowserAnimationsModule] });
20886
+ BrowserAnimationsModule,
20887
+ MatRadioModule,
20888
+ MatCheckboxModule] });
20075
20889
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoDrawModule, [{
20076
20890
  type: NgModule,
20077
20891
  args: [{
@@ -20096,7 +20910,9 @@ IgoDrawModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [FormsModul
20096
20910
  IgoEntityTableModule,
20097
20911
  ColorPickerModule,
20098
20912
  BrowserModule,
20099
- BrowserAnimationsModule
20913
+ BrowserAnimationsModule,
20914
+ MatRadioModule,
20915
+ MatCheckboxModule
20100
20916
  ],
20101
20917
  declarations: [DrawComponent, DrawPopupComponent, DrawLayerPopupComponent, DrawShorcutsComponent],
20102
20918
  exports: [DrawComponent]
@@ -20122,7 +20938,9 @@ IgoDrawModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [FormsModul
20122
20938
  IgoEntityTableModule,
20123
20939
  ColorPickerModule,
20124
20940
  BrowserModule,
20125
- BrowserAnimationsModule], exports: [DrawComponent] }); })();
20941
+ BrowserAnimationsModule,
20942
+ MatRadioModule,
20943
+ MatCheckboxModule], exports: [DrawComponent] }); })();
20126
20944
 
20127
20945
  class IgoDrawingToolModule {
20128
20946
  }
@@ -22286,6 +23104,14 @@ class GeometryFormFieldInputComponent {
22286
23104
  }
22287
23105
  this.toggleControl();
22288
23106
  }
23107
+ /**
23108
+ * Whether freehand draw control should be active or not
23109
+ */
23110
+ get predefinedRadius() { return this._predefinedRadius; }
23111
+ set predefinedRadius(value) {
23112
+ this._predefinedRadius = value;
23113
+ this.drawControl.ispredefinedRadius$.next(value);
23114
+ }
22289
23115
  /**
22290
23116
  * Style for the draw control (applies while the geometry is being drawn)
22291
23117
  */
@@ -22666,7 +23492,7 @@ class GeometryFormFieldInputComponent {
22666
23492
  }
22667
23493
  }
22668
23494
  GeometryFormFieldInputComponent.ɵfac = function GeometryFormFieldInputComponent_Factory(t) { return new (t || GeometryFormFieldInputComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2$2.NgControl, 10)); };
22669
- 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) { if (rf & 1) {
23495
+ 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) { if (rf & 1) {
22670
23496
  i0.ɵɵtemplate(0, GeometryFormFieldInputComponent_ng_template_0_Template, 0, 0, "ng-template");
22671
23497
  } }, encapsulation: 2, changeDetection: 0 });
22672
23498
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GeometryFormFieldInputComponent, [{
@@ -22688,6 +23514,8 @@ GeometryFormFieldInputComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ t
22688
23514
  type: Input
22689
23515
  }], freehandDrawIsActive: [{
22690
23516
  type: Input
23517
+ }], predefinedRadius: [{
23518
+ type: Input
22691
23519
  }], controlOptions: [{
22692
23520
  type: Input
22693
23521
  }], drawStyle: [{
@@ -23924,7 +24752,7 @@ TimeFilterListBindingDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ ty
23924
24752
  class WktService {
23925
24753
  constructor() { }
23926
24754
  wktToFeature(wkt, wktProj, featureProj) {
23927
- return new olWKT().readFeature(wkt, {
24755
+ return new olFormatWKT().readFeature(wkt, {
23928
24756
  dataProjection: wktProj,
23929
24757
  featureProjection: featureProj
23930
24758
  });
@@ -27324,6 +28152,7 @@ class SpatialFilterItemComponent {
27324
28152
  this.measureUnitChange = new EventEmitter();
27325
28153
  this.radiusEvent = new EventEmitter();
27326
28154
  this.freehandControl = new EventEmitter();
28155
+ this.predefinedRadius = new EventEmitter();
27327
28156
  this.clearButtonEvent = new EventEmitter();
27328
28157
  this.clearSearchEvent = new EventEmitter();
27329
28158
  this.export = new EventEmitter();
@@ -27791,6 +28620,16 @@ class SpatialFilterItemComponent {
27791
28620
  onfreehandControlChange() {
27792
28621
  this.freehandDrawIsActive = !this.freehandDrawIsActive;
27793
28622
  this.freehandControl.emit(this.freehandDrawIsActive);
28623
+ if (this.isPoint()) {
28624
+ this.predefinedRadius.emit(!this.freehandDrawIsActive);
28625
+ if (this.freehandDrawIsActive) {
28626
+ this.overlayStyle$.next(undefined);
28627
+ this.drawStyle$.next(undefined);
28628
+ }
28629
+ }
28630
+ else {
28631
+ this.predefinedRadius.emit(false);
28632
+ }
27794
28633
  }
27795
28634
  /**
27796
28635
  * Launch search button
@@ -27979,7 +28818,7 @@ class SpatialFilterItemComponent {
27979
28818
  }
27980
28819
  }
27981
28820
  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)); };
27982
- 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) { if (rf & 1) {
28821
+ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SpatialFilterItemComponent, selectors: [["igo-spatial-filter-item"]], inputs: { map: "map", type: "type", queryType: "queryType", zone: "zone", loading: "loading", store: "store", layers: "layers", allLayers: "allLayers", thematicLength: "thematicLength" }, outputs: { toggleSearch: "toggleSearch", itemTypeChange: "itemTypeChange", thematicChange: "thematicChange", drawZoneEvent: "drawZoneEvent", bufferEvent: "bufferEvent", zoneWithBufferChange: "zoneWithBufferChange", measureUnitChange: "measureUnitChange", radiusEvent: "radiusEvent", freehandControl: "freehandControl", predefinedRadius: "predefinedRadius", clearButtonEvent: "clearButtonEvent", clearSearchEvent: "clearSearchEvent", export: "export", openWorkspace: "openWorkspace", entityChange: "entityChange" }, decls: 29, vars: 43, consts: [[3, "formControl", "map", "geometryType", "drawGuide", "measure", "drawControlIsActive", "freehandDrawIsActive", "drawStyle", "overlayStyle", "radius", "predefinedRadius"], [1, "header"], [3, "checked", "labelPosition", "change", 4, "ngIf"], ["class", "buffer-unit", 4, "ngIf"], ["class", "radius-unit", 4, "ngIf"], [1, "title", "mat-typography"], [3, "value"], [3, "value", "change", 4, "ngFor", "ngForOf"], ["class", "thematics", 4, "ngIf"], [1, "buttons"], ["mat-raised-button", "", "class", "clear-search-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "class", "clear-form-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "color", "primary", 1, "search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "remove-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "export-button", 3, "disabled", "click"], ["class", "chevron-down", "mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["class", "results", 4, "ngIf"], [3, "checked", "labelPosition", "change"], [1, "buffer-unit"], [1, "buffer-form"], [1, "buffer"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly"], [1, "unit-field"], [3, "value", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], [1, "radius-unit"], [1, "radius-form"], [1, "radius"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly", "input"], [3, "value", "change"], [1, "thematics"], ["matColumnDef", "name"], ["class", "thematics-header", 4, "matHeaderCellDef"], ["matColumnDef", "select"], ["class", "checks-header", 4, "matHeaderCellDef"], [4, "matHeaderRowDef"], [4, "matRowDef", "matRowDefColumns"], [3, "dataSource", "treeControl"], ["matTreeNodeToggle", "", 4, "matTreeNodeDef"], [4, "matTreeNodeDef", "matTreeNodeDefWhen"], [1, "thematics-header"], [1, "checks-header"], [3, "checked", "indeterminate", "change"], ["matTreeNodeToggle", ""], [1, "mat-tree-node"], ["mat-icon-button", "", "disabled", ""], [1, "tree-check", 3, "checked", "click", "change"], ["mat-icon-button", "", 3, "click"], [3, "svgIcon"], [1, "tree-check-2", 3, "checked", "indeterminate", "change"], [1, "tree-ul"], ["matTreeNodeOutlet", ""], ["mat-raised-button", "", 1, "clear-search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "clear-form-button", 3, "disabled", "click"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 1, "chevron-down", 3, "matTooltip", "click"], ["svgIcon", "chevron-down"], [1, "results"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], [1, "results-list", 3, "template", "store", "entitySelectChange"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click"], ["svgIcon", "chevron-up"]], template: function SpatialFilterItemComponent_Template(rf, ctx) { if (rf & 1) {
27983
28822
  i0.ɵɵelement(0, "igo-geometry-form-field-input", 0);
27984
28823
  i0.ɵɵpipe(1, "async");
27985
28824
  i0.ɵɵpipe(2, "async");
@@ -28019,7 +28858,7 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
28019
28858
  i0.ɵɵtemplate(27, SpatialFilterItemComponent_button_27_Template, 3, 3, "button", 15);
28020
28859
  i0.ɵɵtemplate(28, SpatialFilterItemComponent_div_28_Template, 3, 3, "div", 16);
28021
28860
  } if (rf & 2) {
28022
- 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);
28861
+ 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);
28023
28862
  i0.ɵɵadvance(5);
28024
28863
  i0.ɵɵproperty("ngIf", !ctx.isPredefined());
28025
28864
  i0.ɵɵadvance(1);
@@ -28029,7 +28868,7 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
28029
28868
  i0.ɵɵadvance(1);
28030
28869
  i0.ɵɵproperty("ngIf", ctx.isPoint());
28031
28870
  i0.ɵɵadvance(2);
28032
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(11, 34, "igo.geo.spatialFilter.search"), " : ");
28871
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(11, 35, "igo.geo.spatialFilter.search"), " : ");
28033
28872
  i0.ɵɵadvance(2);
28034
28873
  i0.ɵɵproperty("value", ctx.selectedItemType);
28035
28874
  i0.ɵɵadvance(1);
@@ -28043,15 +28882,15 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
28043
28882
  i0.ɵɵadvance(1);
28044
28883
  i0.ɵɵproperty("disabled", ctx.disableSearchButton());
28045
28884
  i0.ɵɵadvance(1);
28046
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(20, 36, "igo.geo.spatialFilter.goSearch"), " ");
28885
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(20, 37, "igo.geo.spatialFilter.goSearch"), " ");
28047
28886
  i0.ɵɵadvance(2);
28048
28887
  i0.ɵɵproperty("disabled", ctx.allLayers.length === 0);
28049
28888
  i0.ɵɵadvance(1);
28050
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 38, "igo.geo.spatialFilter.removeLayer"), " ");
28889
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 39, "igo.geo.spatialFilter.removeLayer"), " ");
28051
28890
  i0.ɵɵadvance(2);
28052
28891
  i0.ɵɵproperty("disabled", !ctx.store.entities$.getValue().length);
28053
28892
  i0.ɵɵadvance(1);
28054
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 40, "igo.geo.spatialFilter.exportLayer"), " ");
28893
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 41, "igo.geo.spatialFilter.exportLayer"), " ");
28055
28894
  i0.ɵɵadvance(2);
28056
28895
  i0.ɵɵproperty("ngIf", ctx.store.all().length && ctx.tableTemplate && !ctx.listIsVisible);
28057
28896
  i0.ɵɵadvance(1);
@@ -28059,7 +28898,7 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
28059
28898
  } }, styles: [".header[_ngcontent-%COMP%]{margin-top:5px;width:100%}.mat-slide-toggle[_ngcontent-%COMP%]{padding:5px;margin-bottom:15px;width:98%}.mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 20px)}.title[_ngcontent-%COMP%]{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button[_ngcontent-%COMP%]{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}.mat-form-field[_ngcontent-%COMP%]{margin-top:5px}.mat-column-select[_ngcontent-%COMP%]{overflow:auto}.buttons[_ngcontent-%COMP%]{margin-top:15px}.search-button[_ngcontent-%COMP%]{left:15px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.search-button[_ngcontent-%COMP%]{left:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.export-button[_ngcontent-%COMP%]{left:15px;width:46%;margin-bottom:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.export-button[_ngcontent-%COMP%]{left:10px;margin-top:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.remove-button[_ngcontent-%COMP%]{margin-top:12px;left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.remove-button[_ngcontent-%COMP%]{margin:0;width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-form-button[_ngcontent-%COMP%]{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-form-button[_ngcontent-%COMP%]{width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-search-button[_ngcontent-%COMP%]{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-search-button[_ngcontent-%COMP%]{width:45%;min-height:35px;white-space:normal;line-height:normal}}.thematics[_ngcontent-%COMP%]{max-height:35%;overflow:auto;margin-top:5px;width:98%}.results[_ngcontent-%COMP%]{overflow:auto;max-height:250px;width:98%}.mat-column-typeResults[_ngcontent-%COMP%]{max-width:100px;margin-right:5px}.buffer-unit[_ngcontent-%COMP%], .radius-unit[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px}.radius[_ngcontent-%COMP%], .buffer[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}.example-tree-invisible[_ngcontent-%COMP%]{display:none}.tree-ul[_ngcontent-%COMP%]{margin:0;padding:0 0 0 20px;list-style-type:none}.tree-check[_ngcontent-%COMP%], .tree-check-2[_ngcontent-%COMP%]{position:relative;margin-left:auto;margin-right:5px}.thematics-header[_ngcontent-%COMP%]{max-width:250px}.checks-header[_ngcontent-%COMP%]{padding:none;max-width:calc(100% - 316px);overflow:hidden}.mat-checkbox[_ngcontent-%COMP%]{padding:5px}.mat-tree-node[_ngcontent-%COMP%]{position:relative;min-height:42px;width:280px}.mat-header-cell[_ngcontent-%COMP%]{height:56px}.results[_ngcontent-%COMP%]{max-height:45%;width:98%}.results[_ngcontent-%COMP%] igo-entity-table[_ngcontent-%COMP%] div.table-container{overflow:visible;overflow:initial}"], changeDetection: 0 });
28060
28899
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpatialFilterItemComponent, [{
28061
28900
  type: Component,
28062
- 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"] }]
28901
+ 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"] }]
28063
28902
  }], function () { return [{ type: i0.ChangeDetectorRef }, { type: SpatialFilterService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }]; }, { map: [{
28064
28903
  type: Input
28065
28904
  }], type: [{
@@ -28096,6 +28935,8 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
28096
28935
  type: Output
28097
28936
  }], freehandControl: [{
28098
28937
  type: Output
28938
+ }], predefinedRadius: [{
28939
+ type: Output
28099
28940
  }], clearButtonEvent: [{
28100
28941
  type: Output
28101
28942
  }], clearSearchEvent: [{
@@ -29343,15 +30184,15 @@ IgoFilterModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [TimeFi
29343
30184
  i0.ɵɵsetComponentScope(TimeFilterButtonComponent, [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5$1.ListItemDirective, i7$1.MatBadge, TimeFilterItemComponent], [i7.TranslatePipe]);
29344
30185
  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]);
29345
30186
  i0.ɵɵsetComponentScope(TimeFilterListComponent, [i1$1.NgForOf, i5$1.ListItemDirective, i5$1.ListComponent, TimeFilterItemComponent], [FilterableDataSourcePipe]);
29346
- 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]);
30187
+ 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]);
29347
30188
  i0.ɵɵsetComponentScope(OgcFilterButtonComponent, [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5$1.ListItemDirective, i7$1.MatBadge, OgcFilterableItemComponent], [i7.TranslatePipe]);
29348
- 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]);
30189
+ 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]);
29349
30190
  i0.ɵɵsetComponentScope(OgcFilterableFormComponent, [i1$1.NgForOf, i1$1.NgIf, i5$1.ListItemDirective, OgcFilterFormComponent,
29350
30191
  OgcFilterSelectionComponent], []);
29351
- 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]);
30192
+ 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]);
29352
30193
  i0.ɵɵsetComponentScope(OgcFilterableListComponent, [i1$1.NgForOf, i1$1.NgIf, i5$1.ListItemDirective, i5$1.ListComponent, OgcFilterableItemComponent], [i7.TranslatePipe, FilterableDataSourcePipe]);
29353
30194
  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]);
29354
- 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]);
30195
+ 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]);
29355
30196
  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]);
29356
30197
 
29357
30198
  function ExportButtonComponent_button_0_Template(rf, ctx) { if (rf & 1) {
@@ -29616,7 +30457,7 @@ class ExportService {
29616
30457
  outputName = `${title}.csv`;
29617
30458
  }
29618
30459
  outputName = outputName.replace(' ', '_');
29619
- outputName = outputName.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
30460
+ outputName = outputName.normalize('NFD').replace(/[\u0300-\u036f]/g, '').replace(/’/g, "'");
29620
30461
  outputNameField.setAttribute('type', 'hidden');
29621
30462
  outputNameField.setAttribute('name', 'outputName');
29622
30463
  outputNameField.setAttribute('value', outputName);
@@ -29936,21 +30777,34 @@ class ImportService {
29936
30777
  constructor(http, config) {
29937
30778
  this.http = http;
29938
30779
  this.config = config;
29939
- this.ogreUrl = this.config.getConfig('importExport.url');
29940
- const configFileSizeMb = this.config.getConfig('importExport.clientSideFileSizeMaxMb');
30780
+ const importConfig = this.config.getConfig('importExport');
30781
+ this.ogreUrl = importConfig.url;
30782
+ const configFileSizeMb = importConfig.clientSideFileSizeMaxMb;
29941
30783
  this.clientSideFileSizeMax = (configFileSizeMb ? configFileSizeMb : 30) * Math.pow(1024, 2);
30784
+ if (importConfig.formats) {
30785
+ ImportService.allowedExtensions = importConfig.formats
30786
+ .map(format => ImportService.formatExtensionAssociation[format])
30787
+ .filter(e => e);
30788
+ if (ImportService.allowedExtensions.includes('geojson')) {
30789
+ ImportService.allowedExtensions.push('json');
30790
+ }
30791
+ }
29942
30792
  }
29943
30793
  import(file, projectionIn = 'EPSG:4326', projectionOut = 'EPSG:4326') {
29944
30794
  return this.importAsync(file, projectionIn, projectionOut);
29945
30795
  }
29946
30796
  getFileImporter(file) {
29947
30797
  const extension = getFileExtension(file);
30798
+ const allowedExtensions = ImportService.allowedExtensions;
30799
+ let zipMimeTypes = [];
30800
+ if (allowedExtensions.includes('zip')) {
30801
+ zipMimeTypes = ImportService.allowedZipMimeTypes;
30802
+ }
29948
30803
  const mimeType = file.type;
29949
30804
  const allowedMimeTypes = [
29950
30805
  ...ImportService.allowedMimeTypes,
29951
- ...ImportService.allowedZipMimeTypes
30806
+ ...zipMimeTypes
29952
30807
  ];
29953
- const allowedExtensions = ImportService.allowedExtensions;
29954
30808
  if (allowedMimeTypes.indexOf(mimeType) < 0 &&
29955
30809
  allowedExtensions.indexOf(extension) < 0) {
29956
30810
  return undefined;
@@ -30096,6 +30950,13 @@ class ImportService {
30096
30950
  return features;
30097
30951
  }
30098
30952
  }
30953
+ ImportService.formatExtensionAssociation = {
30954
+ GeoJSON: 'geojson',
30955
+ GML: 'gml',
30956
+ GPX: 'gpx',
30957
+ KML: 'kml',
30958
+ Shapefile: 'zip'
30959
+ };
30099
30960
  ImportService.allowedMimeTypes = [
30100
30961
  'application/gml+xml',
30101
30962
  'application/vnd.google-earth.kml+xml',
@@ -30107,7 +30968,7 @@ ImportService.allowedZipMimeTypes = [
30107
30968
  'application/x-zip-compressed',
30108
30969
  'application/x-zip'
30109
30970
  ];
30110
- ImportService.allowedExtensions = ['geojson', 'kml', 'gpx', 'json', 'gml'];
30971
+ ImportService.allowedExtensions = ['geojson', 'kml', 'gpx', 'json', 'gml', 'zip'];
30111
30972
  ImportService.ɵfac = function ImportService_Factory(t) { return new (t || ImportService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.ConfigService)); };
30112
30973
  ImportService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ImportService, factory: ImportService.ɵfac, providedIn: 'root' });
30113
30974
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ImportService, [{
@@ -31976,6 +32837,64 @@ IgoOverlayModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
31976
32837
  }], null, null); })();
31977
32838
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoOverlayModule, { declarations: [OverlayDirective], exports: [OverlayDirective] }); })();
31978
32839
 
32840
+ /*
32841
+ * The MIT License (MIT)
32842
+ *
32843
+ * Copyright (c) 2016-2017 Dan "Ducky" Little
32844
+ *
32845
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
32846
+ * of this software and associated documentation files (the "Software"), to deal
32847
+ * in the Software without restriction, including without limitation the rights
32848
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
32849
+ * copies of the Software, and to permit persons to whom the Software is
32850
+ * furnished to do so, subject to the following conditions:
32851
+ *
32852
+ * The above copyright notice and this permission notice shall be included in all
32853
+ * copies or substantial portions of the Software.
32854
+ *
32855
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
32856
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
32857
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32858
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
32859
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
32860
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32861
+ * SOFTWARE.
32862
+ */
32863
+ function jsGeoPdfPlugin(jsPDFAPI) {
32864
+ const setGeoArea = function (pdfExt, geoExt) {
32865
+ const bbox = pdfExt.join(' ');
32866
+ // the ordering may seem odd here but PDF
32867
+ // flips the Y axis upside down and this accounts for that
32868
+ // change.
32869
+ const minx = geoExt[0];
32870
+ const maxx = geoExt[2];
32871
+ const maxy = geoExt[1];
32872
+ const miny = geoExt[3];
32873
+ const bounds = [miny, minx, maxy, minx, maxy, maxx, miny, maxx].join(' ');
32874
+ const bbox_obj = this.internal.newAdditionalObject();
32875
+ const bounds_obj = this.internal.newAdditionalObject();
32876
+ const proj_obj = this.internal.newAdditionalObject();
32877
+ proj_obj.content = '<< /EPSG 3857 /Type /PROJCS /WKT (PROJCS["WGS_1984_Web_Mercator_Auxiliary_Sphere"' +
32878
+ ',+GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0]' +
32879
+ ',UNIT["Degree",0.017453292519943295]],PROJECTION["Mercator_Auxiliary_Sphere"],PARAMETER["False_Easting",0.0]' +
32880
+ ',PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0]' +
32881
+ ',PARAMETER["Auxiliary_Sphere_Type",0.0],UNIT["Meter",1.0]]) >>';
32882
+ bounds_obj.content = '<< /Bounds [ 0 1 0 0 1 0 1 1 ] /GCS ' +
32883
+ proj_obj.objId + ' 0 R /GPTS [ ' + bounds + ' ] /LPTS [ 0 1 0 0 1 0 1 1 ] /Subtype /GEO /Type /Measure >>';
32884
+ bbox_obj.content = '<< /BBox [ ' + bbox + ' ] /Measure ' + bounds_obj.objId + ' 0 R /Name (Layer) /Type /Viewport >>';
32885
+ const title_obj = this.internal.newAdditionalObject();
32886
+ const date = new Date().toLocaleDateString('en-CA');
32887
+ title_obj.content = '<< /Name IGO2 /Type OCG /Date ' + date + ' >>';
32888
+ return bbox_obj.objId;
32889
+ };
32890
+ jsPDFAPI.setGeoArea = function (pdfExt, geoExt) {
32891
+ this.internal.events.subscribe('putPage', function () {
32892
+ const bbox_id = setGeoArea.call(this, pdfExt, geoExt);
32893
+ this.internal.write('/VP [ ' + bbox_id + ' 0 R ]');
32894
+ });
32895
+ };
32896
+ }
32897
+
31979
32898
  class PrintService {
31980
32899
  constructor(http, messageService, activityService, languageService, configService) {
31981
32900
  this.http = http;
@@ -31983,6 +32902,15 @@ class PrintService {
31983
32902
  this.activityService = activityService;
31984
32903
  this.languageService = languageService;
31985
32904
  this.configService = configService;
32905
+ this.TEXTPDFFONT = {
32906
+ titleFont: 'Times',
32907
+ titleFontStyle: 'bold',
32908
+ subtitleFont: 'Times',
32909
+ subtitleFontStyle: 'bold',
32910
+ commentFont: 'courier',
32911
+ commentFontStyle: 'normal',
32912
+ commentFontSize: 16
32913
+ };
31986
32914
  }
31987
32915
  print(map, options) {
31988
32916
  const status$ = new Subject();
@@ -31991,9 +32919,11 @@ class PrintService {
31991
32919
  const orientation = options.orientation;
31992
32920
  const legendPostion = options.legendPosition;
31993
32921
  this.activityId = this.activityService.register();
31994
- const doc = new jspdf({
32922
+ jsGeoPdfPlugin(jsPDF.API);
32923
+ const doc = new jsPDF({
31995
32924
  orientation,
31996
- format: paperFormat.toLowerCase()
32925
+ format: paperFormat.toLowerCase(),
32926
+ unit: 'mm' // default
31997
32927
  });
31998
32928
  const dimensions = [
31999
32929
  doc.internal.pageSize.width,
@@ -32003,17 +32933,21 @@ class PrintService {
32003
32933
  const width = dimensions[0] - margins[3] - margins[1];
32004
32934
  const height = dimensions[1] - margins[0] - margins[2];
32005
32935
  const size = [width, height];
32006
- let titleSizeResults = [0, 0];
32936
+ let titleSizes;
32937
+ let subtitleSizes;
32938
+ // PDF title
32007
32939
  if (options.title !== undefined) {
32008
- titleSizeResults = this.getTitleSize(options.title, width, height, doc); // return : size(pt) and left margin (mm)
32009
- this.addTitle(doc, options.title, titleSizeResults[0], margins[3] + titleSizeResults[1], titleSizeResults[0] * (25.4 / 72));
32940
+ const fontSizeInPt = Math.round(2 * (height + 145) * 0.05) / 2; //calculate the fontSize title from the page height.
32941
+ titleSizes = this.getTextPdfObjectSizeAndMarg(options.title, margins, this.TEXTPDFFONT.titleFont, fontSizeInPt, this.TEXTPDFFONT.titleFontStyle, doc);
32942
+ this.addTextInPdfDoc(doc, options.title, this.TEXTPDFFONT.titleFont, this.TEXTPDFFONT.titleFontStyle, titleSizes.fontSize, titleSizes.marginLeft + margins[3], margins[0]);
32943
+ margins[0] = titleSizes.height + margins[0]; // cumulative margin top for next elem to place in pdf doc
32010
32944
  }
32945
+ // PDF subtitle
32011
32946
  if (options.subtitle !== undefined) {
32012
- let subtitleSizeResult = 0;
32013
- const titleH = titleSizeResults[0];
32014
- subtitleSizeResult = this.getSubTitleSize(options.subtitle, width, height, doc); // return : size(pt) and left margin (mm)
32015
- this.addSubTitle(doc, options.subtitle, titleH * 0.7, margins[3] + subtitleSizeResult, titleH * 1.7 * (25.4 / 72));
32016
- margins[0] = margins[0] + titleSizeResults[0] * 0.7 * (25.4 / 72);
32947
+ subtitleSizes = this.getTextPdfObjectSizeAndMarg(options.subtitle, margins, this.TEXTPDFFONT.subtitleFont, titleSizes.fontSize * 0.7, // 70% size of title
32948
+ this.TEXTPDFFONT.subtitleFontStyle, doc);
32949
+ this.addTextInPdfDoc(doc, options.subtitle, this.TEXTPDFFONT.subtitleFont, this.TEXTPDFFONT.subtitleFontStyle, subtitleSizes.fontSize, subtitleSizes.marginLeft + margins[3], margins[0]);
32950
+ margins[0] += 5; // cumulative marg top for next elem to place in pdf doc. 5 is a fix it could be adjust
32017
32951
  }
32018
32952
  if (options.showProjection === true || options.showScale === true) {
32019
32953
  this.addProjScale(doc, map, resolution, options.showProjection, options.showScale);
@@ -32025,6 +32959,10 @@ class PrintService {
32025
32959
  if (status === SubjectStatus.Done) {
32026
32960
  await this.addScale(doc, map, margins);
32027
32961
  await this.handleMeasureLayer(doc, map, margins);
32962
+ const width = this.imgSizeAdded[0];
32963
+ const height = this.imgSizeAdded[1];
32964
+ const res = 1;
32965
+ this.addGeoRef(doc, map, width, height, res, margins);
32028
32966
  if (options.legendPosition !== 'none') {
32029
32967
  if (['topleft', 'topright', 'bottomleft', 'bottomright'].indexOf(options.legendPosition) > -1) {
32030
32968
  await this.addLegendSamePage(doc, map, margins, resolution, options.legendPosition);
@@ -32044,6 +32982,20 @@ class PrintService {
32044
32982
  });
32045
32983
  return status$;
32046
32984
  }
32985
+ // ref GeoMoose https://github.com/geomoose/gm3/tree/main/src/gm3/components/print
32986
+ addGeoRef(doc, map, width, height, resolution, margins) {
32987
+ const unit = 'mm';
32988
+ const docHeight = doc.internal.pageSize.getHeight();
32989
+ // x,y = margin left-bottom corner for img in pdf doc
32990
+ const x = margins[3];
32991
+ const y = docHeight - margins[0] - height;
32992
+ let pdf_extents = [x, y, x + width, y + height];
32993
+ for (let i = 0; i < pdf_extents.length; i++) {
32994
+ pdf_extents[i] = this.pdf_units2points(pdf_extents[i], unit);
32995
+ }
32996
+ const mapExtent = map.viewController.getExtent('EPSG:3857');
32997
+ doc.setGeoArea(pdf_extents, mapExtent);
32998
+ }
32047
32999
  /**
32048
33000
  * Add measure overlay on the map on the document when the measure layer is present
32049
33001
  * @param doc - Pdf document where measure tooltip will be added
@@ -32163,66 +33115,46 @@ class PrintService {
32163
33115
  }
32164
33116
  return status$;
32165
33117
  }
32166
- getTitleSize(title, pageWidth, pageHeight, doc) {
33118
+ getTextPdfObjectSizeAndMarg(text, margins, font, fontSizeInPt, fontStyle, doc) {
32167
33119
  const pdfResolution = 96;
32168
- const titleSize = Math.round(2 * (pageHeight + 145) * 0.05) / 2;
32169
- doc.setFont('Times', 'bold');
32170
- const width = doc.getTextWidth(title);
32171
- const titleWidth = doc.getStringUnitWidth(title) * titleSize / doc.internal.scaleFactor;
32172
- const titleTailleMinimale = Math.round(2 * (pageHeight + 150) * 0.037) / 2;
32173
- let titleFontSize = 0;
32174
- let titleMarginLeft;
32175
- if (titleWidth >= (pageWidth)) {
32176
- titleMarginLeft = 0;
32177
- titleFontSize = Math.round(((pageWidth / title.length) * pdfResolution) / 25.4);
32178
- // If the formula to find the font size gives below the defined minimum size
32179
- if (titleFontSize < titleTailleMinimale) {
32180
- titleFontSize = titleTailleMinimale;
32181
- }
33120
+ const docWidth = doc.internal.pageSize.getWidth();
33121
+ const pageWidth = docWidth - margins[1] - margins[3];
33122
+ // important to set it first, the textDimension change when font change!
33123
+ doc.setFont(font, fontStyle);
33124
+ doc.setFontSize(fontSizeInPt);
33125
+ let textDimensions = doc.getTextDimensions(text);
33126
+ let textMarginLeft;
33127
+ if (textDimensions.w > pageWidth) {
33128
+ // if the text is to long, reduce fontSize 70% and the overflow with be cut in print...
33129
+ textMarginLeft = 0;
33130
+ fontSizeInPt = fontSizeInPt * 0.7;
33131
+ doc.setFontSize(fontSizeInPt);
33132
+ textDimensions = doc.getTextDimensions(text);
32182
33133
  }
32183
33134
  else {
32184
- titleMarginLeft = (pageWidth - titleWidth) / 2;
32185
- titleFontSize = titleSize;
33135
+ textMarginLeft = (pageWidth - textDimensions.w) / 2;
32186
33136
  }
32187
- return [titleFontSize, titleMarginLeft];
32188
- }
32189
- getSubTitleSize(subtitle, pageWidth, pageHeight, doc) {
32190
- const subtitleSize = 0.7 * Math.round(2 * (pageHeight + 145) * 0.05) / 2; // 70% of the title's font size
32191
- doc.setFont('Times', 'bold');
32192
- const subtitleWidth = doc.getStringUnitWidth(subtitle) * subtitleSize / doc.internal.scaleFactor;
32193
- let subtitleMarginLeft;
32194
- if (subtitleWidth >= (pageWidth)) {
32195
- subtitleMarginLeft = 0;
32196
- }
32197
- else {
32198
- subtitleMarginLeft = (pageWidth - subtitleWidth) / 2;
32199
- }
32200
- return subtitleMarginLeft;
32201
- }
32202
- addTitle(doc, title, titleFontSize, titleMarginLeft, titleMarginTop) {
32203
- doc.setFont('Times', 'bold');
32204
- doc.setFontSize(titleFontSize);
32205
- doc.text(title, titleMarginLeft, titleMarginTop);
32206
- }
32207
- addSubTitle(doc, subtitle, subtitleFontSize, subtitleMarginLeft, subtitleMarginTop) {
32208
- doc.setFont('Times', 'bold');
32209
- doc.setFontSize(subtitleFontSize);
32210
- doc.text(subtitle, subtitleMarginLeft, subtitleMarginTop);
33137
+ return {
33138
+ 'fontSize': fontSizeInPt,
33139
+ 'marginLeft': textMarginLeft,
33140
+ 'height': textDimensions.h
33141
+ };
32211
33142
  }
32212
33143
  /**
32213
33144
  * Add comment to the document
32214
33145
  * * @param doc - pdf document
32215
33146
  * * @param comment - Comment to add in the document
32216
- * * @param size - Size of the document
32217
33147
  */
32218
33148
  addComment(doc, comment) {
32219
- const commentSize = 16;
32220
- const commentMarginLeft = 20;
32221
- const marginBottom = 5;
32222
- const heightPixels = doc.internal.pageSize.height - marginBottom;
32223
- doc.setFont('courier');
32224
- doc.setFontSize(commentSize);
32225
- doc.text(comment, commentMarginLeft, heightPixels);
33149
+ const commentMarginLeft = 20; //margin left and bottom is fix
33150
+ const commentMarginBottom = 5;
33151
+ const marginTop = doc.internal.pageSize.height - commentMarginBottom;
33152
+ this.addTextInPdfDoc(doc, comment, this.TEXTPDFFONT.commentFont, this.TEXTPDFFONT.commentFontStyle, this.TEXTPDFFONT.commentFontSize, commentMarginLeft, marginTop);
33153
+ }
33154
+ addTextInPdfDoc(doc, textToAdd, textFont, textFontStyle, textFontSize, textMarginLeft, textMarginTop) {
33155
+ doc.setFont(textFont, textFontStyle);
33156
+ doc.setFontSize(textFontSize);
33157
+ doc.text(textToAdd, textMarginLeft, textMarginTop);
32226
33158
  }
32227
33159
  /**
32228
33160
  * Add projection and/or scale to the document
@@ -32394,9 +33326,14 @@ class PrintService {
32394
33326
  image = canvas.toDataURL('image/png');
32395
33327
  }
32396
33328
  if (image !== undefined) {
33329
+ if (image.length < 20) { // img is corrupt todo: fix addScale in mobile make a corrupt img
33330
+ console.log('Warning: An image cannot be print in pdf file');
33331
+ return;
33332
+ }
32397
33333
  const imageSize = this.getImageSizeToFitPdf(doc, canvas, margins);
32398
33334
  doc.addImage(image, 'PNG', margins[3], margins[0], imageSize[0], imageSize[1]);
32399
33335
  doc.rect(margins[3], margins[0], imageSize[0], imageSize[1]);
33336
+ this.imgSizeAdded = imageSize; // keep img size for georef later
32400
33337
  }
32401
33338
  }
32402
33339
  // TODO fix printing with image resolution
@@ -32630,7 +33567,7 @@ class PrintService {
32630
33567
  * @param doc - Document to save
32631
33568
  */
32632
33569
  async saveDoc(doc) {
32633
- await doc.save('map.pdf', { returnPromise: true });
33570
+ await doc.save('map_georef.pdf', { returnPromise: true });
32634
33571
  }
32635
33572
  /**
32636
33573
  * Calculate the best Image size to fit in pdf
@@ -32642,8 +33579,8 @@ class PrintService {
32642
33579
  // Define variable to calculate best size to fit in one page
32643
33580
  const pageHeight = doc.internal.pageSize.getHeight() - (margins[0] + margins[2]);
32644
33581
  const pageWidth = doc.internal.pageSize.getWidth() - (margins[1] + margins[3]);
32645
- const canHeight = canvas.height;
32646
- const canWidth = canvas.width;
33582
+ const canHeight = this.pdf_units2points(canvas.height, 'mm');
33583
+ const canWidth = this.pdf_units2points(canvas.width, 'mm');
32647
33584
  const heightRatio = canHeight / pageHeight;
32648
33585
  const widthRatio = canWidth / pageWidth;
32649
33586
  const maxRatio = heightRatio > widthRatio ? heightRatio : widthRatio;
@@ -32759,6 +33696,41 @@ class PrintService {
32759
33696
  delete that.zipFile;
32760
33697
  });
32761
33698
  }
33699
+ pdf_units2points(n, unit) {
33700
+ let k = 1;
33701
+ // this code is borrowed from jsPDF
33702
+ // as it does not expose a public API
33703
+ // for converting units to points.
33704
+ switch (unit) {
33705
+ case 'pt':
33706
+ k = 1;
33707
+ break;
33708
+ case 'mm':
33709
+ k = 72 / 25.4;
33710
+ break;
33711
+ case 'cm':
33712
+ k = 72 / 2.54;
33713
+ break;
33714
+ case 'in':
33715
+ k = 72;
33716
+ break;
33717
+ case 'px':
33718
+ k = 96 / 72;
33719
+ break;
33720
+ case 'pc':
33721
+ k = 12;
33722
+ break;
33723
+ case 'em':
33724
+ k = 12;
33725
+ break;
33726
+ case 'ex':
33727
+ k = 6;
33728
+ break;
33729
+ default:
33730
+ throw new Error('Invalid unit: ' + unit);
33731
+ }
33732
+ return n * k;
33733
+ }
32762
33734
  }
32763
33735
  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)); };
32764
33736
  PrintService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PrintService, factory: PrintService.ɵfac, providedIn: 'root' });
@@ -37110,7 +38082,7 @@ SearchSettingsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sea
37110
38082
  i0.ɵɵproperty("ngForOf", ctx.getSearchSources());
37111
38083
  i0.ɵɵadvance(1);
37112
38084
  i0.ɵɵproperty("ngIf", ctx.hasPointerReverseSearchSource && !ctx.isTouchScreen);
37113
- } }, 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 });
38085
+ } }, 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 });
37114
38086
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchSettingsComponent, [{
37115
38087
  type: Component,
37116
38088
  args: [{ selector: 'igo-search-settings', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"igo-search-settings\">\r\n\r\n <button\r\n mat-icon-button\r\n class=\"igo-search-settings-button\"\r\n color=\"primary\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.search.menu.tooltip' | translate\"\r\n [matMenuTriggerFor]=\"searchSettingsMenu\">\r\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\r\n </button>\r\n <mat-menu\r\n #searchSettingsMenu=\"matMenu\"\r\n class=\"no-border-radius\">\r\n <div class=\"checkAllButton\" *ngIf=\"getSearchSources().length>4\">\r\n <button mat-raised-button\r\n (click)=\"checkUncheckAllSources($event)\">{{!searchSourcesAllEnabled ? ('igo.geo.search.searchSources.unselectAll' | translate): ('igo.geo.search.searchSources.selectAll' | translate)}}</button>\r\n </div>\r\n <ng-container *ngFor=\"let source of getSearchSources()\">\r\n <span class=\"igo-search-settings-search-source\">\r\n <mat-checkbox\r\n class=\"igo-search-settings-checkbox\"\r\n [checked]=\"source.enabled\"\r\n [value]=\"source\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"onCheckSearchSource($event, source)\">\r\n </mat-checkbox>\r\n <button *ngIf=\"source.settings.length\u00A0>\u00A00\"\r\n [matMenuTriggerFor]=\"sub_menu\"\r\n mat-menu-item>{{source.title}}\r\n </button>\r\n <button\r\n mat-menu-item\r\n *ngIf=\"source.settings.length\u00A0===\u00A00\">\r\n {{source.title}}\r\n </button>\r\n </span>\r\n <mat-menu #sub_menu=\"matMenu\">\r\n <ng-container *ngFor=\"let setting of source.settings\">\r\n <button\r\n mat-menu-item\r\n [matMenuTriggerFor]=\"test_sub_menu\">\r\n {{'igo.geo.search.searchSources.settings.'+ setting.title | translate}}\r\n </button>\r\n <mat-menu #test_sub_menu=\"matMenu\"\r\n [ngSwitch]=\"setting.type\"\r\n yPosition=\"above\">\r\n <span *ngSwitchCase=\"'radiobutton'\">\r\n <mat-radio-group\r\n class=\"igo-search-settings-radio-group\"\r\n [value]=\"setting\">\r\n <mat-radio-button *ngFor=\"let settingValue of setting.values\"\r\n class=\"mat-typography\"\r\n [value]=\"settingValue\"\r\n [matTooltip]=\"getAvailableHashtagsValues(settingValue)\"\r\n [checked]=\"settingValue.enabled\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"settingsValueCheckedRadioButton($event, source, setting, settingValue)\">\r\n {{settingValue.title | translate}}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </span>\r\n <span *ngSwitchCase=\"'checkbox'\">\r\n <div class=\"checkAllButton\" *ngIf=\"setting.values.length\u00A0>\u00A03\">\r\n <button mat-raised-button\r\n (click)=\"checkUncheckAll($event, source, setting)\">{{setting.allEnabled || setting.allEnabled === undefined ? ('igo.geo.search.searchSources.settings.unselectAll' | translate): ('igo.geo.search.searchSources.settings.selectAll' | translate)}}</button>\r\n </div>\r\n <mat-checkbox *ngFor=\"let settingValue of getAvailableValues(setting)\"\r\n class=\"mat-menu-item\"\r\n [style.display]=\"displayBlock\"\r\n [checked]=\"settingValue.enabled\"\r\n [value]=\"setting\"\r\n [matTooltip]=\"getAvailableHashtagsValues(settingValue)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"settingsValueCheckedCheckbox($event, source, setting, settingValue)\">\r\n {{settingValue.title | translate}}\r\n </mat-checkbox>\r\n </span>\r\n </mat-menu>\r\n </ng-container>\r\n </mat-menu>\r\n </ng-container>\r\n <span *ngIf=\"hasPointerReverseSearchSource && !isTouchScreen\">\r\n <mat-divider></mat-divider>\r\n <span class=\"pointer-summary-slide-toggle-container mat-typography\">\r\n <mat-slide-toggle class=\"pointer-summary-option\" (change)=\"changePointerReverseSearch($event)\" tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\" [matTooltip]=\"'igo.geo.search.pointerSearchSummary.tooltip' | translate\"\r\n (click)=\"$event.stopPropagation()\" [checked]=\"pointerSummaryEnabled\" [labelPosition]=\"'after'\">\r\n {{'igo.geo.search.pointerSearchSummary.title' | translate}}\r\n </mat-slide-toggle>\r\n <mat-slide-toggle class=\"pointer-summary-option\" (change)=\"changeSearchResultsGeometry($event)\" tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\" [matTooltip]=\"'igo.geo.search.searchResultsGeometry.tooltip' | translate\"\r\n (click)=\"$event.stopPropagation()\" [checked]=\"searchResultsGeometryEnabled\" [labelPosition]=\"'after'\">\r\n {{'igo.geo.search.searchResultsGeometry.title' | translate}}\r\n </mat-slide-toggle>\r\n </span>\r\n </span>\r\n </mat-menu>\r\n</div>\r\n", styles: [".checkAllButton{text-align:center;padding:0 5px}.igo-search-settings-button ::ng-deep div.mat-button-ripple-round{border-radius:0}.igo-search-settings-radio-group{display:flex;flex-direction:column}.igo-search-settings-radio-group mat-radio-button{margin:5px}.igo-search-settings-checkbox mat-radio-button{display:flex}.igo-search-settings-search-source{display:flex;width:100%}.igo-search-settings-search-source mat-checkbox{display:flex;margin-left:5px;margin-right:5px}.pointer-summary-option{display:block;margin-right:10px;margin-bottom:15px}.pointer-summary-slide-toggle-container{overflow-x:hidden}.pointer-summary-slide-toggle-container mat-slide-toggle{margin:10px}\n"] }]
@@ -41103,138 +42075,6 @@ function provideOsrmDirectionsSource() {
41103
42075
  };
41104
42076
  }
41105
42077
 
41106
- /**
41107
- * Cadastre search source
41108
- */
41109
- class CadastreSearchSource extends SearchSource {
41110
- constructor(http, languageService, storageService, options) {
41111
- super(options, storageService);
41112
- this.http = http;
41113
- this.languageService = languageService;
41114
- }
41115
- getId() {
41116
- return CadastreSearchSource.id;
41117
- }
41118
- getType() {
41119
- return CadastreSearchSource.type;
41120
- }
41121
- /*
41122
- * Source : https://wiki.openstreetmap.org/wiki/Key:amenity
41123
- */
41124
- getDefaultOptions() {
41125
- return {
41126
- title: 'Cadastre (Québec)',
41127
- searchUrl: 'https://carto.cptaq.gouv.qc.ca/php/find_lot_v1.php?'
41128
- };
41129
- }
41130
- /**
41131
- * Search a place by name
41132
- * @param term Place name
41133
- * @returns Observable of <SearchResult<Feature>[]
41134
- */
41135
- search(term, options) {
41136
- term = term.endsWith(',') ? term.slice(0, -1) : term;
41137
- term = term.startsWith(',') ? term.substr(1) : term;
41138
- term = term.replace(/ /g, '');
41139
- const params = this.computeSearchRequestParams(term, options || {});
41140
- if (!params.get('numero') || !params.get('numero').match(/^[0-9,]+$/g)) {
41141
- return of([]);
41142
- }
41143
- return this.http
41144
- .get(this.searchUrl, { params, responseType: 'text' })
41145
- .pipe(map((response) => this.extractResults(response, term)));
41146
- }
41147
- computeSearchRequestParams(term, options) {
41148
- return new HttpParams({
41149
- fromObject: Object.assign({
41150
- numero: term,
41151
- epsg: '4326'
41152
- }, this.params, options.params || {})
41153
- });
41154
- }
41155
- extractResults(response, term) {
41156
- return response
41157
- .split('<br />')
41158
- .filter((lot) => lot.length > 0)
41159
- .map((lot) => this.dataToResult(lot, term));
41160
- }
41161
- dataToResult(data, term) {
41162
- const lot = data.split(';');
41163
- const numero = lot[0];
41164
- const wkt = lot[7];
41165
- const geometry = this.computeGeometry(wkt);
41166
- const properties = {
41167
- NoLot: numero,
41168
- Route: '<span class="routing"> <u>' + this.languageService.translate.instant('igo.geo.seeRouting') + '</u> </span>'
41169
- };
41170
- const id = [this.getId(), 'cadastre', numero].join('.');
41171
- return {
41172
- source: this,
41173
- meta: {
41174
- dataType: FEATURE,
41175
- id,
41176
- title: numero,
41177
- score: computeTermSimilarity(term.trim(), numero),
41178
- icon: 'map-marker'
41179
- },
41180
- data: {
41181
- type: FEATURE,
41182
- projection: 'EPSG:4326',
41183
- geometry,
41184
- properties,
41185
- meta: {
41186
- id,
41187
- title: numero
41188
- }
41189
- }
41190
- };
41191
- }
41192
- computeGeometry(wkt) {
41193
- const feature = new olWKT().readFeature(wkt, {
41194
- dataProjection: 'EPSG:4326',
41195
- featureProjection: 'EPSG:4326'
41196
- });
41197
- return {
41198
- type: feature.getGeometry().getType(),
41199
- coordinates: feature.getGeometry().getCoordinates()
41200
- };
41201
- }
41202
- }
41203
- CadastreSearchSource.id = 'cadastre';
41204
- CadastreSearchSource.type = FEATURE;
41205
- 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')); };
41206
- CadastreSearchSource.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CadastreSearchSource, factory: CadastreSearchSource.ɵfac });
41207
- __decorate([
41208
- Cacheable({
41209
- maxCacheCount: 20
41210
- })
41211
- ], CadastreSearchSource.prototype, "search", null);
41212
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CadastreSearchSource, [{
41213
- type: Injectable
41214
- }], function () { return [{ type: i1$2.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: undefined, decorators: [{
41215
- type: Inject,
41216
- args: ['options']
41217
- }] }]; }, { search: [] }); })();
41218
-
41219
- /**
41220
- * Cadastre search source factory
41221
- * @ignore
41222
- */
41223
- function cadastreSearchSourceFactory(http, languageService, storageService, config) {
41224
- return new CadastreSearchSource(http, languageService, storageService, config.getConfig(`searchSources.${CadastreSearchSource.id}`));
41225
- }
41226
- /**
41227
- * Function that returns a provider for the Cadastre search source
41228
- */
41229
- function provideCadastreSearchSource() {
41230
- return {
41231
- provide: SearchSource,
41232
- useFactory: cadastreSearchSourceFactory,
41233
- multi: true,
41234
- deps: [HttpClient, LanguageService, StorageService, ConfigService]
41235
- };
41236
- }
41237
-
41238
42078
  /**
41239
42079
  * Nominatim search source
41240
42080
  */
@@ -41994,7 +42834,7 @@ class ConfigFileToGeoDBService {
41994
42834
  }
41995
42835
  if (currentDate >= geoData.triggerDate) {
41996
42836
  if (geoData.action === 'update') {
41997
- const insertEvent = `${geoData.source || 'automatedDataUpdate'} (${geoData.triggerDate})`;
42837
+ const insertEvent = `${geoData.source || InsertSourceInsertDBEnum.System} (${geoData.triggerDate})`;
41998
42838
  geoData.urls.map((url) => {
41999
42839
  datas$.push(this.geoDBService.getByID(url).pipe(concatMap((res) => {
42000
42840
  if (res?.insertEvent !== insertEvent) {
@@ -42003,8 +42843,31 @@ class ConfigFileToGeoDBService {
42003
42843
  .info('igo.geo.indexedDb.data-download-start', undefined, { disableTimeOut: true, progressBar: false, closeButton: true, tapToDismiss: false });
42004
42844
  firstDownload = false;
42005
42845
  }
42006
- return this.http.get(url)
42007
- .pipe(concatMap(r => this.geoDBService.update(url, url, r, 'system', insertEvent)));
42846
+ let responseType = 'json';
42847
+ const isZip = this.isZip(url);
42848
+ if (isZip) {
42849
+ responseType = 'arraybuffer';
42850
+ }
42851
+ return this.http.get(url, { responseType }).pipe(concatMap(r => {
42852
+ if (isZip) {
42853
+ const observables$ = [this.geoDBService.update(url, url, {}, InsertSourceInsertDBEnum.System, insertEvent)];
42854
+ JSZip.loadAsync(r)
42855
+ .then((zipped) => {
42856
+ zipped.forEach((relativePath) => {
42857
+ if (relativePath.toLocaleLowerCase().endsWith('.geojson')) {
42858
+ zipped.file(relativePath).async("base64").then((r) => {
42859
+ const geojson = JSON.parse(atob(r));
42860
+ const subUrl = geoData.zippedBaseUrl || '';
42861
+ const zippedUrl = subUrl + (subUrl.endsWith('/') ? '' : '/') + relativePath;
42862
+ observables$.push(this.geoDBService.update(zippedUrl, url, geojson, InsertSourceInsertDBEnum.System, insertEvent));
42863
+ });
42864
+ }
42865
+ });
42866
+ });
42867
+ return zip(observables$);
42868
+ }
42869
+ return this.geoDBService.update(url, url, r, InsertSourceInsertDBEnum.System, insertEvent);
42870
+ }));
42008
42871
  }
42009
42872
  else {
42010
42873
  return of(false);
@@ -42030,6 +42893,10 @@ class ConfigFileToGeoDBService {
42030
42893
  }
42031
42894
  });
42032
42895
  }
42896
+ isZip(value) {
42897
+ const regex = /(zip)$/;
42898
+ return typeof value === 'string' && regex.test(value.toLowerCase());
42899
+ }
42033
42900
  }
42034
42901
  ConfigFileToGeoDBService.ɵfac = function ConfigFileToGeoDBService_Factory(t) { return new (t || ConfigFileToGeoDBService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(GeoDBService), i0.ɵɵinject(i2$1.MessageService)); };
42035
42902
  ConfigFileToGeoDBService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ConfigFileToGeoDBService, factory: ConfigFileToGeoDBService.ɵfac, providedIn: 'root' });
@@ -42048,5 +42915,5 @@ ConfigFileToGeoDBService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token:
42048
42915
  * Generated bundle index. Do not edit.
42049
42916
  */
42050
42917
 
42051
- 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 };
42918
+ 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 };
42052
42919
  //# sourceMappingURL=igo2-geo.mjs.map