From be078ecced1bf6218a82767ebefc5e74dcbd8061 Mon Sep 17 00:00:00 2001 From: portree_kid Date: Tue, 5 May 2020 14:28:33 +0200 Subject: [PATCH] Search performance --- src/renderer/components/Search.vue | 35 +++++++++++++++++------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/renderer/components/Search.vue b/src/renderer/components/Search.vue index d2c46e9..036b4a0 100644 --- a/src/renderer/components/Search.vue +++ b/src/renderer/components/Search.vue @@ -32,7 +32,7 @@ }, data () { // this.$store.dispatch('getAirportsUnfiltered') - return {searchterm: this.searchterm} + return {searchterm: this.searchterm, lastSearchTerm: '', lastResult: {}} }, methods: { goto (icao) { @@ -127,21 +127,26 @@ computed: { searched: function () { console.log(this.searchterm) - let searchRegex = new RegExp(this.searchterm, 'i') - let result = this.$store.state.Airports.airports - .filter(point => point.geometry !== undefined) - .filter(point => point.geometry.coordinates !== undefined) - .filter(a => a.properties !== undefined) - .filter(a => searchRegex.test(a.properties.icao) || searchRegex.test(a.properties.name)) - // .map(a => console.log(a.properties)) - .map(a => ({ icao: a.properties.icao, name: a.properties.name })) - if (result !== undefined && - result.length === 0 && - this.searchterm !== undefined && - this.searchterm.length >= 3) { - this.$store.dispatch('getAirport', this.searchterm) + if (this.searchterm !== this.lastSearchTerm) { + let searchRegex = new RegExp(this.searchterm, 'i') + let result = this.$store.state.Airports.airports + .filter(point => point.geometry !== undefined) + .filter(point => point.geometry.coordinates !== undefined) + .filter(a => a.properties !== undefined) + .filter(a => searchRegex.test(a.properties.icao) || searchRegex.test(a.properties.name)) + // .map(a => console.log(a.properties)) + .map(a => ({ icao: a.properties.icao, name: a.properties.name })) + if (result !== undefined && + result.length === 0 && + this.searchterm !== undefined && + this.searchterm.length >= 3) { + this.$store.dispatch('getAirport', this.searchterm) + } + this.lastResult = result + this.lastSearchTerm = this.searchterm + return result } - return result + return this.lastResult } } }