async function getAllModules() { return await $.post(`https://${resName}/getAllModules`); } function createDivForModule(moduleType, options) { const div = $(`

${moduleType}

`); const select = div.find(".module-options"); select.data("moduleType", moduleType); options.forEach(name => { const option = $(``); option.appendTo(select); }); return div; } async function loadModulesSettings(modulesSettings) { const modulesDiv = $(".modules-dialog"); modulesDiv.empty(); const modules = await getAllModules(); let unselectedModules = []; modules.forEach(module => { const div = createDivForModule(module.type, module.options); div.appendTo(modulesDiv); if (modulesSettings[module.type] == "not_selected") { unselectedModules.push(module); } }); // For each select, set the value to the value in modulesSettings modulesDiv.find(".module-options").each((index, select) => { const moduleType = $(select).data("moduleType"); const moduleName = modulesSettings[moduleType]; $(select).val(moduleName); }); // For each not_selected module, add it to unselectedModules if(unselectedModules.length <= 0) return; let tabs = []; unselectedModules.forEach(module => { const tab = { id: module.type, title: module.type, description: "Choose the one you prefer (can be changed later)", options: module.otions.map(option => { return { label: undefined, value: option } } ) }; tabs.push(tab); }); const results = await wizard(tabs) } function getModulesSettings() { const modulesSettings = {}; $(".modules-dialog .module-options").each((index, select) => { const moduleType = $(select).data("moduleType"); const moduleName = $(select).val(); modulesSettings[moduleType] = moduleName; }); return modulesSettings; }