<%! from galaxy.web.framework.helpers.grids import TextColumn, StateColumn, GridColumnFilter from galaxy.web.framework.helpers import iff %> ## Render a filter UI for a grid column. Filter is rendered as a table row. <%def name="render_grid_column_filter( grid, column )"> <% column_label = column.label if column.filterable == "advanced": column_label = column_label.lower() %> %if column.filterable == "advanced": ${column_label}: %endif %if isinstance(column, TextColumn):
## Carry forward filtering criteria with hidden inputs. %for temp_column in grid.columns: %if temp_column.key in cur_filter_dict: <% value = cur_filter_dict[ temp_column.key ] %> %if value != "All": <% if isinstance( temp_column, TextColumn ): value = h.dumps( value ) %> %endif %endif %endfor ## Print current filtering criteria and links to delete. %if column.key in cur_filter_dict: <% column_filter = cur_filter_dict[column.key] %> %if isinstance( column_filter, basestring ): %if column_filter != "All": ${cur_filter_dict[column.key]} <% filter_all = GridColumnFilter( "", { column.key : "All" } ) %> %endif %elif isinstance( column_filter, list ): %for i, filter in enumerate( column_filter ): %if i > 0: , %endif ${filter} <% new_filter = list( column_filter ) del new_filter[ i ] new_column_filter = GridColumnFilter( "", { column.key : h.dumps( new_filter ) } ) %> %endfor %endif %endif ## Print input field for column. <% # Set value, size of search input field. Minimum size is 20 characters. value = iff( column.filterable == "standard", column.label.lower(), "") size = len( value ) if size < 20: size = 20 # +4 to account for search icon/button. size = size + 4 %>
%else: %for i, filter in enumerate( column.get_accepted_filters() ): <% # HACK: we know that each filter will have only a single argument, so get that single argument. for key, arg in filter.args.items(): filter_key = key filter_arg = arg %> %if i > 0: | %endif %if column.key in cur_filter_dict and column.key in filter.args and cur_filter_dict[column.key] == filter.args[column.key]: ${filter.label} %else: ${filter.label} %endif %endfor %endif ## Print grid search/filtering UI. <%def name="render_grid_filters( grid, render_advanced_search=True )"> <% # Show advanced search if flag set or if there are filters for advanced search fields. advanced_search_display = "none" if 'advanced-search' in kwargs and kwargs['advanced-search'] in ['True', 'true']: advanced_search_display = "block" for column in grid.columns: if column.filterable == "advanced": ## Show div if current filter has value that is different from the default filter. if column.key in cur_filter_dict and column.key in default_filter_dict and \ cur_filter_dict[column.key] != default_filter_dict[column.key]: advanced_search_display = "block" # do not show standard search if showing adv. standard_search_display = "block" if advanced_search_display == "block": standard_search_display = "none" %> ## Standard search. ## Advanced search.