| CODENOTIFIER | HelpYou are not signed inSign in |
Project: Trac
Revision: 7507
Author: rblank
Date: 01 Sep 2008 20:33:51
Diff at Trac: http://trac.edgewall.org/changeset/7507
Changes:0.11-stable: Added sorting of field names by field label in custom query filter selection, column selection, grouping and textarea selection.
Previously, the order was undefined, as it depended on the order of keys in a dictionary.
Files:| ... | ...@@ -909,7 +909,11 @@ | |
| 909 | 909 | data['all_columns'] = query.get_all_columns() |
| 910 | 910 | # Don't allow the user to remove the id column |
| 911 | 911 | data['all_columns'].remove('id') |
| 912 | data['all_textareas'] = query.get_all_textareas() | |
| 912 | def field_key(name): | |
| 913 | return data['labels'][name].lower() | |
| 914 | data['all_columns'].sort(key=field_key) | |
| 915 | data['all_textareas'] = sorted(query.get_all_textareas(), | |
| 916 | key=field_key) | |
| 913 | 917 | |
| 914 | 918 | add_stylesheet(req, 'common/css/report.css') |
| 915 | 919 | add_script(req, 'common/js/query.js') |
| ... | ...@@ -35,7 +35,8 @@ | |
| 35 | 35 | ${wiki_to_html(context(report_resource), description)} |
| 36 | 36 | </div> |
| 37 | 37 | |
| 38 | <form id="query" method="post" action="${href.query()}"> | |
| 38 | <form id="query" method="post" action="${href.query()}" | |
| 39 | py:with="field_names = sorted(fields.iterkeys(), key=lambda name: labels[name].lower())"> | |
| 39 | 40 | <fieldset id="filters"> |
| 40 | 41 | <input py:if="'id' in query.constraints" type="hidden" name="id" value="${query.constraints['id']}" /> |
| 41 | 42 | <legend class="foldable">Filters</legend> |
| ... | ...@@ -43,7 +44,7 @@ | |
| 43 | 44 | <tbody> |
| 44 | 45 | <tr style="height: 1px"><td colspan="4"></td></tr> |
| 45 | 46 | </tbody> |
| 46 | <py:for each="field_name, field in fields.items()"> | |
| 47 | <py:for each="field_name in field_names" py:with="field = fields[field_name]"> | |
| 47 | 48 | <py:for each="constraint_name, constraint in constraints.items()"> |
| 48 | 49 | <tbody py:if="field_name == constraint_name" |
| 49 | 50 | py:with="multiline = field.type in ('select', 'text')"> |
| ... | ...@@ -117,7 +118,7 @@ | |
| 117 | 118 | <label for="add_filter">Add filter</label> |
| 118 | 119 | <select name="add_filter" id="add_filter"> |
| 119 | 120 | <option></option> |
| 120 | <option py:for="field_name, field in fields.items()" | |
| 121 | <option py:for="field_name in field_names" py:with="field = fields[field_name]" | |
| 121 | 122 | value="$field_name" |
| 122 | 123 | disabled="${(field.type == 'radio' and |
| 123 | 124 | field_name in constraints and |
| ... | ...@@ -151,10 +152,11 @@ | |
| 151 | 152 | <label for="group">Group results by</label> |
| 152 | 153 | <select name="group" id="group"> |
| 153 | 154 | <option></option> |
| 154 | <option py:for="field_name, field in fields.items()" | |
| 155 | py:if="field.type in ('select', 'radio') or field_name in ('owner', 'reporter')" | |
| 156 | selected="${field_name == query.group or None}" | |
| 157 | value="${field_name}">${field.label}</option> | |
| 155 | <py:for each="field_name in field_names" py:with="field = fields[field_name]"> | |
| 156 | <option py:if="field.type in ('select', 'radio') or field_name in ('owner', 'reporter')" | |
| 157 | selected="${field_name == query.group or None}" | |
| 158 | value="${field_name}">${field.label}</option> | |
| 159 | </py:for> | |
| 158 | 160 | </select> |
| 159 | 161 | <input type="checkbox" name="groupdesc" id="groupdesc" |
| 160 | 162 | checked="${query.groupdesc or None}" /> |