|
|
|
'use strict'
|
|
|
|
|
|
|
|
if ($('#search-input').length) {
|
|
|
|
$('#search-input').focus()
|
|
|
|
|
|
|
|
$('.searchresults').css('display', 'block')
|
|
|
|
|
|
|
|
var vueHeader = new Vue({
|
|
|
|
el: '#header-container',
|
|
|
|
data: {
|
|
|
|
searchq: '',
|
|
|
|
searchres: [],
|
|
|
|
searchsuggest: [],
|
|
|
|
searchload: 0,
|
|
|
|
searchactive: false,
|
|
|
|
searchmoveidx: 0,
|
|
|
|
searchmovekey: '',
|
|
|
|
searchmovearr: []
|
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
searchq: (val, oldVal) => {
|
|
|
|
vueHeader.searchmoveidx = 0
|
|
|
|
if (val.length >= 3) {
|
|
|
|
vueHeader.searchactive = true
|
|
|
|
vueHeader.searchload++
|
|
|
|
socket.emit('search', { terms: val }, (data) => {
|
|
|
|
vueHeader.searchres = data.match
|
|
|
|
vueHeader.searchsuggest = data.suggest
|
|
|
|
vueHeader.searchmovearr = _.concat([], vueHeader.searchres, vueHeader.searchsuggest)
|
|
|
|
if (vueHeader.searchload > 0) { vueHeader.searchload-- }
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
vueHeader.searchactive = false
|
|
|
|
vueHeader.searchres = []
|
|
|
|
vueHeader.searchsuggest = []
|
|
|
|
vueHeader.searchmovearr = []
|
|
|
|
vueHeader.searchload = 0
|
|
|
|
}
|
|
|
|
},
|
|
|
|
searchmoveidx: (val, oldVal) => {
|
|
|
|
if (val > 0) {
|
|
|
|
vueHeader.searchmovekey = (vueHeader.searchmovearr[val - 1]) ?
|
|
|
|
'res.' + vueHeader.searchmovearr[val - 1]._id :
|
|
|
|
'sug.' + vueHeader.searchmovearr[val - 1]
|
|
|
|
} else {
|
|
|
|
vueHeader.searchmovekey = ''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
useSuggestion: (sug) => {
|
|
|
|
vueHeader.searchq = sug
|
|
|
|
},
|
|
|
|
closeSearch: () => {
|
|
|
|
vueHeader.searchq = ''
|
|
|
|
},
|
|
|
|
moveSelectSearch: () => {
|
|
|
|
if (vueHeader.searchmoveidx < 1) { return }
|
|
|
|
let i = vueHeader.searchmoveidx - 1
|
|
|
|
|
|
|
|
if (vueHeader.searchmovearr[i]) {
|
|
|
|
window.location.assign('/' + vueHeader.searchmovearr[i]._id)
|
|
|
|
} else {
|
|
|
|
vueHeader.searchq = vueHeader.searchmovearr[i]
|
|
|
|
}
|
|
|
|
},
|
|
|
|
moveDownSearch: () => {
|
|
|
|
if (vueHeader.searchmoveidx < vueHeader.searchmovearr.length) {
|
|
|
|
vueHeader.searchmoveidx++
|
|
|
|
}
|
|
|
|
},
|
|
|
|
moveUpSearch: () => {
|
|
|
|
if (vueHeader.searchmoveidx > 0) {
|
|
|
|
vueHeader.searchmoveidx--
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
$('main').on('click', vueHeader.closeSearch)
|
|
|
|
}
|