comparison .svn/pristine/79/79c8a939d3701e3feac652838cc1b0649abfd617.svn-base @ 909:cbb26bc654de redmine-1.3

Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author Chris Cannam
date Fri, 24 Feb 2012 19:09:32 +0000
parents
children
comparison
equal deleted inserted replaced
908:c6c2cbd0afee 909:cbb26bc654de
1 <script type="text/javascript">
2 //<![CDATA[
3 function add_filter() {
4 select = $('add_filter_select');
5 field = select.value
6 Element.show('tr_' + field);
7 check_box = $('cb_' + field);
8 check_box.checked = true;
9 toggle_filter(field);
10 select.selectedIndex = 0;
11
12 for (i=0; i<select.options.length; i++) {
13 if (select.options[i].value == field) {
14 select.options[i].disabled = true;
15 }
16 }
17 }
18
19 function toggle_filter(field) {
20 check_box = $('cb_' + field);
21 if (check_box.checked) {
22 Element.show("operators_" + field);
23 Form.Element.enable("operators_" + field);
24 toggle_operator(field);
25 } else {
26 Element.hide("operators_" + field);
27 Form.Element.disable("operators_" + field);
28 enableValues(field, []);
29 }
30 }
31
32 function enableValues(field, indexes) {
33 var f = $$(".values_" + field);
34 for(var i=0;i<f.length;i++) {
35 if (indexes.include(i)) {
36 Form.Element.enable(f[i]);
37 f[i].up('span').show();
38 } else {
39 f[i].value = '';
40 Form.Element.disable(f[i]);
41 f[i].up('span').hide();
42 }
43 }
44 if (indexes.length > 0) {
45 Element.show("div_values_" + field);
46 } else {
47 Element.hide("div_values_" + field);
48 }
49 }
50
51 function toggle_operator(field) {
52 operator = $("operators_" + field);
53 switch (operator.value) {
54 case "!*":
55 case "*":
56 case "t":
57 case "w":
58 case "o":
59 case "c":
60 enableValues(field, []);
61 break;
62 case "><":
63 enableValues(field, [0,1]);
64 break;
65 case "<t+":
66 case ">t+":
67 case "t+":
68 case ">t-":
69 case "<t-":
70 case "t-":
71 enableValues(field, [2]);
72 break;
73 default:
74 enableValues(field, [0]);
75 break;
76 }
77 }
78
79 function toggle_multi_select(el) {
80 var select = $(el);
81 if (select.multiple == true) {
82 select.multiple = false;
83 } else {
84 select.multiple = true;
85 }
86 }
87
88 function submit_query_form(id) {
89 selectAllOptions("selected_columns");
90 $(id).submit();
91 }
92
93 function apply_filters_observer() {
94 $$("#query_form input[type=text]").invoke("observe", "keypress", function(e){
95 if(e.keyCode == Event.KEY_RETURN) {
96 submit_query_form("query_form");
97 }
98 });
99 }
100 Event.observe(document,"dom:loaded", apply_filters_observer);
101 //]]>
102 </script>
103
104 <table width="100%">
105 <tr>
106 <td>
107 <table>
108 <% query.available_filters.sort{|a,b| a[1][:order]<=>b[1][:order]}.each do |filter| %>
109 <% field = filter[0]
110 options = filter[1] %>
111 <tr <%= 'style="display:none;"' unless query.has_filter?(field) %> id="tr_<%= field %>" class="filter">
112 <td class="field">
113 <%= check_box_tag 'f[]', field, query.has_filter?(field), :onclick => "toggle_filter('#{field}');", :id => "cb_#{field}" %>
114 <label for="cb_<%= field %>"><%= filter[1][:name] || l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) %></label>
115 </td>
116 <td class="operator">
117 <%= label_tag "op_#{field}", l(:description_filter), :class => "hidden-for-sighted" %>
118 <%= select_tag "op[#{field}]", options_for_select(operators_for_select(options[:type]),
119 query.operator_for(field)), :id => "operators_#{field}",
120 :onchange => "toggle_operator('#{field}');" %>
121 </td>
122 <td class="values">
123 <div id="div_values_<%= field %>" style="display:none;">
124 <% case options[:type]
125 when :list, :list_optional, :list_status, :list_subprojects %>
126 <span class="span_values_<%= field %>">
127 <%= select_tag "v[#{field}][]", options_for_select(options[:values], query.values_for(field)), :class => "values_#{field}", :id => "values_#{field}_1", :multiple => (query.values_for(field) && query.values_for(field).length > 1) %>
128 <%= link_to_function image_tag('bullet_toggle_plus.png'), "toggle_multi_select('values_#{field}_1');" %>
129 </span>
130 <% when :date, :date_past %>
131 <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field), :size => 10, :class => "values_#{field}", :id => "values_#{field}_1" %> <%= calendar_for "values_#{field}_1" %></span>
132 <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field, 1), :size => 10, :class => "values_#{field}", :id => "values_#{field}_2" %> <%= calendar_for "values_#{field}_2" %></span>
133 <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field), :size => 3, :class => "values_#{field}" %> <%= l(:label_day_plural) %></span>
134 <% when :string, :text %>
135 <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field), :class => "values_#{field}", :id => "values_#{field}", :size => 30 %></span>
136 <% when :integer, :float %>
137 <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field), :class => "values_#{field}", :id => "values_#{field}_1", :size => 6 %></span>
138 <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field, 1), :class => "values_#{field}", :id => "values_#{field}_2", :size => 6 %></span>
139 <% end %>
140 </div>
141 <script type="text/javascript">toggle_filter('<%= field %>');</script>
142 </td>
143 </tr>
144 <% end %>
145 </table>
146 </td>
147 <td class="add-filter">
148 <%= label_tag('add_filter_select', l(:label_filter_add)) %>
149 <%= select_tag 'add_filter_select', options_for_select([["",""]] + query.available_filters.sort{|a,b| a[1][:order]<=>b[1][:order]}.collect{|field| [ field[1][:name] || l(("field_"+field[0].to_s.gsub(/_id$/, "")).to_sym), field[0]] unless query.has_filter?(field[0])}.compact),
150 :onchange => "add_filter();",
151 :name => nil %>
152 </td>
153 </tr>
154 </table>
155 <%= hidden_field_tag 'f[]', '' %>