diff --git a/src/core/js/form_panel.js b/src/core/js/form_panel.js index 9728a4ccea54c36d85399a3148373b7372108db0..a6c204d77c5c59695e98d1d206b2f7cf80d8a6ed 100644 --- a/src/core/js/form_panel.js +++ b/src/core/js/form_panel.js @@ -67,13 +67,26 @@ var form_panel = new function () { /** * Creates a callback function that toggles the form panel which */ - this.create_show_form_callback = function (panel_id, title, form_config) { + this.create_show_form_callback = function ( + panel_id, title, form_config, form_creator=undefined + ) { return (e) => { logger.trace("enter show_form_panel", e); const panel = $(form_panel.get_form_panel(panel_id, title)); if (panel.find("form").length === 0) { - const form = form_elements.make_form(form_config); + if (form_config != undefined && form_creator!=undefined){ + throw new Error("create_show_form_callback takes either a FormConfig or a function that creates the form"); + } + + var form; + if (form_config != undefined ){ + form = form_elements.make_form(form_config); + } else if (form_creator != undefined ){ + form = form_creator(); + } else { + throw new Error("create_show_form_callback takes a FormConfig or a function that creates the form"); + } panel.append(form); $(form).find(".selectpicker").selectpicker();