Skip to content
Snippets Groups Projects
Commit 096bdefe authored by Ole Voldsæter's avatar Ole Voldsæter
Browse files

preview i søkeforslag

parent becbaf29
No related branches found
No related tags found
No related merge requests found
...@@ -2,7 +2,12 @@ ...@@ -2,7 +2,12 @@
<main id="app"> <main id="app">
<img alt="Vue logo" src="./assets/logo.png"> <img alt="Vue logo" src="./assets/logo.png">
<header> <header>
<autocomplete :debounceTime="150" :auto-select="true" :search="search" :get-result-value="result_view" @submit="select_result" placeholder="søk..." ref="search"></autocomplete> <autocomplete :debounceTime="100" :auto-select="true" :search="search" @submit="select_result" placeholder="søk..." ref="search">
<template #result="{result, props}">
<Preview v-bind="props" :searchHit="result">
</Preview>
</template>
</autocomplete>
<input type="radio" id="radio_nob" value="nob" v-model="lang"> <input type="radio" id="radio_nob" value="nob" v-model="lang">
<label for="radio_nob">Bokmål</label> <label for="radio_nob">Bokmål</label>
<input type="radio" id="radio_nno" value="nno" v-model="lang"> <input type="radio" id="radio_nno" value="nno" v-model="lang">
...@@ -17,6 +22,7 @@ ...@@ -17,6 +22,7 @@
<script> <script>
import axios from "axios" import axios from "axios"
import Article from './components/Article.vue' import Article from './components/Article.vue'
import Preview from './components/Preview.vue'
import SearchResults from './components/SearchResults.vue' import SearchResults from './components/SearchResults.vue'
import Autocomplete from '@trevoreyre/autocomplete-vue' import Autocomplete from '@trevoreyre/autocomplete-vue'
import '@trevoreyre/autocomplete-vue/dist/style.css' import '@trevoreyre/autocomplete-vue/dist/style.css'
...@@ -38,13 +44,7 @@ export default { ...@@ -38,13 +44,7 @@ export default {
search_results: [], search_results: [],
lang: 'nob', lang: 'nob',
waiting: true, waiting: true,
article: {lemmas: [], body:{pronunciation: [], definitions: [], etymology: []}}, article: {lemmas: [], body:{pronunciation: [], definitions: [], etymology: []}}
result_view: function(result) {
if (result._source)
return result._source.lemmas.map(x => x.lemma).join(', ')
else
return 'Alle søkeresultater...'
}
} }
}, },
computed: { computed: {
...@@ -74,7 +74,8 @@ export default { ...@@ -74,7 +74,8 @@ export default {
components: { components: {
Article, Article,
Autocomplete, Autocomplete,
SearchResults SearchResults,
Preview
}, },
methods: { methods: {
select_result: function(event) { select_result: function(event) {
......
<template>
<li>
<div class="preview">
<h4>{{searchHit.text || "Alle søkeresultater..."}}</h4>
<h5 v-if="searchHit._source">{{group_list}}</h5>
{{previewText.substring(0, 40) + (previewText ? '...' : '')}}
</div>
</li>
</template>
<script>
import entities from '../utils/entities.js'
import languages from '../utils/languages.js'
import helpers from '../utils/helpers.js'
export default {
name: 'Preview',
props: {
searchHit: Object
},
computed: {
previewText: function(){
if (! this.searchHit._source) return ''
let element = this.searchHit._source.body.definitions[0]
while (element.type_ == 'definition') element = element.elements[0]
if (element.type_ == 'example') {
element = element.quote
} else if (! element.content){
element = {content: '', items: []}
}
let replacements = element.items.map(item => item.text ||
item.string ||
entities[item.id] ||
languages[item.id] ||
item.id ||
(item.lemmas || []).join(',')).reverse()
let replacement = () => replacements.pop()
return element.content.replace(/\$/gi, replacement)
},
group_list: function() {
return helpers.group_list(this.searchHit._source.lemmas)
}
},
components: {
}
}
</script>
<style scoped>
h4, h5 {
padding: 0px;
margin: 0px;
}
</style>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment