@igo2/integration 20.1.0-next.13 → 20.1.0-next.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/igo2-integration.mjs +57 -50
- package/fesm2022/igo2-integration.mjs.map +1 -1
- package/index.d.ts +4 -6
- package/package.json +4 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ChangeDetectorRef, model, Input, Component, CUSTOM_ELEMENTS_SCHEMA, NgModule, Injectable, input, ChangeDetectionStrategy, signal, viewChild, HostListener, Directive, ElementRef } from '@angular/core';
|
|
2
|
+
import { inject, ChangeDetectorRef, model, Input, Component, CUSTOM_ELEMENTS_SCHEMA, NgModule, Injectable, input, ChangeDetectionStrategy, signal, viewChild, HostListener, Directive, ElementRef, DestroyRef } from '@angular/core';
|
|
3
3
|
import { __decorate, __metadata } from 'tslib';
|
|
4
4
|
import { HttpClient } from '@angular/common/http';
|
|
5
5
|
import * as i1 from '@angular/material/button';
|
|
@@ -25,9 +25,9 @@ import * as i1$1 from '@igo2/geo';
|
|
|
25
25
|
import { MapService, ProjectionService, IgoMap, CatalogService, CatalogBrowserComponent, generateIdFromSourceOptions, isLayerItemOptions, CatalogItemType, CatalogLibraryComponent, StopsStore, StopsFeatureStore, RoutesFeatureStore, StepsFeatureStore, IgoDirectionsModule, FeatureStore, DrawComponent, isLayerItem, OgcFilterableItemComponent, TimeFilterItemComponent, OgcFilterableListComponent, OgcFilterableListBindingDirective, FeatureStoreSelectionStrategy, FeatureMotion, mapExtentStrategyActiveToolTip, noElementSelected, OgcFilterWidget, InteractiveSelectionFormWidget, WfsWorkspace, FeatureWorkspace, EditionWorkspace, SpatialFilterService, LayerService, SpatialFilterItemType, MeasureLengthUnit, SpatialFilterType, createOverlayMarkerStyle, featureToOl, moveToOlFeatures, RADIUS_NAME, SpatialFilterTypeComponent, SpatialFilterItemComponent, FeatureDetailsComponent, TimeFilterListComponent, TimeFilterListBindingDirective, isBaseLayer, ImportExportComponent, formatScale, zoneMtm, zoneUtm, computeProjectionsConstraints, SearchSourceService, LayerListControlsEnum, sourceCanSearch, LayerViewerComponent, ExportButtonComponent, OgcFilterButtonComponent, TimeFilterButtonComponent, TrackFeatureButtonComponent, MetadataButtonComponent, LayerLegendListComponent, LayerLegendListBindingDirective, roundCoordTo, featureFromOl, measureOlGeometryLength, FEATURE, VectorLayer, StyleModalLayerButtonComponent, MeasurerComponent, PrintComponent, SearchBarComponent, getCommonVectorStyle, computeOlFeaturesExtent, featuresAreOutOfView, featuresAreTooDeepInView, getCommonVectorSelectedStyle, SearchResultsComponent, SearchResultAddButtonComponent, isLayerGroup, PropertyTypeDetectorService, CapabilitiesService, GeoPropertiesStrategy } from '@igo2/geo';
|
|
26
26
|
import { take, switchMap, concatAll, map, toArray, skipWhile, takeUntil, tap, debounceTime, skip } from 'rxjs/operators';
|
|
27
27
|
import { StorageService, StorageScope, StorageServiceEventEnum } from '@igo2/core/storage';
|
|
28
|
-
import { ContextService, ContextEditComponent, ContextListComponent, ContextPermissionsComponent,
|
|
29
|
-
import { createExcelWorkBook, addExcelSheetToWorkBook, writeExcelFile, uuid, NumberUtils } from '@igo2/utils';
|
|
30
|
-
import { toSignal } from '@angular/core/rxjs-interop';
|
|
28
|
+
import { ContextService, ContextEditComponent, ContextListComponent, ContextPermissionsComponent, ShareMapComponent, ContextImportExportComponent } from '@igo2/context';
|
|
29
|
+
import { createExcelWorkBook, addExcelSheetToWorkBook, writeExcelFile, ObjectUtils, uuid, NumberUtils } from '@igo2/utils';
|
|
30
|
+
import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
31
31
|
import { MediaService, Media } from '@igo2/core/media';
|
|
32
32
|
import { MessageService, IgoMessageModule } from '@igo2/core/message';
|
|
33
33
|
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
@@ -135,18 +135,24 @@ let AboutToolComponent = class AboutToolComponent {
|
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
openGuide(guide) {
|
|
138
|
-
this.loading = true;
|
|
139
138
|
const url = guide
|
|
140
|
-
? this.baseUrlGuide + guide
|
|
141
|
-
: this.baseUrlGuide + this.trainingGuideURLs()[0]
|
|
139
|
+
? this.baseUrlGuide + guide
|
|
140
|
+
: this.baseUrlGuide + this.trainingGuideURLs()[0];
|
|
141
|
+
this.loading = true;
|
|
142
142
|
this.http
|
|
143
143
|
.get(url, {
|
|
144
144
|
responseType: 'blob'
|
|
145
145
|
})
|
|
146
|
-
.subscribe(
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
146
|
+
.subscribe({
|
|
147
|
+
next: (blob) => {
|
|
148
|
+
this.loading = false;
|
|
149
|
+
const blobUrl = URL.createObjectURL(blob);
|
|
150
|
+
window.open(blobUrl, '_blank');
|
|
151
|
+
// To avoid memory leak we need to revoke the object, 60 seconds to handle larger object like video
|
|
152
|
+
setTimeout(() => URL.revokeObjectURL(blobUrl), 60000);
|
|
153
|
+
this.cdRef.markForCheck();
|
|
154
|
+
},
|
|
155
|
+
error: () => (this.loading = false)
|
|
150
156
|
});
|
|
151
157
|
}
|
|
152
158
|
formatFileName(name) {
|
|
@@ -156,7 +162,7 @@ let AboutToolComponent = class AboutToolComponent {
|
|
|
156
162
|
return name;
|
|
157
163
|
}
|
|
158
164
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AboutToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
159
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: AboutToolComponent, isStandalone: true, selector: "igo-about-tool", inputs: { headerHtml: { classPropertyName: "headerHtml", publicName: "headerHtml", isSignal: false, isRequired: false, transformFunction: null }, html: { classPropertyName: "html", publicName: "html", isSignal: false, isRequired: false, transformFunction: null }, discoverTitleInLocale: { classPropertyName: "discoverTitleInLocale", publicName: "discoverTitleInLocale", isSignal: false, isRequired: false, transformFunction: null }, trainingGuideURLs: { classPropertyName: "trainingGuideURLs", publicName: "trainingGuideURLs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { trainingGuideURLs: "trainingGuideURLsChange" }, ngImport: i0, template: "@if (
|
|
165
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: AboutToolComponent, isStandalone: true, selector: "igo-about-tool", inputs: { headerHtml: { classPropertyName: "headerHtml", publicName: "headerHtml", isSignal: false, isRequired: false, transformFunction: null }, html: { classPropertyName: "html", publicName: "html", isSignal: false, isRequired: false, transformFunction: null }, discoverTitleInLocale: { classPropertyName: "discoverTitleInLocale", publicName: "discoverTitleInLocale", isSignal: false, isRequired: false, transformFunction: null }, trainingGuideURLs: { classPropertyName: "trainingGuideURLs", publicName: "trainingGuideURLs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { trainingGuideURLs: "trainingGuideURLsChange" }, ngImport: i0, template: "@if (auth.authenticated && trainingGuideURLs()?.length === 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n (click)=\"openGuide()\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n@if (auth.authenticated && (trainingGuideURLs()?.length ?? 0) > 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n [matMenuTriggerFor]=\"menu\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n<mat-menu #menu=\"matMenu\">\n @for (guide of trainingGuideURLs(); track guide) {\n <button mat-menu-item (click)=\"openGuide(guide)\">\n {{ formatFileName(guide) }}\n </button>\n }\n</mat-menu>\n\n@if (headerHtml !== '') {\n <igo-custom-html [html]=\"headerHtml | translate\" />\n}\n\n<igo-custom-html [html]=\"html | translate: { version: effectiveVersion }\" />\n", styles: [".training-guide-button{margin:16px 0 0 16px;background-color:#1976d2;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: CustomHtmlComponent, selector: "igo-custom-html", inputs: ["html"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] });
|
|
160
166
|
};
|
|
161
167
|
AboutToolComponent = __decorate([
|
|
162
168
|
ToolComponent({
|
|
@@ -175,7 +181,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
175
181
|
MatMenuModule,
|
|
176
182
|
CustomHtmlComponent,
|
|
177
183
|
IgoLanguageModule
|
|
178
|
-
], template: "@if (
|
|
184
|
+
], template: "@if (auth.authenticated && trainingGuideURLs()?.length === 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n (click)=\"openGuide()\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n@if (auth.authenticated && (trainingGuideURLs()?.length ?? 0) > 1) {\n <button\n class=\"training-guide-button\"\n matButton=\"elevated\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"loading\"\n [matTooltip]=\"'igo.integration.aboutTool.trainingGuideTooltip' | translate\"\n [matMenuTriggerFor]=\"menu\"\n >\n {{ 'igo.integration.aboutTool.trainingGuide' | translate }}\n <mat-icon>description</mat-icon>\n </button>\n}\n\n<mat-menu #menu=\"matMenu\">\n @for (guide of trainingGuideURLs(); track guide) {\n <button mat-menu-item (click)=\"openGuide(guide)\">\n {{ formatFileName(guide) }}\n </button>\n }\n</mat-menu>\n\n@if (headerHtml !== '') {\n <igo-custom-html [html]=\"headerHtml | translate\" />\n}\n\n<igo-custom-html [html]=\"html | translate: { version: effectiveVersion }\" />\n", styles: [".training-guide-button{margin:16px 0 0 16px;background-color:#1976d2;color:#fff}\n"] }]
|
|
179
185
|
}], ctorParameters: () => [], propDecorators: { headerHtml: [{
|
|
180
186
|
type: Input
|
|
181
187
|
}], html: [{
|
|
@@ -891,7 +897,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
891
897
|
|
|
892
898
|
let ContextPermissionManagerToolComponent = class ContextPermissionManagerToolComponent {
|
|
893
899
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ContextPermissionManagerToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
894
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: ContextPermissionManagerToolComponent, isStandalone: true, selector: "igo-context-permission-manager-tool", ngImport: i0, template: "<igo-context-permissions
|
|
900
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.18", type: ContextPermissionManagerToolComponent, isStandalone: true, selector: "igo-context-permission-manager-tool", ngImport: i0, template: "<igo-context-permissions />\n", dependencies: [{ kind: "component", type: ContextPermissionsComponent, selector: "igo-context-permissions", inputs: ["context", "permissions"], outputs: ["contextChange", "permissionsChange"] }] });
|
|
895
901
|
};
|
|
896
902
|
ContextPermissionManagerToolComponent = __decorate([
|
|
897
903
|
ToolComponent({
|
|
@@ -903,7 +909,7 @@ ContextPermissionManagerToolComponent = __decorate([
|
|
|
903
909
|
], ContextPermissionManagerToolComponent);
|
|
904
910
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: ContextPermissionManagerToolComponent, decorators: [{
|
|
905
911
|
type: Component,
|
|
906
|
-
args: [{ selector: 'igo-context-permission-manager-tool', imports: [ContextPermissionsComponent
|
|
912
|
+
args: [{ selector: 'igo-context-permission-manager-tool', imports: [ContextPermissionsComponent], template: "<igo-context-permissions />\n" }]
|
|
907
913
|
}] });
|
|
908
914
|
|
|
909
915
|
/**
|
|
@@ -997,7 +1003,6 @@ class ContextState {
|
|
|
997
1003
|
contextService = inject(ContextService);
|
|
998
1004
|
toolService = inject(ToolService);
|
|
999
1005
|
toolState = inject(ToolState);
|
|
1000
|
-
languageService = inject(LanguageService);
|
|
1001
1006
|
/**
|
|
1002
1007
|
* Observable of the active context
|
|
1003
1008
|
*/
|
|
@@ -1027,12 +1032,15 @@ class ContextState {
|
|
|
1027
1032
|
const tools = [];
|
|
1028
1033
|
const contextTools = context.tools || [];
|
|
1029
1034
|
contextTools.forEach((contextTool) => {
|
|
1030
|
-
const
|
|
1035
|
+
const contextToolFormated = ObjectUtils.removeNull(contextTool);
|
|
1036
|
+
const baseTool = this.toolService.getTool(contextToolFormated.name);
|
|
1031
1037
|
if (baseTool === undefined) {
|
|
1032
1038
|
return;
|
|
1033
1039
|
}
|
|
1034
|
-
const options = Object.assign({}, baseTool.options || {},
|
|
1035
|
-
const tool = Object.assign({}, baseTool,
|
|
1040
|
+
const options = Object.assign({}, baseTool.options || {}, contextToolFormated.options || {});
|
|
1041
|
+
const tool = Object.assign({}, baseTool, contextToolFormated, {
|
|
1042
|
+
options
|
|
1043
|
+
});
|
|
1036
1044
|
tools.push(tool);
|
|
1037
1045
|
});
|
|
1038
1046
|
tools.forEach((tool) => {
|
|
@@ -4836,8 +4844,8 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
4836
4844
|
isSelectedResultOutOfView$$;
|
|
4837
4845
|
abstractFocusedResult;
|
|
4838
4846
|
abstractSelectedResult;
|
|
4839
|
-
|
|
4840
|
-
debouncedEmpty
|
|
4847
|
+
destroyRef = inject(DestroyRef);
|
|
4848
|
+
debouncedEmpty = signal(true, ...(ngDevMode ? [{ debugName: "debouncedEmpty" }] : []));
|
|
4841
4849
|
/**
|
|
4842
4850
|
* Store holding the search results
|
|
4843
4851
|
* @internal
|
|
@@ -4853,16 +4861,9 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
4853
4861
|
return this.mapState.map;
|
|
4854
4862
|
}
|
|
4855
4863
|
get featureTitle() {
|
|
4856
|
-
return this.feature ? getEntityTitle(this.feature) : undefined;
|
|
4857
|
-
}
|
|
4858
|
-
get feature$() {
|
|
4859
|
-
return this.store.stateView
|
|
4860
|
-
.firstBy$((e) => e.state.focused)
|
|
4861
|
-
.pipe(map((element) => (this.feature = element
|
|
4862
|
-
? element.entity.data
|
|
4863
|
-
: undefined)));
|
|
4864
|
+
return this.feature() ? getEntityTitle(this.feature()) : undefined;
|
|
4864
4865
|
}
|
|
4865
|
-
feature;
|
|
4866
|
+
feature = signal(undefined, ...(ngDevMode ? [{ debugName: "feature" }] : []));
|
|
4866
4867
|
term = '';
|
|
4867
4868
|
searchTerm$$;
|
|
4868
4869
|
settingsChange$ = new BehaviorSubject(undefined);
|
|
@@ -4892,10 +4893,10 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
4892
4893
|
searchTerm !== null &&
|
|
4893
4894
|
searchTerm !== '') {
|
|
4894
4895
|
this.term = searchTerm;
|
|
4895
|
-
this.debouncedEmpty
|
|
4896
|
+
this.debouncedEmpty.set(false);
|
|
4896
4897
|
}
|
|
4897
4898
|
else if (searchTerm === '') {
|
|
4898
|
-
this.debouncedEmpty
|
|
4899
|
+
this.debouncedEmpty.set(true);
|
|
4899
4900
|
}
|
|
4900
4901
|
});
|
|
4901
4902
|
for (const res of this.store.stateView.all$().value) {
|
|
@@ -4964,16 +4965,23 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
4964
4965
|
}
|
|
4965
4966
|
});
|
|
4966
4967
|
});
|
|
4967
|
-
this.
|
|
4968
|
-
.pipe(debounceTime(1500))
|
|
4969
|
-
.subscribe((empty) => this.debouncedEmpty
|
|
4968
|
+
this.store.stateView.empty$
|
|
4969
|
+
.pipe(debounceTime(1500), takeUntilDestroyed(this.destroyRef))
|
|
4970
|
+
.subscribe((empty) => this.debouncedEmpty.set(empty));
|
|
4971
|
+
this.store.stateView
|
|
4972
|
+
.firstBy$((e) => e.state.focused)
|
|
4973
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
4974
|
+
.subscribe((element) => {
|
|
4975
|
+
const feature = element ? element.entity.data : undefined;
|
|
4976
|
+
this.feature.set(feature);
|
|
4977
|
+
});
|
|
4970
4978
|
}
|
|
4971
4979
|
monitorResultOutOfView() {
|
|
4972
4980
|
this.isSelectedResultOutOfView$$ = combineLatest([
|
|
4973
4981
|
this.map.viewController.state$,
|
|
4974
4982
|
this.searchState.selectedResult$
|
|
4975
4983
|
])
|
|
4976
|
-
.pipe(debounceTime(100))
|
|
4984
|
+
.pipe(debounceTime(100), takeUntilDestroyed(this.destroyRef))
|
|
4977
4985
|
.subscribe((bunch) => {
|
|
4978
4986
|
const selectedResult = bunch[1];
|
|
4979
4987
|
if (!selectedResult) {
|
|
@@ -5063,9 +5071,6 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
5063
5071
|
if (this.getRoute$$) {
|
|
5064
5072
|
this.getRoute$$.unsubscribe();
|
|
5065
5073
|
}
|
|
5066
|
-
if (this.debouncedEmpty$$) {
|
|
5067
|
-
this.debouncedEmpty$$.unsubscribe();
|
|
5068
|
-
}
|
|
5069
5074
|
}
|
|
5070
5075
|
/**
|
|
5071
5076
|
* Try to add a feature to the map when it's being focused
|
|
@@ -5198,9 +5203,10 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
5198
5203
|
}
|
|
5199
5204
|
}
|
|
5200
5205
|
zoomToFeatureExtent() {
|
|
5201
|
-
|
|
5202
|
-
|
|
5203
|
-
|
|
5206
|
+
const feature = this.feature();
|
|
5207
|
+
if (feature?.geometry) {
|
|
5208
|
+
const localOlFeature = this.format.readFeature(feature, {
|
|
5209
|
+
dataProjection: feature.projection,
|
|
5204
5210
|
featureProjection: this.map.projectionCode
|
|
5205
5211
|
});
|
|
5206
5212
|
moveToOlFeatures(this.map.viewController, localOlFeature, FeatureMotion.Zoom);
|
|
@@ -5248,15 +5254,16 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
5248
5254
|
.all()
|
|
5249
5255
|
.find((e) => e.position === 1);
|
|
5250
5256
|
let coord;
|
|
5251
|
-
|
|
5252
|
-
|
|
5257
|
+
const feature = this.feature();
|
|
5258
|
+
if (feature?.geometry) {
|
|
5259
|
+
if (feature.geometry.type === 'Point') {
|
|
5253
5260
|
coord = [
|
|
5254
|
-
|
|
5255
|
-
|
|
5261
|
+
feature.geometry.coordinates[0],
|
|
5262
|
+
feature.geometry.coordinates[1]
|
|
5256
5263
|
];
|
|
5257
5264
|
}
|
|
5258
5265
|
else {
|
|
5259
|
-
const point = pointOnFeature(
|
|
5266
|
+
const point = pointOnFeature(feature.geometry);
|
|
5260
5267
|
coord = [
|
|
5261
5268
|
point.geometry.coordinates[0],
|
|
5262
5269
|
point.geometry.coordinates[1]
|
|
@@ -5282,7 +5289,7 @@ let SearchResultsToolComponent = class SearchResultsToolComponent {
|
|
|
5282
5289
|
}, 250);
|
|
5283
5290
|
}
|
|
5284
5291
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: SearchResultsToolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5285
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: SearchResultsToolComponent, isStandalone: true, selector: "igo-search-results-tool", inputs: { showIcons: { classPropertyName: "showIcons", publicName: "showIcons", isSignal: true, isRequired: false, transformFunction: null }, topPanelStateDefault: { classPropertyName: "topPanelStateDefault", publicName: "topPanelStateDefault", isSignal: true, isRequired: false, transformFunction: null }, topPanelState: { classPropertyName: "topPanelState", publicName: "topPanelState", isSignal: false, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if ((!store || store.stateView.empty)
|
|
5292
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: SearchResultsToolComponent, isStandalone: true, selector: "igo-search-results-tool", inputs: { showIcons: { classPropertyName: "showIcons", publicName: "showIcons", isSignal: true, isRequired: false, transformFunction: null }, topPanelStateDefault: { classPropertyName: "topPanelStateDefault", publicName: "topPanelStateDefault", isSignal: true, isRequired: false, transformFunction: null }, topPanelState: { classPropertyName: "topPanelState", publicName: "topPanelState", isSignal: false, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (debouncedEmpty()) {\n @if (!store || store.stateView.empty) {\n <section class=\"search-results-tool-empty\">\n <h4>\n <strong>{{\n 'igo.integration.searchResultsTool.noResults' | translate\n }}</strong>\n </h4>\n <p>\n <strong>{{\n 'igo.integration.searchResultsTool.doSearch' | translate\n }}</strong>\n </p>\n <div\n [innerHTML]=\"\n 'igo.integration.searchResultsTool.examples'\n | translate\n | sanitizeHtml\n \"\n ></div>\n </section>\n }\n} @else {\n @let feature = this.feature();\n <igo-flexible\n #topPanel\n initial=\"100%\"\n initialMobile=\"100%\"\n collapsed=\"calc(100% - 48px)\"\n collapsedMobile=\"calc(100% - 48px)\"\n expanded=\"60%\"\n expandedMobile=\"60%\"\n [state]=\"feature ? topPanelState : 'initial'\"\n >\n <div class=\"igo-content\">\n <igo-search-results\n [store]=\"store\"\n [showIcons]=\"showIcons()\"\n [term]=\"term\"\n [termSplitter]=\"termSplitter\"\n [settingsChange$]=\"settingsChange$\"\n placeholder=\"false\"\n (resultFocus)=\"onResultFocus($event)\"\n (resultSelect)=\"onResultSelect($event)\"\n (resultUnfocus)=\"onResultUnfocus($event)\"\n (resultMouseenter)=\"onResultFocus($event)\"\n (resultMouseleave)=\"onResultUnfocus($event)\"\n (moreResults)=\"onSearch($event)\"\n [map]=\"map\"\n >\n <ng-template #igoSearchItemToolbar let-result=\"result\">\n <igo-search-add-button\n [map]=\"map\"\n [store]=\"store\"\n [stores]=\"stores\"\n [layer]=\"result\"\n [saveSearchResultInLayer]=\"saveSearchResultInLayer\"\n />\n </ng-template>\n </igo-search-results>\n </div>\n <div igoFlexibleFill class=\"igo-content\">\n @if (feature) {\n <igo-panel\n [title]=\"featureTitle\"\n (click)=\"toggleTopPanel($event)\"\n [cursorPointer]=\"true\"\n >\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\"\n >\n <mat-icon>{{\n (topPanelState$ | async) === 'collapsed'\n ? 'arrow_upward'\n : 'arrow_downward'\n }}</mat-icon>\n </button>\n @if (feature.geometry) {\n <button\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n [matTooltip]=\"\n ((isSelectedResultOutOfView$ | async)\n ? 'igo.integration.searchResultsTool.zoomOnFeatureTooltipOutOfView'\n : 'igo.integration.searchResultsTool.zoomOnFeatureTooltip'\n ) | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"(isSelectedResultOutOfView$ | async) ? '!' : ''\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n [matBadgeHidden]=\"\n (isSelectedResultOutOfView$ | async) === false\n \"\n >zoom_in</mat-icon\n >\n </button>\n }\n <igo-feature-details\n igoFeatureDetailsDirective\n [feature]=\"feature\"\n [map]=\"map\"\n [toolbox]=\"toolState.toolbox\"\n (routingEvent)=\"getRoute()\"\n />\n </igo-panel>\n }\n </div>\n </igo-flexible>\n}\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%}.search-results-tool-empty{padding:0 16px}\n"], dependencies: [{ kind: "component", type: FlexibleComponent, selector: "igo-flexible", inputs: ["initial", "collapsed", "expanded", "initialMobile", "collapsedMobile", "expandedMobile", "direction", "state"] }, { kind: "component", type: SearchResultsComponent, selector: "igo-search-results", inputs: ["map", "store", "showIcons", "mode", "withZoomButton", "tabsMode", "term", "settingsChange$", "termSplitter"], outputs: ["resultFocus", "resultUnfocus", "resultSelect", "moreResults", "resultMouseenter", "resultMouseleave"] }, { kind: "component", type: SearchResultAddButtonComponent, selector: "igo-search-add-button", inputs: ["layer", "store", "added", "map", "saveSearchResultInLayer", "stores"], outputs: ["addedChange"] }, { kind: "component", type: PanelComponent, selector: "igo-panel", inputs: ["title", "withHeader", "cursorPointer"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i4$2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: FeatureDetailsComponent, selector: "igo-feature-details", inputs: ["source", "map", "toolbox", "feature"], outputs: ["routeEvent", "selectFeature", "htmlDisplayEvent"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5286
5293
|
};
|
|
5287
5294
|
SearchResultsToolComponent = __decorate([
|
|
5288
5295
|
ToolComponent({
|
|
@@ -5307,7 +5314,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
|
|
|
5307
5314
|
AsyncPipe,
|
|
5308
5315
|
IgoLanguageModule,
|
|
5309
5316
|
SanitizeHtmlPipe
|
|
5310
|
-
], template: "@if ((!store || store.stateView.empty)
|
|
5317
|
+
], template: "@if (debouncedEmpty()) {\n @if (!store || store.stateView.empty) {\n <section class=\"search-results-tool-empty\">\n <h4>\n <strong>{{\n 'igo.integration.searchResultsTool.noResults' | translate\n }}</strong>\n </h4>\n <p>\n <strong>{{\n 'igo.integration.searchResultsTool.doSearch' | translate\n }}</strong>\n </p>\n <div\n [innerHTML]=\"\n 'igo.integration.searchResultsTool.examples'\n | translate\n | sanitizeHtml\n \"\n ></div>\n </section>\n }\n} @else {\n @let feature = this.feature();\n <igo-flexible\n #topPanel\n initial=\"100%\"\n initialMobile=\"100%\"\n collapsed=\"calc(100% - 48px)\"\n collapsedMobile=\"calc(100% - 48px)\"\n expanded=\"60%\"\n expandedMobile=\"60%\"\n [state]=\"feature ? topPanelState : 'initial'\"\n >\n <div class=\"igo-content\">\n <igo-search-results\n [store]=\"store\"\n [showIcons]=\"showIcons()\"\n [term]=\"term\"\n [termSplitter]=\"termSplitter\"\n [settingsChange$]=\"settingsChange$\"\n placeholder=\"false\"\n (resultFocus)=\"onResultFocus($event)\"\n (resultSelect)=\"onResultSelect($event)\"\n (resultUnfocus)=\"onResultUnfocus($event)\"\n (resultMouseenter)=\"onResultFocus($event)\"\n (resultMouseleave)=\"onResultUnfocus($event)\"\n (moreResults)=\"onSearch($event)\"\n [map]=\"map\"\n >\n <ng-template #igoSearchItemToolbar let-result=\"result\">\n <igo-search-add-button\n [map]=\"map\"\n [store]=\"store\"\n [stores]=\"stores\"\n [layer]=\"result\"\n [saveSearchResultInLayer]=\"saveSearchResultInLayer\"\n />\n </ng-template>\n </igo-search-results>\n </div>\n <div igoFlexibleFill class=\"igo-content\">\n @if (feature) {\n <igo-panel\n [title]=\"featureTitle\"\n (click)=\"toggleTopPanel($event)\"\n [cursorPointer]=\"true\"\n >\n <button\n mat-icon-button\n panelLeftButton\n class=\"igo-icon-button\"\n (click)=\"toggleTopPanel()\"\n >\n <mat-icon>{{\n (topPanelState$ | async) === 'collapsed'\n ? 'arrow_upward'\n : 'arrow_downward'\n }}</mat-icon>\n </button>\n @if (feature.geometry) {\n <button\n mat-icon-button\n panelRightButton\n class=\"igo-icon-button\"\n [matTooltip]=\"\n ((isSelectedResultOutOfView$ | async)\n ? 'igo.integration.searchResultsTool.zoomOnFeatureTooltipOutOfView'\n : 'igo.integration.searchResultsTool.zoomOnFeatureTooltip'\n ) | translate\n \"\n matTooltipShowDelay=\"500\"\n (click)=\"zoomToFeatureExtent()\"\n >\n <mat-icon\n aria-hidden=\"false\"\n [matBadge]=\"(isSelectedResultOutOfView$ | async) ? '!' : ''\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n [matBadgeHidden]=\"\n (isSelectedResultOutOfView$ | async) === false\n \"\n >zoom_in</mat-icon\n >\n </button>\n }\n <igo-feature-details\n igoFeatureDetailsDirective\n [feature]=\"feature\"\n [map]=\"map\"\n [toolbox]=\"toolState.toolbox\"\n (routingEvent)=\"getRoute()\"\n />\n </igo-panel>\n }\n </div>\n </igo-flexible>\n}\n", styles: [":host{display:flex;flex-direction:column;flex:1;height:100%}.search-results-tool-empty{padding:0 16px}\n"] }]
|
|
5311
5318
|
}], ctorParameters: () => [], propDecorators: { showIcons: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcons", required: false }] }], topPanelStateDefault: [{ type: i0.Input, args: [{ isSignal: true, alias: "topPanelStateDefault", required: false }] }], topPanelState: [{
|
|
5312
5319
|
type: Input
|
|
5313
5320
|
}] } });
|
|
@@ -5430,7 +5437,7 @@ class AnalyticsListenerService {
|
|
|
5430
5437
|
listenContext() {
|
|
5431
5438
|
this.contextState.context$.subscribe((context) => {
|
|
5432
5439
|
if (context) {
|
|
5433
|
-
this.analyticsService.trackEvent('context', 'activateContext', context.id || context.uri);
|
|
5440
|
+
this.analyticsService.trackEvent('context', 'activateContext', context.id?.toString() || context.uri);
|
|
5434
5441
|
}
|
|
5435
5442
|
});
|
|
5436
5443
|
}
|