Form search object and put it in state

This commit is contained in:
Angelina Filippova 2020-02-25 00:24:46 +03:00
parent 55832cb890
commit d0c885c295
3 changed files with 29 additions and 6 deletions

View file

@ -254,3 +254,13 @@ const wrapValues = (settings, currentState) => {
}
})
}
export const formSearchObject = description => {
return description.reduce((acc, setting) => {
if (setting.children) {
const updatedAcc = { ...acc, [setting.key]: _.compact([setting.key, setting.label, setting.description]) }
return { ...updatedAcc, ...formSearchObject(setting.children) }
}
return { ...acc, [setting.key]: _.compact([setting.key, setting.label, setting.description]) }
}, {})
}

View file

@ -1,5 +1,5 @@
import { fetchDescription, fetchSettings, removeSettings, restartApp, updateSettings } from '@/api/settings'
import { checkPartialUpdate, parseNonTuples, parseTuples, valueHasTuples, wrapUpdatedSettings } from './normalizers'
import { checkPartialUpdate, formSearchObject, parseNonTuples, parseTuples, valueHasTuples, wrapUpdatedSettings } from './normalizers'
import _ from 'lodash'
const settings = {
@ -10,6 +10,7 @@ const settings = {
description: [],
loading: true,
needReboot: false,
searchData: {},
settings: {},
updatedSettings: {}
},
@ -32,6 +33,9 @@ const settings = {
SET_LOADING: (state, status) => {
state.loading = status
},
SET_SEARCH: (state, description) => {
state.searchData = description
},
SET_SETTINGS: (state, data) => {
const newSettings = data.reduce((acc, { group, key, value }) => {
const parsedValue = valueHasTuples(key, value)
@ -77,6 +81,8 @@ const settings = {
const response = await fetchSettings(getters.authHost, getters.token)
const description = await fetchDescription(getters.authHost, getters.token)
commit('SET_DESCRIPTION', description.data)
const res = formSearchObject(description.data)
commit('SET_SEARCH', res)
commit('SET_SETTINGS', response.data.configs)
commit('TOGGLE_REBOOT', response.data.need_reboot)
} catch (_e) {

View file

@ -24,14 +24,12 @@
</el-button>
</el-link>
<el-autocomplete
v-model="state2"
v-model="searchQuery"
:fetch-suggestions="querySearch"
:trigger-on-focus="false"
placeholder="Search"
prefix-icon="el-icon-search"
class="settings-search-input"
@select="handleSelect"
/>
class="settings-search-input"/>
</div>
</div>
<el-tabs v-model="activeTab" tab-position="left">
@ -234,7 +232,8 @@ export default {
{ value: 'webPush', label: i18n.t('settings.webPush') },
{ value: 'upload', label: i18n.t('settings.upload') },
{ value: 'other', label: i18n.t('settings.other') }
]
],
searchQuery: ''
}
},
computed: {
@ -260,6 +259,9 @@ export default {
},
needReboot() {
return this.$store.state.settings.needReboot
},
searchData() {
return this.$store.state.settings.searchData
}
},
mounted: function() {
@ -276,6 +278,11 @@ export default {
type: 'success',
message: i18n.t('settings.restartSuccess')
})
},
querySearch(queryString, cb) {
const results = this.searchData
// call callback function to return suggestions
cb(results)
}
}
}