From 8cf3f4fc32f799273af19bc20fccb06aa3871896 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 23 Apr 2020 16:02:32 +0200 Subject: [PATCH] Fix workfow parameter connections and default values in workflow editor and run form. The main problem was that `default_source = dict(name="default", label="Default Value", type=parameter_type)`, where `parameter_type` is the top-level parameter that is always `text`. This has changed with the Conditional introduced in 20.01. In addition BooleanToolParameters use `check` instead of `value`. I also added ColorToolParameter. One thing for dev is that I think we should pull the default values out of the optional conditional so we can set defaults for required parameters. Fixes https://github.com/galaxyproject/galaxy/issues/9646 --- lib/galaxy/workflow/modules.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/galaxy/workflow/modules.py b/lib/galaxy/workflow/modules.py index 31a2348c926..c1609f029be 100644 --- a/lib/galaxy/workflow/modules.py +++ b/lib/galaxy/workflow/modules.py @@ -31,6 +31,7 @@ from galaxy.tools.parameters import ( from galaxy.tools.parameters.basic import ( BaseDataToolParameter, BooleanToolParameter, + ColorToolParameter, ConnectedValue, DataCollectionToolParameter, DataToolParameter, @@ -815,8 +816,8 @@ class InputParameterModule(WorkflowModule): parameter_type_cond.test_param = input_parameter_type cases = [] - for param_type in ["text", "integer", "float"]: - default_source = dict(name="default", label="Default Value", type=parameter_type) + for param_type in ["text", "integer", "float", "boolean", "color"]: + default_source = dict(name="default", label="Default Value", type=param_type) if param_type == "text": if parameter_type == "text": default = parameter_def.get("default") or "" @@ -838,7 +839,22 @@ class InputParameterModule(WorkflowModule): default = 0.0 default_source["value"] = default input_default_value = FloatToolParameter(None, default_source) - # color parameter defaults? + elif param_type == "boolean": + if parameter_type == "boolean": + default = parameter_def.get("default") or False + else: + default = False + default_source["value"] = default + default_source["checked"] = default + input_default_value = BooleanToolParameter(None, default_source) + elif param_type == "color": + if parameter_type == 'color': + default = parameter_def.get('default') or '#000000' + else: + default = '#000000' + default_source["value"] = default + input_default_value = ColorToolParameter(None, default_source) + optional_value = optional_param(optional) optional_cond = Conditional() optional_cond.name = "optional" @@ -1023,6 +1039,8 @@ class InputParameterModule(WorkflowModule): if optional: default_value = parameter_def.get("default", self.default_default_value) parameter_kwds["value"] = default_value + if parameter_type == 'boolean': + parameter_kwds['checked'] = default_value if "value" not in parameter_kwds and parameter_type in ["integer", "float"]: parameter_kwds["value"] = str(0)