diff --git a/package-lock.json b/package-lock.json
index b7ae0016a..9084c5c24 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -855,6 +855,14 @@
"tslib": "^1.9.0"
}
},
+ "@mat-datetimepicker/core": {
+ "version": "3.0.0-beta.0",
+ "resolved": "https://registry.npmjs.org/@mat-datetimepicker/core/-/core-3.0.0-beta.0.tgz",
+ "integrity": "sha512-bsEziG0qmzVmg5PoBYqdaoUm58M1m6Qf0JIS0xHMFkvuRtLKJsA4G1LJ9Up5ZruKMW1rmtE3wuBeZmyln4vsQQ==",
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
"@ngtools/json-schema": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.1.0.tgz",
@@ -1972,9 +1980,9 @@
}
},
"base64-arraybuffer": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz",
- "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ=="
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
+ "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg="
},
"base64-js": {
"version": "1.3.1",
@@ -3914,11 +3922,11 @@
"dev": true
},
"css-line-break": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.1.1.tgz",
- "integrity": "sha512-1feNVaM4Fyzdj4mKPIQNL2n70MmuYzAXZ1aytlROFX1JsOo070OsugwGjj7nl6jnDJWHDM8zRZswkmeYVWZJQA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.0.1.tgz",
+ "integrity": "sha1-GfIGOjPpX7KDG4ZEbAuAwYivRQo=",
"requires": {
- "base64-arraybuffer": "^0.2.0"
+ "base64-arraybuffer": "^0.1.5"
}
},
"css-parse": {
@@ -5384,8 +5392,7 @@
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"aproba": {
"version": "1.2.0",
@@ -5406,14 +5413,12 @@
"balanced-match": {
"version": "1.0.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -5428,20 +5433,17 @@
"code-point-at": {
"version": "1.1.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"core-util-is": {
"version": "1.0.2",
@@ -5558,8 +5560,7 @@
"inherits": {
"version": "2.0.3",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"ini": {
"version": "1.3.5",
@@ -5571,7 +5572,6 @@
"version": "1.0.0",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"number-is-nan": "^1.0.0"
}
@@ -5586,7 +5586,6 @@
"version": "3.0.4",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -5594,14 +5593,12 @@
"minimist": {
"version": "0.0.8",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
@@ -5620,7 +5617,6 @@
"version": "0.5.1",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"minimist": "0.0.8"
}
@@ -5701,8 +5697,7 @@
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"object-assign": {
"version": "4.1.1",
@@ -5714,7 +5709,6 @@
"version": "1.4.0",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"wrappy": "1"
}
@@ -5800,8 +5794,7 @@
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"safer-buffer": {
"version": "2.1.2",
@@ -5837,7 +5830,6 @@
"version": "1.0.2",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
@@ -5857,7 +5849,6 @@
"version": "3.0.1",
"bundled": true,
"dev": true,
- "optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -5901,14 +5892,12 @@
"wrappy": {
"version": "1.0.2",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
- "dev": true,
- "optional": true
+ "dev": true
}
}
},
@@ -7037,11 +7026,11 @@
"dev": true
},
"html2canvas": {
- "version": "1.0.0-rc.3",
- "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-rc.3.tgz",
- "integrity": "sha512-nWRk34IO3QopcDYpiPAbRW6VoI10H7uxEhcSFjox0JB6wZOMd6Mak+NqHPLljSFFEOvBjPafyRgcHnuWcFpWvg==",
+ "version": "1.0.0-alpha.12",
+ "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-alpha.12.tgz",
+ "integrity": "sha1-OxmS48mz9WBjw1/WIElPN+uohRM=",
"requires": {
- "css-line-break": "1.1.1"
+ "css-line-break": "1.0.1"
}
},
"http-auth": {
@@ -8378,7 +8367,7 @@
"integrity": "sha512-J9X76xnncMw+wIqb15HeWfPMqPwYxSpPY8yWPJ7rAZN/ZDzFkjCSZObryCyUe8zbrVRNiuCnIeQteCzMn7GnWw==",
"requires": {
"canvg": "1.5.3",
- "file-saver": "github:eligrey/FileSaver.js#1.3.8",
+ "file-saver": "github:eligrey/FileSaver.js#e865e37af9f9947ddcced76b549e27dc45c1cb2e",
"html2canvas": "1.0.0-alpha.12",
"omggif": "1.0.7",
"promise-polyfill": "8.1.0",
diff --git a/package.json b/package.json
index 81ac9e9d7..6ca72e069 100644
--- a/package.json
+++ b/package.json
@@ -56,6 +56,7 @@
"@igo2/geo": "^1.0.0-alpha.6",
"@igo2/integration": "^1.0.0-alpha.6",
"@igo2/utils": "^1.0.0-alpha.6",
+ "@mat-datetimepicker/core": "^3.0.0-beta.0",
"classlist.js": "^1.1.20150312",
"core-js": "^2.6.5",
"file-saver": "^1.3.8",
diff --git a/src/app/pages/portal/portal.component.html b/src/app/pages/portal/portal.component.html
index 6b66f0016..fa6ec3c09 100644
--- a/src/app/pages/portal/portal.component.html
+++ b/src/app/pages/portal/portal.component.html
@@ -19,16 +19,19 @@
+ (searchTermChange)="onSearchTermChange($event)"
+ (search)="onSearch($event)"
+ (clearFeature)="onClearSearch()">
+ [(opened)]="sidenavOpened"
+ (toolChange)="toolChanged($event)">
) {
- const feature = result.data;
+ const feature = result ? result.data : undefined;
// Somethimes features have no geometry. It happens with some GetFeatureInfo
- if (feature.geometry === undefined) {
+ if (!feature || feature.geometry === undefined) {
+ this.map.overlay.clear();
return;
}
this.map.overlay.setFeatures([feature], FeatureMotion.Default);
}
- private onClearSearch() {
+ public onClearSearch() {
this.searchStore.clear();
this.map.overlay.clear();
// this.closeToastPanel();
diff --git a/src/app/pages/portal/sidenav/sidenav.component.ts b/src/app/pages/portal/sidenav/sidenav.component.ts
index 79d25068b..fc66a5f2c 100644
--- a/src/app/pages/portal/sidenav/sidenav.component.ts
+++ b/src/app/pages/portal/sidenav/sidenav.component.ts
@@ -9,10 +9,9 @@ import {
} from '@angular/core';
import { BehaviorSubject, Subscription } from 'rxjs';
-import olFormatGeoJSON from 'ol/format/GeoJSON';
-import { Tool, Toolbox, getEntityTitle, FlexibleState } from '@igo2/common';
-import { SearchResult, IgoMap, moveToOlFeatures } from '@igo2/geo';
+import { Tool, Toolbox } from '@igo2/common';
+import { IgoMap } from '@igo2/geo';
import { ToolState } from '@igo2/integration';
@Component({
@@ -23,10 +22,8 @@ import { ToolState } from '@igo2/integration';
})
export class SidenavComponent implements OnInit, OnDestroy {
title$: BehaviorSubject = new BehaviorSubject(undefined);
- topPanelState: FlexibleState = 'initial';
private activeTool$$: Subscription;
- private format = new olFormatGeoJSON();
@Input()
get map(): IgoMap {
@@ -37,20 +34,6 @@ export class SidenavComponent implements OnInit, OnDestroy {
}
private _map: IgoMap;
- @Input()
- get searchResult(): SearchResult {
- return this._searchResult;
- }
- set searchResult(value: SearchResult) {
- this._searchResult = value;
- if (!value) {
- this.topPanelState = 'initial';
- } else if (this.topPanelState === 'initial') {
- this.topPanelState = 'collapsed';
- }
- }
- private _searchResult: SearchResult;
-
@Input()
get opened(): boolean {
return this._opened;
@@ -66,24 +49,18 @@ export class SidenavComponent implements OnInit, OnDestroy {
private _opened: boolean;
@Output() openedChange = new EventEmitter();
+ @Output() toolChange = new EventEmitter();
get toolbox(): Toolbox {
return this.toolState.toolbox;
}
- get panelTitle(): string {
- let title;
- if (this.searchResult !== undefined) {
- title = getEntityTitle(this.searchResult);
- }
- return title;
- }
-
constructor(private toolState: ToolState) {}
ngOnInit() {
this.activeTool$$ = this.toolbox.activeTool$.subscribe((tool: Tool) => {
this.title$.next(tool ? tool.title : 'IGO');
+ this.toolChange.emit(tool);
});
}
@@ -98,22 +75,4 @@ export class SidenavComponent implements OnInit, OnDestroy {
onUnselectButtonClick() {
this.toolbox.deactivateTool();
}
-
- zoomToFeatureExtent() {
- if (this.searchResult.data.geometry) {
- const olFeature = this.format.readFeature(this.searchResult.data, {
- dataProjection: this.searchResult.data.geometry.projection,
- featureProjection: this.map.projection
- });
- moveToOlFeatures(this.map, olFeature);
- }
- }
-
- toggleTopPanel() {
- if (this.topPanelState === 'collapsed') {
- this.topPanelState = 'expanded';
- } else {
- this.topPanelState = 'collapsed';
- }
- }
}
diff --git a/src/app/pages/portal/toast-panel/toast-panel.component.html b/src/app/pages/portal/toast-panel/toast-panel.component.html
index f8ca96726..a020cd7a3 100644
--- a/src/app/pages/portal/toast-panel/toast-panel.component.html
+++ b/src/app/pages/portal/toast-panel/toast-panel.component.html
@@ -1,6 +1,6 @@
diff --git a/src/app/pages/portal/toast-panel/toast-panel.component.ts b/src/app/pages/portal/toast-panel/toast-panel.component.ts
index 1a62a89ce..863ac8ed9 100644
--- a/src/app/pages/portal/toast-panel/toast-panel.component.ts
+++ b/src/app/pages/portal/toast-panel/toast-panel.component.ts
@@ -85,6 +85,7 @@ export class ToastPanelComponent {
unselectResult() {
this.resultSelected$.next(undefined);
+ this.resultSelect.emit(undefined);
this.store.state.clear();
}
diff --git a/src/app/pages/portal/toast-panel/toast-panel.module.ts b/src/app/pages/portal/toast-panel/toast-panel.module.ts
index 95a12fbba..a1749fc45 100644
--- a/src/app/pages/portal/toast-panel/toast-panel.module.ts
+++ b/src/app/pages/portal/toast-panel/toast-panel.module.ts
@@ -1,6 +1,10 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
-import { MatIconModule, MatButtonModule } from '@angular/material';
+import {
+ MatIconModule,
+ MatButtonModule,
+ MatTooltipModule
+} from '@angular/material';
import { IgoPanelModule, IgoStopPropagationModule } from '@igo2/common';
import { IgoLanguageModule } from '@igo2/core';
@@ -13,6 +17,7 @@ import { ToastPanelComponent } from './toast-panel.component';
CommonModule,
MatIconModule,
MatButtonModule,
+ MatTooltipModule,
IgoLanguageModule,
IgoPanelModule,
IgoStopPropagationModule,
diff --git a/src/environments/environment.ts b/src/environments/environment.ts
index 3595b763b..f8c983ef4 100644
--- a/src/environments/environment.ts
+++ b/src/environments/environment.ts
@@ -28,8 +28,8 @@ export const environment: Environment = {
allowAnonymous: true
},
context: {
- url: "/apis/igo2",
- defaultContextUri: "5"
+ url: '/apis/igo2',
+ defaultContextUri: '5'
},
searchSources: {
nominatim: {
diff --git a/src/locale/en.json b/src/locale/en.json
index c69365ba6..7f3acba4e 100644
--- a/src/locale/en.json
+++ b/src/locale/en.json
@@ -4,6 +4,10 @@
"close": "Close Menu",
"open": "Open Menu"
},
+ "toastPanel": {
+ "title": "Entities found on the map",
+ "listButton": "Return to the list of entities"
+ },
"IGO": "IGO",
"noEntityStore": "No tables available for this dataset",
"coordinates": "Show coordinates,",
diff --git a/src/locale/fr.json b/src/locale/fr.json
index 075cd24b7..d2e8b49bd 100644
--- a/src/locale/fr.json
+++ b/src/locale/fr.json
@@ -4,6 +4,10 @@
"close": "Fermer le menu",
"open": "Menu"
},
+ "toastPanel": {
+ "title": "Entités trouvées sur la carte",
+ "listButton": "Retourner à la liste des entités"
+ },
"IGO": "IGO",
"noEntityStore": "Aucune table disponible pour ce jeu de données",
"coordinates": "Afficher les coordonnées",