import { defineStore } from "pinia"; import http from "@/plugins/http"; import config from "@/app.config"; import { useQuasar } from "quasar"; import { useCounterMixin } from "@/stores/mixin"; import type { ResLog } from "@/modules/03_logs/interface/response/Main"; const $q = useQuasar(); import { ref } from "vue"; const mixin = useCounterMixin(); const { dialogRemove, messageError, showLoader, hideLoader, success, dialogConfirm, } = mixin; export const useDataStore = defineStore("storeData", () => { const size = ref(30); const logData = ref([]); const systemName = ref(""); const searchAfter = ref(); async function fetchLog( opts?: { size?: number; search?: string; searchAfter?: number; systemName?: string; }, isBottom?: boolean ) { const params = new URLSearchParams(); for (const [k, v] of Object.entries(opts || {})) { v !== undefined && params.append(k, v.toString()); } const query = params.toString(); showLoader(); await http .get(config.API.log + `${(params && "?".concat(query)) || ""}`) .then((res) => { const data = res.data; if (isBottom) { const test = data.map((v: any) => v._source); logData.value.push(...test); } else { logData.value = data.map((v: any) => v._source); } const lastDataSort = data[data.length - 1].sort; if (lastDataSort) { searchAfter.value = lastDataSort[0]; } }) .finally(() => { hideLoader(); }); } return { size, logData, searchAfter, systemName, fetchLog, }; });