1 | <!-- --> |
---|
2 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
---|
3 | |
---|
4 | <% |
---|
5 | from galaxy.util.expressions import ExpressionContext |
---|
6 | %> |
---|
7 | |
---|
8 | <html> |
---|
9 | |
---|
10 | <head> |
---|
11 | <title>Galaxy</title> |
---|
12 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
---|
13 | ${h.css( "base", "autocomplete_tagging" )} |
---|
14 | ${h.js( "jquery", "galaxy.base", "jquery.autocomplete" )} |
---|
15 | <script type="text/javascript"> |
---|
16 | $(function() { |
---|
17 | $(window).bind("refresh_on_change", function() { |
---|
18 | $(':file').each( function() { |
---|
19 | var file = $(this); |
---|
20 | var file_value = file.val(); |
---|
21 | if (file_value) { |
---|
22 | // disable file input, since we don't want to upload the file on refresh |
---|
23 | var file_name = $(this).attr("name"); |
---|
24 | file.attr( { name: 'replaced_file_input_' + file_name, disabled: true } ); |
---|
25 | // create a new hidden field which stores the filename and has the original name of the file input |
---|
26 | var new_file_input = $(document.createElement('input')); |
---|
27 | new_file_input.attr( { "type", "hidden", "value": file_value, "name": file_name } ); |
---|
28 | file.after(new_file_input); |
---|
29 | } |
---|
30 | }); |
---|
31 | }); |
---|
32 | }); |
---|
33 | |
---|
34 | %if not add_frame.debug: |
---|
35 | if( window.name != "galaxy_main" ) { |
---|
36 | location.replace( '${h.url_for( controller='root', action='index', tool_id=tool.id )}' ); |
---|
37 | } |
---|
38 | %endif |
---|
39 | function checkUncheckAll( name, check ) |
---|
40 | { |
---|
41 | if ( check == 0 ) |
---|
42 | { |
---|
43 | $("input[name=" + name + "][type='checkbox']").attr('checked', false); |
---|
44 | } |
---|
45 | else |
---|
46 | { |
---|
47 | $("input[name=" + name + "][type='checkbox']").attr('checked', true ); |
---|
48 | } |
---|
49 | } |
---|
50 | |
---|
51 | </script> |
---|
52 | </head> |
---|
53 | |
---|
54 | <body> |
---|
55 | <%def name="do_inputs( inputs, tool_state, errors, prefix, other_values=None )"> |
---|
56 | <% other_values = ExpressionContext( tool_state, other_values ) %> |
---|
57 | %for input_index, input in enumerate( inputs.itervalues() ): |
---|
58 | %if input.type == "repeat": |
---|
59 | <div class="repeat-group"> |
---|
60 | <div class="form-title-row"><b>${input.title_plural}</b></div> |
---|
61 | <% repeat_state = tool_state[input.name] %> |
---|
62 | %for i in range( len( repeat_state ) ): |
---|
63 | <div class="repeat-group-item"> |
---|
64 | <% |
---|
65 | if input.name in errors: |
---|
66 | rep_errors = errors[input.name][i] |
---|
67 | else: |
---|
68 | rep_errors = dict() |
---|
69 | index = repeat_state[i]['__index__'] |
---|
70 | %> |
---|
71 | <div class="form-title-row"><b>${input.title} ${i + 1}</b></div> |
---|
72 | ${do_inputs( input.inputs, repeat_state[i], rep_errors, prefix + input.name + "_" + str(index) + "|", other_values )} |
---|
73 | <div class="form-row"><input type="submit" name="${prefix}${input.name}_${index}_remove" value="Remove ${input.title} ${i+1}"></div> |
---|
74 | </div> |
---|
75 | %if rep_errors.has_key( '__index__' ): |
---|
76 | <div><img style="vertical-align: middle;" src="${h.url_for('/static/style/error_small.png')}"> <span style="vertical-align: middle;">${rep_errors['__index__']}</span></div> |
---|
77 | %endif |
---|
78 | %endfor |
---|
79 | <div class="form-row"><input type="submit" name="${prefix}${input.name}_add" value="Add new ${input.title}"></div> |
---|
80 | </div> |
---|
81 | %elif input.type == "conditional": |
---|
82 | <% |
---|
83 | group_state = tool_state[input.name] |
---|
84 | group_errors = errors.get( input.name, {} ) |
---|
85 | current_case = group_state['__current_case__'] |
---|
86 | group_prefix = prefix + input.name + "|" |
---|
87 | %> |
---|
88 | %if input.value_ref_in_group: |
---|
89 | ${row_for_param( group_prefix, input.test_param, group_state, group_errors, other_values )} |
---|
90 | %endif |
---|
91 | ${do_inputs( input.cases[current_case].inputs, group_state, group_errors, group_prefix, other_values )} |
---|
92 | %elif input.type == "upload_dataset": |
---|
93 | %if input.get_datatype( trans, other_values ).composite_type is None: #have non-composite upload appear as before |
---|
94 | <% |
---|
95 | if input.name in errors: |
---|
96 | rep_errors = errors[input.name][0] |
---|
97 | else: |
---|
98 | rep_errors = dict() |
---|
99 | %> |
---|
100 | ${do_inputs( input.inputs, tool_state[input.name][0], rep_errors, prefix + input.name + "_" + str( 0 ) + "|", other_values )} |
---|
101 | %else: |
---|
102 | <div class="repeat-group"> |
---|
103 | <div class="form-title-row"><b>${input.group_title( other_values )}</b></div> |
---|
104 | <% |
---|
105 | repeat_state = tool_state[input.name] |
---|
106 | %> |
---|
107 | %for i in range( len( repeat_state ) ): |
---|
108 | <div class="repeat-group-item"> |
---|
109 | <% |
---|
110 | if input.name in errors: |
---|
111 | rep_errors = errors[input.name][i] |
---|
112 | else: |
---|
113 | rep_errors = dict() |
---|
114 | index = repeat_state[i]['__index__'] |
---|
115 | %> |
---|
116 | <div class="form-title-row"><b>File Contents for ${input.title_by_index( trans, i, other_values )}</b></div> |
---|
117 | ${do_inputs( input.inputs, repeat_state[i], rep_errors, prefix + input.name + "_" + str(index) + "|", other_values )} |
---|
118 | ##<div class="form-row"><input type="submit" name="${prefix}${input.name}_${index}_remove" value="Remove ${input.title} ${i+1}"></div> |
---|
119 | </div> |
---|
120 | %endfor |
---|
121 | ##<div class="form-row"><input type="submit" name="${prefix}${input.name}_add" value="Add new ${input.title}"></div> |
---|
122 | </div> |
---|
123 | %endif |
---|
124 | %else: |
---|
125 | ${row_for_param( prefix, input, tool_state, errors, other_values )} |
---|
126 | %endif |
---|
127 | %endfor |
---|
128 | </%def> |
---|
129 | |
---|
130 | <%def name="row_for_param( prefix, param, parent_state, parent_errors, other_values )"> |
---|
131 | <% |
---|
132 | if parent_errors.has_key( param.name ): |
---|
133 | cls = "form-row form-row-error" |
---|
134 | else: |
---|
135 | cls = "form-row" |
---|
136 | %> |
---|
137 | <div class="${cls}"> |
---|
138 | <% label = param.get_label() %> |
---|
139 | %if label: |
---|
140 | <label> |
---|
141 | ${label}: |
---|
142 | </label> |
---|
143 | %endif |
---|
144 | <% |
---|
145 | field = param.get_html_field( trans, parent_state[ param.name ], other_values ) |
---|
146 | field.refresh_on_change = param.refresh_on_change |
---|
147 | |
---|
148 | # Field may contain characters submitted by user and these characters may be unicode; handle non-ascii characters gracefully. |
---|
149 | field_html = field.get_html( prefix ) |
---|
150 | if type( field_html ) is not unicode: |
---|
151 | field_html = unicode( field_html, 'utf-8' ) |
---|
152 | %> |
---|
153 | <div class="form-row-input">${field_html}</div> |
---|
154 | %if parent_errors.has_key( param.name ): |
---|
155 | <div class="form-row-error-message"> |
---|
156 | <div><img style="vertical-align: middle;" src="${h.url_for('/static/style/error_small.png')}"> <span style="vertical-align: middle;">${parent_errors[param.name]}</span></div> |
---|
157 | </div> |
---|
158 | %endif |
---|
159 | |
---|
160 | %if param.help: |
---|
161 | <div class="toolParamHelp" style="clear: both;"> |
---|
162 | ${param.help} |
---|
163 | </div> |
---|
164 | %endif |
---|
165 | |
---|
166 | <div style="clear: both"></div> |
---|
167 | |
---|
168 | </div> |
---|
169 | </%def> |
---|
170 | |
---|
171 | %if add_frame.from_noframe: |
---|
172 | <div class="warningmessage"> |
---|
173 | <strong>Welcome to Galaxy</strong> |
---|
174 | <hr/> |
---|
175 | It appears that you found this tool from a link outside of Galaxy. |
---|
176 | If you're not familiar with Galaxy, please consider visiting the |
---|
177 | <a href="${h.url_for( controller='root' )}" target="_top">welcome page</a>. |
---|
178 | To learn more about what Galaxy is and what it can do for you, please visit |
---|
179 | the <a href="$add_frame.wiki_url" target="_top">Galaxy wiki</a>. |
---|
180 | </div> |
---|
181 | <br/> |
---|
182 | %endif |
---|
183 | |
---|
184 | ## handle calculating the redict url for the special case where we have nginx proxy |
---|
185 | ## upload and need to do url_for on the redirect portion of the tool action |
---|
186 | <% |
---|
187 | try: |
---|
188 | tool_url = h.url_for(tool.action) |
---|
189 | except AttributeError: |
---|
190 | assert len(tool.action) == 2 |
---|
191 | tool_url = tool.action[0] + h.url_for(tool.action[1]) |
---|
192 | %><div class="toolForm" id="${tool.id}"> |
---|
193 | %if tool.has_multiple_pages: |
---|
194 | <div class="toolFormTitle">${tool.name} (step ${tool_state.page+1} of ${tool.npages})</div> |
---|
195 | %else: |
---|
196 | <div class="toolFormTitle">${tool.name}</div> |
---|
197 | %endif |
---|
198 | <div class="toolFormBody"> |
---|
199 | <form id="tool_form" name="tool_form" action="${tool_url}" enctype="${tool.enctype}" target="${tool.target}" method="${tool.method}"> |
---|
200 | <input type="hidden" name="tool_id" value="${tool.id}"> |
---|
201 | <input type="hidden" name="tool_state" value="${util.object_to_string( tool_state.encode( tool, app ) )}"> |
---|
202 | %if tool.display_by_page[tool_state.page]: |
---|
203 | ${trans.fill_template_string( tool.display_by_page[tool_state.page], context=tool.get_param_html_map( trans, tool_state.page, tool_state.inputs ) )} |
---|
204 | <input type="submit" class="primary-button" name="runtool_btn" value="Execute"> |
---|
205 | %else: |
---|
206 | ${do_inputs( tool.inputs_by_page[ tool_state.page ], tool_state.inputs, errors, "" )} |
---|
207 | <div class="form-row"> |
---|
208 | %if tool_state.page == tool.last_page: |
---|
209 | <input type="submit" class="primary-button" name="runtool_btn" value="Execute"> |
---|
210 | %else: |
---|
211 | <input type="submit" class="primary-button" name="runtool_btn" value="Next step"> |
---|
212 | %endif |
---|
213 | </div> |
---|
214 | %endif |
---|
215 | </form> |
---|
216 | </div> |
---|
217 | </div> |
---|
218 | %if tool.help: |
---|
219 | <div class="toolHelp"> |
---|
220 | <div class="toolHelpBody"> |
---|
221 | <% |
---|
222 | if tool.has_multiple_pages: |
---|
223 | tool_help = tool.help_by_page[tool_state.page] |
---|
224 | else: |
---|
225 | tool_help = tool.help |
---|
226 | |
---|
227 | # Convert to unicode to display non-ascii characters. |
---|
228 | if type( tool_help ) is not unicode: |
---|
229 | tool_help = unicode( tool_help, 'utf-8') |
---|
230 | %> |
---|
231 | ${tool_help} |
---|
232 | </div> |
---|
233 | </div> |
---|
234 | %endif |
---|
235 | </body> |
---|
236 | |
---|
237 | <script type="text/javascript"> |
---|
238 | ##For Drilldown Parameters adds expand/collapse buttons and collapses collapsed elements |
---|
239 | $( function() { |
---|
240 | $( 'li > ul' ).each( function( i ) { |
---|
241 | if ( $( this )[0].className == 'toolParameterExpandableCollapsable' ) |
---|
242 | { |
---|
243 | var parent_li = $( this ).parent( 'li' ); |
---|
244 | var sub_ul = $( this ).remove(); |
---|
245 | parent_li.find( 'span' ).wrapInner( '<a/>' ).find( 'a' ).click( function() { |
---|
246 | sub_ul.toggle(); |
---|
247 | $( this )[0].innerHTML = ( sub_ul[0].style.display=='none' ) ? '[+]' : '[-]'; |
---|
248 | }); |
---|
249 | parent_li.append( sub_ul ); |
---|
250 | } |
---|
251 | }); |
---|
252 | $( 'ul ul' ).each( function(i) { |
---|
253 | if ( $( this )[0].className == 'toolParameterExpandableCollapsable' && this.attributes.getNamedItem( 'default_state' ).value == 'collapsed' ) |
---|
254 | { |
---|
255 | $( this ).hide(); |
---|
256 | } |
---|
257 | }); |
---|
258 | }); |
---|
259 | |
---|
260 | ##inserts the Select All / Unselect All buttons for checkboxes |
---|
261 | $( function() { |
---|
262 | $("div.checkUncheckAllPlaceholder").each( function( i ) { |
---|
263 | $( this )[0].innerHTML = '<a class="action-button" onclick="checkUncheckAll( \'' + this.attributes.getNamedItem( 'checkbox_name' ).value + '\', 1 );"><span>Select All</span></a> <a class="action-button" onclick="checkUncheckAll( \'' + this.attributes.getNamedItem( 'checkbox_name' ).value + '\', 0 );"><span>Unselect All</span></a>'; |
---|
264 | }); |
---|
265 | }); |
---|
266 | |
---|
267 | </script> |
---|
268 | |
---|
269 | </html> |
---|