This commit is contained in:
Florinda
2025-02-26 12:16:02 +01:00
2 changed files with 68 additions and 34 deletions

View File

@@ -96,7 +96,6 @@
<!-- Dialog per selezionare lo scenario -->
<Dialog v-model:visible="showScenarioDialog" header="Select a Scenario" :closable="false" :modal="true" style="width: 400px;">
<div>
<h5>Select a Scenario</h5>
<Dropdown
v-model="selectedScenario"
:options="scenario_store.scenariosForRE"

View File

@@ -35,55 +35,90 @@ function updateApplicationsMenu() {
console.log("selectedApp", selectedApp);
if (selectedApp != null) {
// Aggiorna il label dell'app
//Aggiorna il label dell'app
model.value[1].label = selectedApp.fe_name;
// Inizializza l'array degli item come vuoto
//Inizializza il menu principale
model.value[1].items = [];
// Se ci sono scenari disponibili, aggiungili come sottovoci
//Se ci sono scenari disponibili, processali
if (selectedApp.available_scenarios.length > 0) {
const groupedScenarios = {};
//Raggruppa gli scenari per categoria (solo se type non è null)
selectedApp.available_scenarios.forEach(app => {
let scenarioItem = {
label: app.label,
icon: 'pi pi-fw pi-wrench',
items: [], // Sub-items per ogni scenario
command: () => {
route.push({ path: `/scenario/exec/${app.scenario_id}` });
if (app.type) {
const type = app.type;
if (!groupedScenarios[type]) {
groupedScenarios[type] = [];
}
};
groupedScenarios[type].push(app);
} else {
//Se non ha categoria, lo trattiamo singolarmente
model.value[1].items.push(createScenarioItem(app));
}
});
//Creazione del menu in base ai gruppi
Object.keys(groupedScenarios).forEach(type => {
const scenarios = groupedScenarios[type];
// Aggiungi la sottovoce "Execution List"
scenarioItem.items.push({
label: 'Execution List',
icon: 'pi pi-fw pi-list',
to: '/executions/filter',
command: () => {
// Salva il nome dello scenario nello store
userPrefStore.setSelectedScenario(app.label);
}
});
if (scenarios.length >= 2) {
//Se ci sono almeno 2 scenari nella stessa categoria, creiamo un gruppo
const typeItem = {
label: type,
icon: 'pi pi-fw pi-folder',
items: []
};
// Aggiungi lo scenario alla lista principale
model.value[1].items.push(scenarioItem);
scenarios.forEach(app => {
typeItem.items.push(createScenarioItem(app));
});
model.value[1].items.push(typeItem);
}else {
//Se c'è solo un elemento, lo aggiungiamo direttamente
model.value[1].items.push(createScenarioItem(scenarios[0]));
}
});
//Aggiungi "Rev Eng Code" alla fine della lista
model.value[1].items.push({
label: 'Rev Eng Code',
icon: 'pi pi-fw pi-cog',
command: () => {
route.push({ path: '/app-browser' });
}
});
}
// Aggiungi "Rev Eng Code" alla fine della lista
model.value[1].items.push({
label: 'Rev Eng Code',
icon: 'pi pi-fw pi-wrench',
command: () => {
route.push({ path: '/app-browser' });
}
});
} else {
// Se selectedApp è nullo, svuota gli item
//Se selectedApp è nullo, svuota il menu
model.value[1].label = '';
model.value[1].items = [];
}
}
//Funzione per creare un item scenario con Execution List
function createScenarioItem(app) {
return {
label: app.label,
icon: 'pi pi-fw pi-wrench',
items: [
{
label: 'Execution List',
icon: 'pi pi-fw pi-list',
to: '/executions/filter',
command: () => {
userPrefStore.setSelectedScenario(app.label);
}
}
],
command: () => {
route.push({ path: `/scenario/exec/${app.scenario_id}` });
}
};
}