Files
hermione-fe/src/stores/ScenarioExecutionStore.js
2025-03-19 16:54:36 +01:00

79 lines
2.8 KiB
JavaScript

import { defineStore } from 'pinia';
import { computed, ref } from 'vue';
import { ScenarioService } from '../service/ScenarioService';
import { LoadingStore } from './LoadingStore';
export const ScenarioExecutionStore = defineStore('scenario_execution_store', () => {
const lstScenarioExecution = ref([]);
const selectedExecScenario = ref(null);
const loadingStore = LoadingStore();
const totalRecords = ref(0); // Numero totale di record
const currentPage = ref(0); // Pagina corrente
const pageSize = ref(10); // Numero di record per pagina
const filters = ref({}); // Oggetto per memorizzare i filtri
// Funzione per recuperare le esecuzioni con filtri e paginazione
async function fetchScenariosExecution(page = 0, size = 10, filters, sortField, sortOrder) {
loadingStore.scenario_loading = true;
try {
console.log("Fetching executions with filters:", page, size, filters, sortField, sortOrder);
const resp = await ScenarioService.getExecScenariosByUser(page, size, filters, sortField, sortOrder); // Passiamo anche i filtri
lstScenarioExecution.value = resp.data.content;
totalRecords.value = resp.data.totalElements;
currentPage.value = page;
pageSize.value = size;
} catch (error) {
console.error("Error fetching executions:", error);
} finally {
loadingStore.scenario_loading = false;
}
}
const scenariosExecution = computed(() => {
return lstScenarioExecution.value;
});
const getSelectedExecScenario = computed(() => {
return selectedExecScenario.value;
});
const getCurrentPage = computed(() => {
return currentPage.value;
});
const getPageSize = computed(() => {
return pageSize.value;
});
const getTotalRecords = computed(() => {
return totalRecords.value;
});
const setSelectedExecScenario = (execScenario) => {
selectedExecScenario.value = execScenario;
};
// Funzione per aggiornare i filtri
const updateFilters = (newFilters) => {
console.log("New filters:", newFilters);
filters.value = newFilters;
filters.value = encodeURIComponent(JSON.stringify(newFilters));
fetchScenariosExecution(currentPage.value, pageSize.value, filters.value); // Ricarica con i nuovi filtri
};
return {
getCurrentPage,
getPageSize,
getTotalRecords,
fetchScenariosExecution,
selectedExecScenario,
lstScenarioExecution,
scenariosExecution,
getSelectedExecScenario,
setSelectedExecScenario,
updateFilters, // Aggiunto per aggiornare i filtri
filters // Rende disponibile i filtri come parte dello store
};
});