diff --git a/src/components/DynamicPicker.vue b/src/components/DynamicPicker.vue
new file mode 100644
index 0000000..f39aceb
--- /dev/null
+++ b/src/components/DynamicPicker.vue
@@ -0,0 +1,228 @@
+
+
+
+
+
+
+
+
+ Loading options...
+
+
+
+
+
+ {{ error }}
+
+
+
+
+
+ No options available
+
+
+
+
+
+
+
diff --git a/src/service/FileUploadService.js b/src/service/FileUploadService.js
new file mode 100644
index 0000000..49405c8
--- /dev/null
+++ b/src/service/FileUploadService.js
@@ -0,0 +1,21 @@
+import axios from 'axios';
+
+export const FileUploadService = {
+ /**
+ * Elimina un file dal server
+ * @param {string} fileName - Nome del file da eliminare
+ * @param {string} folderName - Nome della cartella contenente il file
+ * @returns {Promise} Promise con la risposta del server
+ */
+ deleteFile(fileName, folderName) {
+ return axios.post(
+ '/deleteFile',
+ { fileName, folderName },
+ {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+ }
+ );
+ }
+};
diff --git a/src/service/KSDocumentService.js b/src/service/KSDocumentService.js
new file mode 100644
index 0000000..c736377
--- /dev/null
+++ b/src/service/KSDocumentService.js
@@ -0,0 +1,28 @@
+import axios from 'axios';
+
+export const KSDocumentService = {
+ /**
+ * Recupera tutti i KSDocument per il progetto selezionato dall'utente corrente
+ * @returns {Promise} Promise con la lista di KSDocument
+ */
+ getKSDocuments() {
+ return axios.get('/ksDocuments');
+ },
+
+ /**
+ * Recupera tutti i KSDocument completati per il progetto selezionato dall'utente corrente
+ * @returns {Promise} Promise con la lista di KSDocument completati
+ */
+ getCompletedKSDocuments() {
+ return axios.get('/ksDocuments/completed');
+ },
+
+ /**
+ * Recupera tutti i KSDocument per un progetto specifico
+ * @param {string} projectId - ID del progetto
+ * @returns {Promise} Promise con la lista di KSDocument
+ */
+ getKSDocumentsByProject(projectId) {
+ return axios.post('/ksDocuments/byProject', projectId);
+ }
+};
diff --git a/src/service/ScenarioService.js b/src/service/ScenarioService.js
index 99306bb..867c0ab 100644
--- a/src/service/ScenarioService.js
+++ b/src/service/ScenarioService.js
@@ -1,39 +1,52 @@
import axios from 'axios';
export const ScenarioService = {
-
getScenarios() {
- return axios.get('/scenarios')
-
+ return axios.get('/scenarios');
},
getScenariosProject(projectId) {
- return axios.post('/scenariosProject' , projectId)
-
+ return axios.post('/scenariosProject', projectId);
},
getScenariosApplication(app) {
- return axios.post('/scenariosByApp' , app)
-
+ return axios.post('/scenariosByApp', app);
},
getScenariosCross() {
- return axios.get('/scenariosCross')
-
+ return axios.get('/scenariosCross');
},
getExecScenariosByUser(page = 0, size = 10, filters = {}, sortField, sortOrder) {
// Filtri potrebbero essere vuoti, quindi rimuoviamoli se non necessari
- const requestBody = { page, size, ...filters, sortField, sortOrder };
+ const requestBody = { page, size, ...filters, sortField, sortOrder };
return axios.post('/executions', requestBody);
- }
-
- ,
- getScenariosForRE(){
- return axios.get('/getScenariosForRE')
- },
- updateScenarioExecRating(id, rating) {
- return axios.get('/updateRating?id=' + id + '&rating=' + rating)
},
- getExecScenarioByProject () {
- return axios.get('/getExecScenarioByProject')
- }
+ getScenariosForRE() {
+ return axios.get('/getScenariosForRE');
+ },
+ updateScenarioExecRating(id, rating) {
+ return axios.get('/updateRating?id=' + id + '&rating=' + rating);
+ },
-}
\ No newline at end of file
+ getExecScenarioByProject() {
+ return axios.get('/getExecScenarioByProject');
+ },
+
+ // Nuovo metodo per recuperare un singolo scenario
+ getScenarioById(id) {
+ return axios.get(`/scenarios/${id}`);
+ },
+
+ // Nuovo metodo per eseguire uno scenario in modo asincrono
+ executeScenarioAsync(data) {
+ return axios.post('/scenarios/execute-async', data);
+ },
+
+ // Nuovo metodo per recuperare i dettagli di esecuzione di uno scenario
+ getScenarioExecution(execId) {
+ return axios.get('/scenarios/execute/' + execId);
+ },
+
+ // Nuovo metodo per recuperare il progresso di esecuzione
+ getExecutionProgress(execId) {
+ return axios.get('/scenarios/getExecutionProgress/' + execId);
+ }
+};
diff --git a/src/stores/FileUploadStore.js b/src/stores/FileUploadStore.js
new file mode 100644
index 0000000..f24b2db
--- /dev/null
+++ b/src/stores/FileUploadStore.js
@@ -0,0 +1,55 @@
+import { defineStore } from 'pinia';
+import { ref } from 'vue';
+import { FileUploadService } from '../service/FileUploadService';
+
+export const FileUploadStore = defineStore('file_upload_store', () => {
+ const uploadedFiles = ref([]);
+ const folderName = ref('');
+ const numberPrFiles = ref(0);
+
+ // Funzione per eliminare un file
+ async function deleteFile(fileName, folderName) {
+ try {
+ const response = await FileUploadService.deleteFile(fileName, folderName);
+ return response;
+ } catch (error) {
+ console.error('Error deleting file:', error);
+ throw error;
+ }
+ }
+
+ // Funzione per generare un ID univoco per la cartella
+ function generateUniqueFolderId() {
+ const timestamp = Date.now();
+ const randomNumber = Math.floor(Math.random() * 1000);
+ const newFolderName = `${timestamp}_${randomNumber}`;
+ folderName.value = newFolderName;
+ return newFolderName;
+ }
+
+ // Funzione per resettare lo store
+ function resetStore() {
+ uploadedFiles.value = [];
+ folderName.value = '';
+ numberPrFiles.value = 0;
+ }
+
+ // Funzione per aggiornare il numero di file PR
+ function updatePrFilesCount(increment = true) {
+ if (increment) {
+ numberPrFiles.value += 1;
+ } else {
+ numberPrFiles.value -= 1;
+ }
+ }
+
+ return {
+ uploadedFiles,
+ folderName,
+ numberPrFiles,
+ deleteFile,
+ generateUniqueFolderId,
+ resetStore,
+ updatePrFilesCount
+ };
+});
diff --git a/src/stores/ScenarioExecutionStore.js b/src/stores/ScenarioExecutionStore.js
index 9dd79f5..544360f 100644
--- a/src/stores/ScenarioExecutionStore.js
+++ b/src/stores/ScenarioExecutionStore.js
@@ -1,11 +1,15 @@
import { defineStore } from 'pinia';
import { computed, ref } from 'vue';
import { ScenarioExecutionService } from '../service/ScenarioExecutionService';
+import { ScenarioService } from '../service/ScenarioService';
import { LoadingStore } from './LoadingStore';
export const ScenarioExecutionStore = defineStore('scenario_execution_store', () => {
const lstScenarioExecution = ref([]);
const selectedExecScenario = ref(null);
+ const currentScenario = ref({});
+ const currentExecution = ref(null);
+ const executionProgress = ref(null);
const loadingStore = LoadingStore();
const totalRecords = ref(0); // Numero totale di record
@@ -30,6 +34,53 @@ export const ScenarioExecutionStore = defineStore('scenario_execution_store', ()
}
}
+ // Funzione per recuperare un singolo scenario
+ async function fetchScenario(id) {
+ try {
+ const response = await ScenarioService.getScenarioById(id);
+ currentScenario.value = response.data;
+ return response.data;
+ } catch (error) {
+ console.error('Error fetching scenario:', error);
+ throw error;
+ }
+ }
+
+ // Funzione per eseguire uno scenario
+ async function executeScenario(data) {
+ try {
+ const response = await ScenarioService.executeScenarioAsync(data);
+ currentExecution.value = response.data;
+ return response.data;
+ } catch (error) {
+ console.error('Error executing scenario:', error);
+ throw error;
+ }
+ }
+
+ // Funzione per recuperare i dettagli di esecuzione
+ async function getScenarioExecution(execId) {
+ try {
+ const response = await ScenarioService.getScenarioExecution(execId);
+ return response.data;
+ } catch (error) {
+ console.error('Error getting scenario execution:', error);
+ throw error;
+ }
+ }
+
+ // Funzione per recuperare il progresso di esecuzione
+ async function getExecutionProgress(execId) {
+ try {
+ const response = await ScenarioService.getExecutionProgress(execId);
+ executionProgress.value = response.data;
+ return response.data;
+ } catch (error) {
+ console.error('Error getting execution progress:', error);
+ throw error;
+ }
+ }
+
async function downloadFile(filePath, executionId) {
loadingStore.scenario_loading = true;
try {
@@ -80,6 +131,18 @@ export const ScenarioExecutionStore = defineStore('scenario_execution_store', ()
return totalRecords.value;
});
+ const getCurrentScenario = computed(() => {
+ return currentScenario.value;
+ });
+
+ const getCurrentExecution = computed(() => {
+ return currentExecution.value;
+ });
+
+ const getExecutionProgressData = computed(() => {
+ return executionProgress.value;
+ });
+
const setSelectedExecScenario = (execScenario) => {
selectedExecScenario.value = execScenario;
};
@@ -96,6 +159,9 @@ export const ScenarioExecutionStore = defineStore('scenario_execution_store', ()
const resetStore = () => {
lstScenarioExecution.value = [];
selectedExecScenario.value = null;
+ currentScenario.value = {};
+ currentExecution.value = null;
+ executionProgress.value = null;
totalRecords.value = 0;
currentPage.value = 0;
pageSize.value = 10;
@@ -106,15 +172,22 @@ export const ScenarioExecutionStore = defineStore('scenario_execution_store', ()
getCurrentPage,
getPageSize,
getTotalRecords,
+ getCurrentScenario,
+ getCurrentExecution,
+ getExecutionProgressData,
fetchScenariosExecution,
+ fetchScenario,
+ executeScenario,
+ getScenarioExecution,
+ getExecutionProgress,
downloadFile,
selectedExecScenario,
lstScenarioExecution,
scenariosExecution,
getSelectedExecScenario,
setSelectedExecScenario,
- updateFilters, // Aggiunto per aggiornare i filtri
+ updateFilters,
filters,
- resetStore // Rende disponibile i filtri come parte dello store
+ resetStore
};
});
diff --git a/src/views/pages/ScenarioExec.vue b/src/views/pages/ScenarioExec.vue
index 741fbec..322375e 100644
--- a/src/views/pages/ScenarioExec.vue
+++ b/src/views/pages/ScenarioExec.vue
@@ -148,12 +148,18 @@
-
-
-
-
+