Skip to content

Commit 7108073

Browse files
committed
Improve search results layout
1 parent 1749cce commit 7108073

File tree

7 files changed

+77
-86
lines changed

7 files changed

+77
-86
lines changed

client/src/components/index.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import Vue from 'vue'
22
import IconMdi from './IconMdi'
33
import BaseTable from './table/BaseTable'
44
import BaseTableAsync from './table/BaseTableAsync'
5-
import SearchResultsTable from './table/SearchResultsTable'
65

76
import BaseCard from './BaseCard'
87
import BaseTitle from './BaseTitle'
@@ -13,6 +12,5 @@ Vue.component('icon-mdi', IconMdi)
1312
Vue.component('Banner', Banner)
1413
Vue.component('BaseTable', BaseTable)
1514
Vue.component('BaseTableAsync', BaseTableAsync)
16-
Vue.component('SearchResultsTable', SearchResultsTable)
1715
Vue.component('BaseCard', BaseCard)
1816
Vue.component('BaseTitle', BaseTitle)
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<template>
2+
<div>
3+
<ActionButtonGoto
4+
icon="eye-outline"
5+
:path="{ name: 'entity-view', params: { idTable, idEntity: props.id } }"
6+
/>
7+
8+
</div>
9+
</template>
10+
11+
<script>
12+
import ActionButtonGoto from './ActionButtonGoto'
13+
14+
export default {
15+
components: {
16+
ActionButtonGoto
17+
},
18+
props: {
19+
idTable: Number,
20+
props: Object
21+
},
22+
methods: {}
23+
}
24+
</script>

client/src/components/table/BaseTable.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ import ActionsCharts from './ActionsCharts'
5353
import ActionsDatabaseArchived from './ActionsDatabaseArchived'
5454
import ActionsDatabaseActive from './ActionsDatabaseActive'
5555
import ActionsTableView from './ActionsTableView'
56+
import ActionsTableSearch from './ActionsTableSearch'
5657
import ActionsTable from './ActionsTable'
5758
5859
import FieldOwnerLink from './FieldOwnerLink'
@@ -69,6 +70,7 @@ export default {
6970
ActionsDatabaseArchived,
7071
ActionsDatabaseActive,
7172
ActionsTableView,
73+
ActionsTableSearch,
7274
ActionsTable,
7375
FieldOwnerLink,
7476
FieldTagList,

client/src/components/table/BaseTableAsync.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ import ActionsPlugin from './ActionsPlugin'
104104
import ActionsTable from './ActionsTable'
105105
import ActionsTableEntity from './ActionsTableEntity'
106106
import ActionsTableView from './ActionsTableView'
107+
import ActionsTableSearch from './ActionsTableSearch'
107108
import ActionsUser from './ActionsUser'
108109
109110
import FieldCheckbox from './FieldCheckbox'
@@ -132,6 +133,7 @@ export default {
132133
ActionsTable,
133134
ActionsTableEntity,
134135
ActionsTableView,
136+
ActionsTableSearch,
135137
ActionsUser,
136138
137139
FieldCronInfo,

client/src/components/table/SearchResultsTable.vue

Lines changed: 0 additions & 68 deletions
This file was deleted.

client/src/services/data.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,11 @@ const ImportService = {
108108
}
109109
}
110110

111+
111112
const SearchService = {
112113
searchEntries(query) {
113-
// TODO
114-
console.log("SearchService")
115114
const queryString = query != null ? '?' + QueryString(query) : ''
116-
return ApiService.get(`entries/search/${queryString}`)
115+
return ApiService.get(`tables/search/${queryString}`)
117116
}
118117
}
119118

client/src/views/Dashboard.vue

Lines changed: 47 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
<div class="columns">
4343
<div class="column is-6">
4444
<VField :label="$t('searchTermLabel')" rules="required">
45-
<b-input v-model="searchTerm" />
45+
<b-input v-model="searchInput" />
4646
</VField>
4747
</div>
4848
<div class="column is-6">
@@ -54,7 +54,16 @@
5454
</div>
5555
</div>
5656

57-
<BaseTable :data="searchResults" :fields="fields.results" />
57+
<BaseCard v-for="searchTable in searchTables" :title="searchTable.name" :key="'searchResults'+searchTable.id">
58+
<!-- <div>{{ searchTableResults[searchTable.id] }}</div> -->
59+
<BaseTableAsync
60+
:table="searchTable"
61+
:tableEntries="searchTableResults[searchTable.id] || {}"
62+
@update="updateTableEntries(searchTable.id)"
63+
tableActionsComponent="ActionsTableSearch"
64+
/>
65+
</BaseCard>
66+
5867
</BaseCard>
5968
</ValidationObserver>
6069

@@ -63,7 +72,7 @@
6372

6473
<script>
6574
import { FilterQuery } from '@/utils/helpers'
66-
import { DataService, SearchService } from '@/services/data'
75+
import { DataService, SearchService, TableService } from '@/services/data'
6776
import { mapState } from 'vuex'
6877
import BaseCardChart from '@/components/charts/BaseCardChart'
6978
@@ -72,8 +81,12 @@ export default {
7281
components: { BaseCardChart },
7382
data() {
7483
return {
84+
searchInput: '',
7585
searchTerm: '',
76-
searchResults: null,
86+
searchTables: [],
87+
searchTableIds: [],
88+
searchTableResults: {},
89+
searchFilterMode: false,
7790
cards: [],
7891
fields: {
7992
charts: [
@@ -173,20 +186,41 @@ export default {
173186
})
174187
})
175188
},
189+
updateTableEntries(tableId) {
190+
TableService.getEntries(tableId, {search: this.searchTerm}).then(response => {
191+
this.searchTableResults[tableId] = response
192+
})
193+
},
176194
submitSearch() {
195+
this.searchTables = []
196+
this.searchTableIds = []
197+
this.searchTableResults = {}
198+
this.searchTerm = this.searchInput
199+
177200
SearchService.searchEntries({
178201
query: this.searchTerm
179202
}).then(response => {
180-
let results = []
181-
for (const item of response.results) {
182-
results.push({
183-
data: {
184-
context: JSON.stringify(item.data)
185-
}
186-
})
203+
let resultTableIds = []
204+
for (const item of response) {
205+
resultTableIds.push(item.table)
187206
}
188-
this.searchResults = results
189-
console.log(this.searchResults)
207+
this.searchTableIds = resultTableIds
208+
209+
let resultTables = []
210+
// let results = {}
211+
this.searchTableIds.forEach(tableId => {
212+
TableService.getTable(tableId).then(response => {
213+
resultTables.push(response)
214+
})
215+
// TableService.getEntries(tableId, {search: this.searchTerm}).then(response => {
216+
// results[tableId] = response
217+
// })
218+
this.updateTableEntries(tableId)
219+
})
220+
// this.searchTableResults = results
221+
// console.log('Search table results', this.searchTableResults)
222+
this.searchTables = resultTables
223+
console.log('Search tables', this.searchTables)
190224
})
191225
}
192226
}

0 commit comments

Comments
 (0)