salix-front/src/stores/useArrayDataStore.js

50 lines
1.0 KiB
JavaScript
Raw Normal View History

2023-01-05 13:57:47 +00:00
import { ref } from 'vue';
import { defineStore } from 'pinia';
export const useArrayDataStore = defineStore('arrayDataStore', () => {
2023-01-10 13:58:24 +00:00
const state = ref({});
const defaultOpts = {
filter: {},
userFilter: {},
userParams: {},
url: '',
limit: 10,
skip: 0,
order: '',
data: ref(),
isLoading: false,
userParamsChanged: false,
exprBuilder: null,
searchUrl: 'params',
navigate: null,
};
2023-01-05 13:57:47 +00:00
function get(key) {
2023-01-10 13:58:24 +00:00
return state.value[key];
2023-01-05 13:57:47 +00:00
}
2023-01-10 13:58:24 +00:00
function set(key) {
state.value[key] = defaultOpts;
2023-01-10 13:58:24 +00:00
}
function clear(key) {
delete state.value[key];
2023-01-05 13:57:47 +00:00
}
function reset(key, opts = []) {
let obj = state.value[key];
if (!opts.length) obj = defaultOpts;
else
for (const opt in opts) {
if (Object.hasOwn(obj, opt)) obj[opt] = defaultOpts[opt];
}
}
2023-01-05 13:57:47 +00:00
return {
get,
set,
2023-03-01 15:20:28 +00:00
clear,
reset,
2023-01-05 13:57:47 +00:00
};
});