From 423a200ce280b991851163f0f50b8719ed1a8948 Mon Sep 17 00:00:00 2001 From: "ext.sopra.ncastejon" <castejon.nicolas@gmail.com> Date: Mon, 13 Jan 2020 16:43:09 +0100 Subject: [PATCH] Add a search filter for the map features (only for type points currently). --- package-lock.json | 52 +++++++++++++------ package.json | 6 +-- .../dataset-map/dataset-map.component.ts | 3 ++ src/app/map/services/map.service.ts | 20 ++++++- 4 files changed, 61 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3219addd..cc9f32a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2021,6 +2021,7 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, +<<<<<<< HEAD "@babel/plugin-transform-literals": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", @@ -2034,6 +2035,12 @@ "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", +======= + "@types/mapbox-gl": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-1.6.2.tgz", + "integrity": "sha512-xDRNZhiqleCJuYPzXpp5UUcJzhiKTalKFVTr49I50gyo81qBNMErWeJRZJFjHd05U0onIdDFuX44TGpoVpJhXA==", +>>>>>>> Add a search filter for the map features (only for type points currently). "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" @@ -4458,11 +4465,18 @@ "safe-buffer": "5.1.2" } }, +<<<<<<< HEAD "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true +======= + "earcut": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.1.tgz", + "integrity": "sha512-5jIMi2RB3HtGPHcYd9Yyl0cczo84y+48lgKPxMijliNQaKAHEZJbdzLmKmdxG/mCdS/YD9DQ1gihL8mxzR0F9w==" +>>>>>>> Add a search filter for the map features (only for type points currently). }, "convert-source-map": { "version": "1.7.0", @@ -4833,11 +4847,18 @@ "assert-plus": "^1.0.0" } }, +<<<<<<< HEAD "date-format": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", "dev": true +======= + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=" +>>>>>>> Add a search filter for the map features (only for type points currently). }, "debug": { "version": "2.6.9", @@ -6157,9 +6178,9 @@ } }, "gl-matrix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.0.0.tgz", - "integrity": "sha512-PD4mVH/C/Zs64kOozeFnKY8ybhgwxXXQYGWdB4h68krAHknWJgk9uKOn6z8YElh5//vs++90pb6csrTIDWnexA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.1.0.tgz", + "integrity": "sha512-526NA+3EA+ztAQi0IZpSWiM0fyQXIp7IbRvfJ4wS/TjjQD0uv0fVybXwwqqSOlq33UckivI0yMDlVtboWm3k7A==" }, "glob": { "version": "7.1.3", @@ -7873,9 +7894,9 @@ } }, "mapbox-gl": { - "version": "0.54.1", - "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-0.54.1.tgz", - "integrity": "sha512-HtY+HobYTHTsFOJ3buTHtNvZv/Tjfp0vararhEWCjI7wQq8XxK16sEpsXucokrAhuu94js4KJylo13bKJx6l0Q==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.6.1.tgz", + "integrity": "sha512-qUvu8c/WX0woSLj8M64eK8351th4RI2+grGJ0ZlFb5ELEJNTb4SqMX/4uxRkb5d1euh2U72+AML1QOZjQnUPUw==", "requires": { "@mapbox/geojson-rewind": "^0.4.0", "@mapbox/geojson-types": "^1.0.2", @@ -7887,18 +7908,17 @@ "@mapbox/vector-tile": "^1.3.1", "@mapbox/whoots-js": "^3.1.0", "csscolorparser": "~1.0.2", - "earcut": "^2.1.5", - "esm": "~3.0.84", + "earcut": "^2.2.0", "geojson-vt": "^3.2.1", "gl-matrix": "^3.0.0", "grid-index": "^1.1.0", "minimist": "0.0.8", "murmurhash-js": "^1.0.0", - "pbf": "^3.0.5", + "pbf": "^3.2.1", "potpack": "^1.0.1", "quickselect": "^2.0.0", "rw": "^1.3.3", - "supercluster": "^6.0.1", + "supercluster": "^7.0.0", "tinyqueue": "^2.0.0", "vt-pbf": "^3.1.1" } @@ -9115,9 +9135,9 @@ } }, "pbf": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.0.tgz", - "integrity": "sha512-98Eh7rsJNJF/Im6XYMLaOW3cLnNyedlOd6hu3iWMD5I7FZGgpw8yN3vQBrmLbLodu7G784Irb9Qsv2yFrxSAGw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", + "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", "requires": { "ieee754": "^1.1.12", "resolve-protobuf-schema": "^2.1.0" @@ -11316,9 +11336,9 @@ } }, "supercluster": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-6.0.2.tgz", - "integrity": "sha512-aa0v2HURjBTOpbcknilcfxGDuArM8khklKSmZ/T8ZXL0BuRwb5aRw95lz+2bmWpFvCXDX/+FzqHxmg0TIaJErw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.0.0.tgz", + "integrity": "sha512-8VuHI8ynylYQj7Qf6PBMWy1PdgsnBiIxujOgc9Z83QvJ8ualIYWNx2iMKyKeC4DZI5ntD9tz/CIwwZvIelixsA==", "requires": { "kdbush": "^3.0.0" } diff --git a/package.json b/package.json index 03bb5cd1..13a3c6a3 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "hamburgers": "^1.1.3", "jwt-decode": "^2.2.0", "lodash.clonedeep": "^4.5.0", - "mapbox-gl": "^0.54.1", + "mapbox-gl": "^1.6.0", "ng-inline-svg": "^8.2.1", "ng-lazyload-image": "^5.1.2", "ngx-cookie-service": "^2.2.0", @@ -62,8 +62,8 @@ "@types/jasmine": "^2.8.12", "@types/jasminewd2": "^2.0.6", "@types/jwt-decode": "^2.2.1", - "@types/mapbox-gl": "^0.54.1", - "@types/node": "^6.14.9", + "@types/mapbox-gl": "^1.6.0", + "@types/node": "^6.14.2", "codelyzer": "^5.0.1", "jasmine-core": "~2.8.0", "jasmine-spec-reporter": "~4.2.1", diff --git a/src/app/dataset-detail/components/dataset-map/dataset-map.component.ts b/src/app/dataset-detail/components/dataset-map/dataset-map.component.ts index 64037169..0d9fce6a 100644 --- a/src/app/dataset-detail/components/dataset-map/dataset-map.component.ts +++ b/src/app/dataset-detail/components/dataset-map/dataset-map.component.ts @@ -56,6 +56,9 @@ export class DatasetMapComponent implements OnInit, OnDestroy { this._mapService.featureSelected$.subscribe((feature: mapboxgl.MapboxGeoJSONFeature) => { this.featureClicked.next(feature); }), + this._datasetDetailService.datasetDataSearchChanged$.subscribe((searchValue) => { + this._mapService.filterBySearchValue(searchValue, this._datasetDetailService.dataset.fields.list); + }), ); this.isSample = this._datasetDetailService.dataset.editorialMetadata.isSample; diff --git a/src/app/map/services/map.service.ts b/src/app/map/services/map.service.ts index 3c2d39f2..62df94fe 100644 --- a/src/app/map/services/map.service.ts +++ b/src/app/map/services/map.service.ts @@ -98,7 +98,7 @@ export class MapService { // Subscribe to the error observable and send a notification this._errorSubscription = errorObservable.subscribe((v) => { - // console.log(v); + console.log(v); this._notificationService.notify( new Notification({ message: notificationMessages.geosource.mapError, @@ -519,6 +519,24 @@ export class MapService { } } + filterBySearchValue(searchValue: string, properties: string[]) { + + const filters = []; + if (searchValue) { + properties.forEach((property) => { + filters.push(['in', ['upcase', searchValue], ['upcase', ['get', property]]]); + }); + this._map.setFilter('point-features', ['any', ...filters]); + this._map.setPaintProperty('point-features', 'circle-color', 'coral'); + this._map.setPaintProperty('wms-layer', 'raster-opacity', 0.5); + } else { + this._map.setFilter('point-features', null); + this._map.setPaintProperty('wms-layer', 'raster-opacity', 1); + this._map.setPaintProperty('point-features', 'circle-color', 'transparent'); + + } + } + get map$(): Observable<void> { return this._mapSubject.asObservable(); } -- GitLab