summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Kesselberg <mail@danielkesselberg.de>2023-10-10 20:20:07 +0200
committerDaniel Kesselberg <mail@danielkesselberg.de>2023-10-10 22:21:32 +0200
commit503ae11e1f23c5d77c7e704cb65f813b43327066 (patch)
treec85c4ff9d1c9bdfc98dac26a8083eca557f0faaa
parent9854dd89cc575ebd23206831ceed3e31c36038d3 (diff)
fix: improve matching for tel type parameter
The old implementation assigns the same score for HOME,VOICE and VOICE for a tel property with parameter voice. This pull requests adds an aditional point for the items with the same length. Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
-rw-r--r--src/components/ContactDetails/ContactDetailsProperty.vue15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/components/ContactDetails/ContactDetailsProperty.vue b/src/components/ContactDetails/ContactDetailsProperty.vue
index 353319bd..552629cf 100644
--- a/src/components/ContactDetails/ContactDetailsProperty.vue
+++ b/src/components/ContactDetails/ContactDetailsProperty.vue
@@ -251,11 +251,18 @@ export default {
// https://jsperf.com/array-map-and-intersection-perf
const matchingTypes = this.propModel.options
.map(type => {
- return {
- type,
- // "WORK,HOME" => ['WORK', 'HOME']
- score: type.id.split(',').filter(value => selectedType.indexOf(value) !== -1).length,
+ let score = 0
+ const types = type.id.split(',') // "WORK,HOME" => ['WORK', 'HOME']
+
+ if (types.length === selectedType.length) {
+ // additional point for same length
+ score++
}
+
+ const intersection = types.filter(value => selectedType.includes(value))
+ score = score + intersection.length
+
+ return { type, score }
})
// Sort by score, filtering out the null score and selecting the first match