diff --git a/aiserver.py b/aiserver.py index f1dacc40..56bd527a 100644 --- a/aiserver.py +++ b/aiserver.py @@ -6293,9 +6293,9 @@ def UI_2_select_model(data): @logger.catch def UI_2_resubmit_model_info(data): valid_loaders = {} - for model_backend in set([item.model_backend for sublist in model_menu for item in model_menu[sublist] if item.name == data['id']]): + for model_backend in data['valid_backends']: valid_loaders[model_backend] = model_backends[model_backend].get_requested_parameters(data["name"], data["path"] if 'path' in data else None, data["menu"], parameters=data) - emit("selected_model_info", {"model_backends": valid_loaders}) + emit("selected_model_info", {"model_backends": valid_loaders, 'selected_model_backend': data['plugin']}) #==================================================================# # Event triggered when user loads a model diff --git a/modeling/inference_model.py b/modeling/inference_model.py index bc11ec11..a2d4fa63 100644 --- a/modeling/inference_model.py +++ b/modeling/inference_model.py @@ -171,10 +171,10 @@ class InferenceModel: self.capabilties = ModelCapabilities() self.model_name = "Not Defined" - def is_valid(self, model_name, model_path, menu_path, vram): + def is_valid(self, model_name, model_path, menu_path): return True - def requested_parameters(self, model_name, model_path, menu_path, vram): + def requested_parameters(self, model_name, model_path, menu_path): return {} def set_input_parameters(self, parameters): diff --git a/static/application.js b/static/application.js index f8905a45..0c689646 100644 --- a/static/application.js +++ b/static/application.js @@ -3977,6 +3977,12 @@ function show_model_menu(data) { } +function getOptions(id){ + let selectElement = document.getElementById(id); + let optionNames = [...selectElement.options].map(o => o.text); + return optionNames; +} + function model_settings_checker() { //get check value: missing_element = false; @@ -4028,6 +4034,8 @@ function model_settings_checker() { data = {...data, ...selected_model_data}; data['plugin'] = document.getElementById("modelplugin").value; + data['valid_backends'] = getOptions("modelplugin"); + socket.emit("resubmit_model_info", data); } @@ -4101,6 +4109,10 @@ function model_settings_checker() { } } +function set_toggle(id) { + $('#'+id).bootstrapToggle({size: "mini", onstyle: "success", toggle: "toggle"}); +} + function selected_model_info(sent_data) { const data = sent_data['model_backends']; //clear out the loadmodelsettings @@ -4188,6 +4200,7 @@ function selected_model_info(sent_data) { toggle.checked = item['default']; toggle.onclick = onchange_event; toggle.setAttribute("data_type", item['unit']); + toggle.setAttribute("refresh_model_inputs", item['refresh_model_inputs']); if ('check' in item) { toggle.check_data = item['check']; @@ -4195,9 +4208,7 @@ function selected_model_info(sent_data) { toggle.check_data = null; } new_setting.querySelector('#blank_model_settings_toggle').append(toggle); - setTimeout(function() { - $('#'+loader + "\\|" + item['id'] + "_value").bootstrapToggle({size: "mini", onstyle: "success", toggle: "toggle"}); - }, 200); + setTimeout(set_toggle, 200, loader + "\\|" + item['id'] + "_value"); toggle.noresubmit = true; toggle.onclick(); toggle.noresubmit = false; @@ -4283,6 +4294,10 @@ function selected_model_info(sent_data) { } } + if ('selected_model_backend' in sent_data) { + document.getElementById("modelplugin").value = sent_data['selected_model_backend']; + } + //unhide the first plugin settings if (document.getElementById(document.getElementById("modelplugin").value + "_settings_area")) { document.getElementById(document.getElementById("modelplugin").value + "_settings_area").classList.remove("hidden"); diff --git a/static/koboldai.js b/static/koboldai.js index c9d66cb6..94ac6ce4 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -1651,6 +1651,12 @@ function show_model_menu(data) { } +function getOptions(id){ + let selectElement = document.getElementById(id); + let optionNames = [...selectElement.options].map(o => o.text); + return optionNames; +} + function model_settings_checker() { //get check value: missing_element = false; @@ -1702,6 +1708,7 @@ function model_settings_checker() { data = {...data, ...selected_model_data}; data['plugin'] = document.getElementById("modelplugin").value; + data['valid_backends'] = getOptions("modelplugin"); socket.emit("resubmit_model_info", data); } @@ -1775,7 +1782,13 @@ function model_settings_checker() { } } +function set_toggle(id) { + $('#'+id).bootstrapToggle({size: "mini", onstyle: "success", toggle: "toggle"}); +} + +var temp; function selected_model_info(sent_data) { + temp = sent_data; const data = sent_data['model_backends']; //clear out the loadmodelsettings var loadmodelsettings = document.getElementById('loadmodelsettings') @@ -1869,9 +1882,7 @@ function selected_model_info(sent_data) { toggle.check_data = null; } new_setting.querySelector('#blank_model_settings_toggle').append(toggle); - setTimeout(function() { - $('#'+loader + "\\|" + item['id'] + "_value").bootstrapToggle({size: "mini", onstyle: "success", toggle: "toggle"}); - }, 200); + setTimeout(set_toggle, 200, loader + "\\|" + item['id'] + "_value"); toggle.noresubmit = true; toggle.onclick(); toggle.noresubmit = false; @@ -1957,6 +1968,10 @@ function selected_model_info(sent_data) { } } + if ('selected_model_backend' in sent_data) { + document.getElementById("modelplugin").value = sent_data['selected_model_backend']; + } + //unhide the first plugin settings if (document.getElementById(document.getElementById("modelplugin").value + "_settings_area")) { document.getElementById(document.getElementById("modelplugin").value + "_settings_area").classList.remove("hidden");