[2] | 1 | <% |
---|
| 2 | from galaxy.tools.parameters import DataToolParameter, RuntimeValue |
---|
| 3 | from galaxy.util.expressions import ExpressionContext |
---|
| 4 | %> |
---|
| 5 | |
---|
| 6 | <%def name="do_inputs( inputs, values, errors, prefix, ctx=None )"> |
---|
| 7 | <% ctx = ExpressionContext( values, ctx ) %> |
---|
| 8 | %for input_index, input in enumerate( inputs.itervalues() ): |
---|
| 9 | %if input.type == "repeat": |
---|
| 10 | <div class="repeat-group"> |
---|
| 11 | <div class="form-title-row"><b>${input.title_plural}</b></div> |
---|
| 12 | <% repeat_values = values[input.name] %> |
---|
| 13 | %for i in range( len( repeat_values ) ): |
---|
| 14 | <% |
---|
| 15 | if input.name in errors: |
---|
| 16 | rep_errors = errors[input.name][i] |
---|
| 17 | else: |
---|
| 18 | rep_errors = dict() |
---|
| 19 | index = repeat_values[i]['__index__'] |
---|
| 20 | %> |
---|
| 21 | <div class="repeat-group-item"> |
---|
| 22 | <div class="form-title-row"><b>${input.title} ${i + 1}</b></div> |
---|
| 23 | ${do_inputs( input.inputs, repeat_values[ i ], rep_errors, prefix + input.name + "_" + str(index) + "|", ctx )} |
---|
| 24 | <div class="form-row"><input type="submit" name="${prefix}${input.name}_${index}_remove" value="Remove ${input.title} ${i+1}"></div> |
---|
| 25 | </div> |
---|
| 26 | %endfor |
---|
| 27 | <div class="form-row"><input type="submit" name="${prefix}${input.name}_add" value="Add new ${input.title}"></div> |
---|
| 28 | </div> |
---|
| 29 | %elif input.type == "conditional": |
---|
| 30 | <% group_values = values[input.name] %> |
---|
| 31 | <% current_case = group_values['__current_case__'] %> |
---|
| 32 | <% group_prefix = prefix + input.name + "|" %> |
---|
| 33 | <% group_errors = errors.get( input.name, {} ) %> |
---|
| 34 | ${row_for_param( input.test_param, group_values[ input.test_param.name ], group_errors, group_prefix, ctx, allow_runtime=False )} |
---|
| 35 | ${do_inputs( input.cases[ current_case ].inputs, group_values, group_errors, group_prefix, ctx )} |
---|
| 36 | %else: |
---|
| 37 | %if input.name in values: |
---|
| 38 | ${row_for_param( input, values[ input.name ], errors, prefix, ctx )} |
---|
| 39 | %else: |
---|
| 40 | <% errors[ input.name ] = 'Value not stored, displaying default' %> |
---|
| 41 | ${row_for_param( input, input.get_initial_value( trans, values ), errors, prefix, ctx )} |
---|
| 42 | %endif |
---|
| 43 | %endif |
---|
| 44 | %endfor |
---|
| 45 | </%def> |
---|
| 46 | |
---|
| 47 | <%def name="row_for_param( param, value, error_dict, prefix, ctx, allow_runtime=True )"> |
---|
| 48 | %if error_dict.has_key( param.name ): |
---|
| 49 | <% cls = "form-row form-row-error" %> |
---|
| 50 | %else: |
---|
| 51 | <% cls = "form-row" %> |
---|
| 52 | %endif |
---|
| 53 | <div class="${cls}" id="row-${prefix}${param.name}"> |
---|
| 54 | ## Data parameters are very special since their value / runtime state |
---|
| 55 | ## comes from connectors |
---|
| 56 | %if type( param ) is DataToolParameter: |
---|
| 57 | <label> |
---|
| 58 | ${param.get_label()} |
---|
| 59 | </label> |
---|
| 60 | <div> |
---|
| 61 | Data input '${param.name}' (${" or ".join( param.extensions )}) |
---|
| 62 | </div> |
---|
| 63 | %else: |
---|
| 64 | %if isinstance( value, RuntimeValue ): |
---|
| 65 | <label> |
---|
| 66 | ${param.get_label()} |
---|
| 67 | <span class="popupmenu"> |
---|
| 68 | <button type="submit" name="make_buildtime" value="${prefix}${param.name}">Set in advance</button> |
---|
| 69 | </span> |
---|
| 70 | </label> |
---|
| 71 | <div> |
---|
| 72 | <i>To be set at runtime</i> |
---|
| 73 | </div> |
---|
| 74 | %else: |
---|
| 75 | <label> |
---|
| 76 | ${param.get_label()} |
---|
| 77 | %if allow_runtime: |
---|
| 78 | <span class="popupmenu"> |
---|
| 79 | <button type="submit" name="make_runtime" value="${prefix}${param.name}">Set at runtime</button> |
---|
| 80 | </span> |
---|
| 81 | %endif |
---|
| 82 | </label> |
---|
| 83 | <div> |
---|
| 84 | ${param.get_html_field( trans, value, ctx ).get_html( prefix )} |
---|
| 85 | </div> |
---|
| 86 | %endif |
---|
| 87 | %if error_dict.has_key( param.name ): |
---|
| 88 | <div style="color: red; font-weight: bold; padding-top: 1px; padding-bottom: 3px;"> |
---|
| 89 | <div style="width: 300px;"><img style="vertical-align: middle;" src="${h.url_for('/static/style/error_small.png')}"> <span style="vertical-align: middle;">${error_dict[param.name]}</span></div> |
---|
| 90 | </div> |
---|
| 91 | %endif |
---|
| 92 | %endif |
---|
| 93 | <div style="clear: both"></div> |
---|
| 94 | </div> |
---|
| 95 | </%def> |
---|
| 96 | |
---|
| 97 | <form method="post" action="${h.url_for( action='editor_form_post' )}"> |
---|
| 98 | |
---|
| 99 | <div class="toolForm"> |
---|
| 100 | <div class="toolFormTitle">Tool: ${tool.name}</div> |
---|
| 101 | <div class="toolFormBody"> |
---|
| 102 | <input type="hidden" name="tool_id" value="${tool.id}" /> |
---|
| 103 | %for i, inputs in enumerate( tool.inputs_by_page ): |
---|
| 104 | %if tool.has_multiple_pages: |
---|
| 105 | <div class='titleRow'>Page ${i+1}</div> |
---|
| 106 | %endif |
---|
| 107 | ${do_inputs( inputs, values, errors, "" )} |
---|
| 108 | %endfor |
---|
| 109 | </div> |
---|
| 110 | </div> |
---|
| 111 | |
---|
| 112 | |
---|
| 113 | </form> |
---|