From dc9d4e03ff29a7d228cecc22efb24073698de6c7 Mon Sep 17 00:00:00 2001 From: buttle Date: Wed, 24 Nov 2021 14:40:53 +0100 Subject: [PATCH] fixes order_by --- src/components/archiveList.vue | 3 +++ src/components/search.vue | 1 - src/store.js | 35 ++++++++++++++++++++++++++++++---- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/components/archiveList.vue b/src/components/archiveList.vue index 49a1161..a89910a 100644 --- a/src/components/archiveList.vue +++ b/src/components/archiveList.vue @@ -200,4 +200,7 @@ export default { .activeColumn { color: black; } +.accordion-title { + cursor: pointer; +} diff --git a/src/components/search.vue b/src/components/search.vue index eaeaa51..93c8158 100644 --- a/src/components/search.vue +++ b/src/components/search.vue @@ -48,7 +48,6 @@ export default { .then(function (response) { //console.log(response.data) self.setFilteredSites(Object.assign({}, local_search_result, response.data)) - //self.setFilteredSites(response.data) }) .catch(function (error) { console.log(error); diff --git a/src/store.js b/src/store.js index 02903f5..fd12649 100644 --- a/src/store.js +++ b/src/store.js @@ -30,13 +30,11 @@ const store = new Vuex.Store({ state.page_count = state.page_count +1 }, setFilteredSites(state, filtered_site_ids) { - console.log('filtered_site_ids') console.log(filtered_site_ids) var sites = [] for (const [site_id, weight] of Object.entries(filtered_site_ids)) { var site = state.sites.find(x => x.id == site_id) if (site) { - console.log('push') sites.push(site) } } @@ -44,12 +42,16 @@ const store = new Vuex.Store({ state.page_count = 1 }, setColumnOrder(state, payload) { - state.sites = _.sortBy(state.sites, payload.column_name) - state.filtered_sites = _.sortBy(state.filtered_sites, payload.column_name) + //state.sites = _.sortBy(state.sites, payload.column_name) + //state.filtered_sites = _.sortBy(state.filtered_sites, payload.column_name) + state.sites = order_items(state.sites, payload.column_name, payload.order) + state.filtered_sites = order_items(state.filtered_sites, payload.column_name, payload.order) + /* if (payload.order == 'desc') { state.sites.reverse() state.filtered_sites.reverse() } + */ }, }, getters: { @@ -96,5 +98,30 @@ const store = new Vuex.Store({ }, } }) +function order_items(items, field_name, ascending) { + items.sort(function compareFn(first_el, second_el) { + if (field_name == 'artist') { + field_name = 'currator' + } + if (field_name == 'date') { + field_name = 'project_date' + } + console.log("sss: "+ field_name) + console.log(first_el) + if (first_el[field_name] === undefined || first_el[field_name] === ""){ + return -1 + } + if (second_el[field_name] === undefined || second_el[field_name] === ""){ + return 1 + } + first_el = first_el[field_name].toLowerCase() + second_el = second_el[field_name].toLowerCase() + if (first_el < second_el) { + return -1; + } + return 1; + }) + return ascending == 'asc' ? items : items.reverse() +} export default store