Просмотр исходного кода

add support for search

pull/1/head
Jonathan Cobb 4 лет назад
Родитель
Сommit
5e612f915f
3 измененных файлов: 103 добавлений и 6 удалений
  1. +15
    -0
      src/_services/system.service.js
  2. +45
    -1
      src/_store/system.module.js
  3. +43
    -5
      src/admin/ModelSetupPage.vue

+ 15
- 0
src/_services/system.service.js Просмотреть файл

@@ -5,6 +5,8 @@ export const systemService = {
loadIsActivated,
activate,
loadSystemConfigs,
loadEntityConfigs,
search,
loadMessages,
loadTimezones,
detectTimezone,
@@ -32,6 +34,19 @@ function loadSystemConfigs() {
.then(configs => { return configs; });
}

function loadEntityConfigs() {
const requestOptions = util.userLoggedIn() ? util.getWithAuth() : { method: 'GET' };
return fetch(`${config.apiUrl}/ec?full=true`, requestOptions)
.then(util.handleBasicResponse)
.then(config => { return config; });
}

function search(type, query) {
return fetch(`${config.apiUrl}/search/${type}`, util.postWithAuth(query))
.then(util.handleBasicResponse)
.then(config => { return config; });
}

function loadMessages(group, locale) {
const requestOptions = util.userLoggedIn() ? util.getWithAuth() : { method: 'GET' };
if (!locale || locale === '') locale = 'detect';


+ 45
- 1
src/_store/system.module.js Просмотреть файл

@@ -11,7 +11,9 @@ const state = {
entityClasses: [],
locales: ['en_US']
},
status: { activating: false },
entityConfigs: {},
searchResults: [],
status: { activating: false, searching: false },
activated: null,
error: null,
messages: {
@@ -70,6 +72,22 @@ const actions = {
error => commit('loadSystemConfigsFailure', error)
);
},
loadEntityConfigs({ commit }) {
commit('loadEntityConfigsRequest');
systemService.loadEntityConfigs()
.then(
configs => commit('loadEntityConfigsSuccess', configs),
error => commit('loadEntityConfigsFailure', error)
);
},
search({ commit }, type, query) {
commit('searchRequest');
systemService.search(type, query)
.then(
results => commit('searchSuccess', {type, query, results}),
error => commit('searchFailure', error)
);
},
loadMessages({ commit }, group, locale) {
commit('loadMessagesRequest');
systemService.loadMessages(group, locale)
@@ -214,6 +232,32 @@ const mutations = {
loadSystemConfigsFailure(state, error) {
state.error = error;
},
loadEntityConfigsRequest(state) {},
loadEntityConfigsSuccess(state, configs) {
// console.log('loadEntityConfigsSuccess: received configs='+JSON.stringify(configs));
const newConfigs = {};
for (let i=0; i<configs.length; i++) {
for (let j=0; j<configs[i].names.length; j++) {
newConfigs[configs[i].names[j]] = configs[i].entityConfig;
}
}
state.entityConfigs = newConfigs;
},
loadEntityConfigsFailure(state, error) {
state.error = error;
},
searchRequest(state) {
state.status.searching = true;
},
searchSuccess(state, {type, query, results}) {
console.log('searchSuccess: '+JSON.stringify(results));
state.status.searching = false;
state.searchResults = results;
},
searchFailure(state, error) {
state.status.searching = false;
state.error = error;
},
loadMessagesRequest(state) {},
loadMessagesSuccess(state, {group, messages}) {
if (state.messageGroupsLoaded.indexOf(group) === -1) state.messageGroupsLoaded.push(group);


+ 43
- 5
src/admin/ModelSetupPage.vue Просмотреть файл

@@ -3,12 +3,25 @@
<h2>{{messages.form_title_model_setup}}</h2>
<form @submit.prevent="setupModel">
<div class="form-group">
<label for="configType">{{messages.field_label_entity_type}}</label>
<select v-model="configType" name="configType" class="form-control">
<label for="type">{{messages.field_label_entity_type}}</label>
<select @change="selectType()" v-model="type" name="type" class="form-control">
<option v-for="opt in this.configs.entityClasses" v-bind:value="opt.value">{{opt.name}}</option>
</select>
</div>
</form>

<table border="1" v-if="this.ec && this.ec[this.lcType] && this.ec[this.lcType].listFields">
<thead>
<tr>
<td v-for="field in this.ec[this.lcType].listFields">{{field}}</td>
</tr>
</thead>
<tbody v-if="this.results && this.results.results">
<tr v-for="row in this.results.results">
<td v-for="field in ec[lcType].listFields">{{row[field]}}</td>
</tr>
</tbody>
</table>
</div>
</template>

@@ -18,23 +31,48 @@
export default {
data() {
return {
configType: 'Account'
ec: {},
type: 'bubble.model.account.Account',
query: {
query: '',
page: 1,
size: 10,
sort: ''
},
results: []
};
},
computed: {
...mapState('account', ['locale']),
...mapState('system', ['configs', 'messages'])
...mapState('system', ['configs', 'messages', 'entityConfigs', 'searchResults']),
lcType () { return this.type.toLowerCase(); }
},
created () {
this.loadEntityConfigs();
this.loadSystemConfigs(); // ensure config.entityClasses is refreshed
this.loadMessages('pre_auth', this.locale);
this.loadMessages('post_auth', this.locale);
this.selectType();
},
methods: {
// ...mapActions('system', ['loadIsActivated', 'activate']),
...mapActions('system', ['loadIsActivated', 'loadSystemConfigs', 'loadMessages', 'loadTimezones']),
...mapActions('system', [
'loadIsActivated', 'loadSystemConfigs', 'loadMessages', 'loadTimezones', 'loadEntityConfigs', 'search'
]),
setupModel(e) {
console.log('setupModel called');
},
selectType() {
this.search(this.type, this.query);
}
},
watch: {
entityConfigs (configs) {
if (configs) this.ec = configs;
},
searchResults (results) {
console.log('updating this.results='+JSON.stringify(results));
if (results) this.results = results;
}
}
};

Загрузка…
Отмена
Сохранить