Arc-hive-list/src/store.js

67 lines
1.5 KiB
JavaScript

/*
This file is part of ArciveList.
# SPDX-FileCopyrightText: 2021 Hangar.org
# SPDX-License-Identifier: AGPL-3.0-or-later
*/
import Vue from 'vue'
import Vuex from 'vuex'
import _ from 'underscore';
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
search_text: "",
sites: [],
filtered_sites: [],
page_count: 1,
},
mutations: {
setSearchText(state, text) {
state.search_text = text
},
setSites(state, payload) {
state.sites = _.sortBy(payload.sites, payload.column_name)
},
incrementPageCount(state) {
state.page_count = state.page_count +1
},
setFilteredSites(state, 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)
}
}
state.filtered_sites = sites
},
setColumnOrder(state, payload) {
state.sites = _.sortBy(state.sites, payload.column_name)
state.filtered_sites = _.sortBy(state.filtered_sites, payload.column_name)
if (payload.order == 'desc') {
state.sites.reverse()
state.filtered_sites.reverse()
}
},
},
getters: {
getDisplayedSites: state => {
if (state.search_text === "") {
return state.sites
}
return state.filtered_sites
},
getPageCount: state => {
return state.page_count
},
}
})
export default store