diff --git a/src/components/SingleClassViewer.vue b/src/components/SingleClassViewer.vue index 618530b..21bf5db 100644 --- a/src/components/SingleClassViewer.vue +++ b/src/components/SingleClassViewer.vue @@ -93,6 +93,23 @@ + + + @@ -100,6 +117,7 @@ import { ApplicationCodeService } from '@/service/ApplicationCodeService'; import { LoadingStore } from '@/stores/LoadingStore'; +import { ScenarioStore } from '@/stores/ScenarioStore'; import { UserPrefStore } from '@/stores/UserPrefStore.js'; import axios from 'axios'; import { MdPreview } from 'md-editor-v3'; @@ -132,6 +150,7 @@ const { className } = toRefs(props); const classDetails = ref(null); const classLoaded = ref(false); const loadingStore = LoadingStore(); +const scenario_store = ScenarioStore(); const nodes = ref(null) const edges = ref(null) const dark = ref(false) @@ -144,6 +163,9 @@ const userPrefStore = UserPrefStore(); const toast = useToast(); const loading_data = ref(false); const { graph, layout, previousDirection } = useLayout() +const showScenarioDialog = ref(false); // Controlla la visibilità del dialog +const selectedScenario = ref(null); // Lo scenario selezionato +const scenarios = ref([]); // Lista degli scenari disponibili const commonRevRequest = reactive({ repositoryEntityId: '', applicationName: '', @@ -151,18 +173,83 @@ const commonRevRequest = reactive({ fullClassQualifiedName: '', applicationVersion: '', deleteExistingData: true, // Valore booleano - applicationType: 'JAVA', - commitSha: '' + applicationType: '', + commitSha: '', + scenarioId: '' }); onMounted(() => { loadClassDetails(); console.log("class details: ", classDetails.value); console.log("class name: ", className.value); + }); + + +// Mostra il dialog quando si clicca il pulsante const openToastRE = () => { + showScenarioDialog.value = true; +}; + +// Esegue l'azione con lo scenario selezionato +const executeScenario = () => { + if (!selectedScenario.value) { + toast.add({ + severity: 'warn', + summary: 'Attenzione', + detail: 'Seleziona uno scenario prima di continuare', + life: 3000 + }); + return; + } + + // Imposta l'ID dello scenario + commonRevRequest.scenarioId = selectedScenario.value.id; + + // Nasconde il dialog e chiama la funzione per l'RE + showScenarioDialog.value = false; + doREClass(); +}; + +function checkExtension() { + // Ottieni la parte dopo il punto + const extension = userPrefStore.getSelFile.split('.').pop(); + + // Controlla se è "java" + if (extension === 'java' || extension === 'jsp') { + commonRevRequest.applicationType = extension; + } else { + commonRevRequest.applicationType = 'GENERIC'; + } + + }; + +// Logica per eseguire l'RE +const doREClass = () => { + commonRevRequest.fullClassQualifiedName = props.className; + checkExtension(); + console.log("commonRevRequest.fullClassQualifiedName", commonRevRequest.fullClassQualifiedName); + commonRevRequest.applicationName = userPrefStore.getSelApp.internal_name; + commonRevRequest.applicationProjectName = userPrefStore.selectedProject.internal_name; + + ApplicationCodeService.doRevEngForSingleClass(commonRevRequest) + .then(response => { + if (response.data !== "KO") { + startPolling(response.data); + } else { + toast.add({ + severity: 'error', + summary: 'Errore', + detail: 'Si è verificato un errore. Riprova più tardi.', + life: 3000 + }); + } + }); +}; + +/*const openToastRE = () => { confirm.require({ message: 'Do you want to proceed for the Reverse Engeeniring for this class?', header: 'RE Confirmation', @@ -196,8 +283,7 @@ const doREClass = () => { }) -} - +}*/ // Function to start polling function startPolling(processId) { // Set polling interval (every 5 seconds in this case) @@ -257,7 +343,7 @@ axios.get('/java-re-module/getProgressRevSingleClass/'+processId).then(response } function tabUpdate(value) { - console.log(value); + console.log("tab update: ",value); if ((value === 'class-description' || value ==='class-code') && classLoaded.value === false) { loadClassDetails() } @@ -273,7 +359,7 @@ function updateSelectedMethod(value) { } loadingMethod.value = true; axios.get("/source-module/getMethodDetailedInfo?methodName=" + value.value ).then(resp => { - console.log(resp.data); + console.log("updateSelectedMethod",resp.data); selectedMethodDetails.value = resp.data; loadingMethod.value = false; }) @@ -296,9 +382,13 @@ function loadClassDetails() { function createMethodList() { let methods = []; + console.log("classDetails.value.methods", classDetails.value.methods); classDetails.value.methods.forEach(method => { methods.push({name: method.split(".").slice(-1)[0], value: method}); }); + console.log("methods", methods); + methods.sort((a, b) => a.name.localeCompare(b.name)); + console.log("methods ordered", methods); return methods; } @@ -307,4 +397,6 @@ function createMethodList() { diff --git a/src/layout/AppTopbar.vue b/src/layout/AppTopbar.vue index debc4de..f1f0f53 100644 --- a/src/layout/AppTopbar.vue +++ b/src/layout/AppTopbar.vue @@ -12,7 +12,6 @@ import { UserPrefStore } from '../stores/UserPrefStore.js'; import { computed, ref, watch } from 'vue'; import { useRoute } from 'vue-router'; import { JellyfishLoader, RiseLoader } from "vue3-spinner"; -import AppConfigurator from './AppConfigurator.vue'; import AppProfileMenu from './AppProfileMenu.vue'; const auth = useAuth(); @@ -110,7 +109,9 @@ watch(() => userPrefStore.getSelApp, appUpdated, { immediate: true });