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({});
|
2024-06-24 14:17:21 +00:00
|
|
|
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) {
|
2024-06-24 14:17:21 +00:00
|
|
|
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
|
|
|
}
|
|
|
|
|
2024-06-24 14:17:21 +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,
|
2024-06-24 14:17:21 +00:00
|
|
|
reset,
|
2023-01-05 13:57:47 +00:00
|
|
|
};
|
|
|
|
});
|