123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- '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)
- }
|