| 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> | 
|---|