summaryrefslogtreecommitdiffstats
path: root/app/views/queries
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2011-07-10 17:29:29 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2011-07-10 17:29:29 +0000
commit4507aa5014184081f2bdce175bac7a9c20fcd8b4 (patch)
treeb5f07b1f5161a7fb241596a81986c15dbbdceee3 /app/views/queries
parent7c505aaff3043b9c5526b698f0c25dcc8f31b5ec (diff)
downloadredmine-4507aa5014184081f2bdce175bac7a9c20fcd8b4.tar.gz
redmine-4507aa5014184081f2bdce175bac7a9c20fcd8b4.zip
Adds date based filters (#4729) and date range filter (#6954).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@6226 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/views/queries')
-rw-r--r--app/views/queries/_filters.rhtml116
1 files changed, 69 insertions, 47 deletions
diff --git a/app/views/queries/_filters.rhtml b/app/views/queries/_filters.rhtml
index e9c7502e1..8942c8b60 100644
--- a/app/views/queries/_filters.rhtml
+++ b/app/views/queries/_filters.rhtml
@@ -1,37 +1,53 @@
<script type="text/javascript">
//<![CDATA[
function add_filter() {
- select = $('add_filter_select');
- field = select.value
- Element.show('tr_' + field);
- check_box = $('cb_' + field);
- check_box.checked = true;
- toggle_filter(field);
- select.selectedIndex = 0;
-
- for (i=0; i<select.options.length; i++) {
- if (select.options[i].value == field) {
- select.options[i].disabled = true;
- }
- }
+ select = $('add_filter_select');
+ field = select.value
+ Element.show('tr_' + field);
+ check_box = $('cb_' + field);
+ check_box.checked = true;
+ toggle_filter(field);
+ select.selectedIndex = 0;
+
+ for (i=0; i<select.options.length; i++) {
+ if (select.options[i].value == field) {
+ select.options[i].disabled = true;
+ }
+ }
}
function toggle_filter(field) {
- check_box = $('cb_' + field);
-
- if (check_box.checked) {
- Element.show("operators_" + field);
- Form.Element.enable("operators_" + field);
- $$(".values_" + field).each(function(el){ Form.Element.enable(el)});
- toggle_operator(field);
- } else {
- Element.hide("operators_" + field);
- Element.hide("div_values_" + field);
- Form.Element.disable("operators_" + field);
- $$(".values_" + field).each(function(el){ Form.Element.disable(el)});
+ check_box = $('cb_' + field);
+ if (check_box.checked) {
+ Element.show("operators_" + field);
+ Form.Element.enable("operators_" + field);
+ toggle_operator(field);
+ } else {
+ Element.hide("operators_" + field);
+ Form.Element.disable("operators_" + field);
+ enableValues(field, []);
}
}
+function enableValues(field, indexes) {
+ var f = $$(".values_" + field);
+ for(var i=0;i<f.length;i++) {
+ if (indexes.include(i)) {
+ Form.Element.enable(f[i]);
+ f[i].up('span').show();
+ } else {
+ f[i].value = '';
+ Form.Element.disable(f[i]);
+ f[i].up('span').hide();
+ }
+ }
+ if (indexes.length > 0) {
+ Element.show("div_values_" + field);
+ } else {
+ Element.hide("div_values_" + field);
+ }
+}
+
function toggle_operator(field) {
operator = $("operators_" + field);
switch (operator.value) {
@@ -41,30 +57,32 @@ function toggle_operator(field) {
case "w":
case "o":
case "c":
- Element.hide("div_values_" + field);
- var v = $$(".values_" + field);
- if (v.length > 1) {v[1].hide(); Form.Element.disable(v[1])}
+ enableValues(field, []);
break;
case "><":
- Element.show("div_values_" + field);
- var v = $$(".values_" + field);
- if (v.length > 1) {v[1].show(); Form.Element.enable(v[1])}
+ enableValues(field, [0,1]);
+ break;
+ case "<t+":
+ case ">t+":
+ case "t+":
+ case ">t-":
+ case "<t-":
+ case "t-":
+ enableValues(field, [2]);
break;
default:
- Element.show("div_values_" + field);
- var v = $$(".values_" + field);
- if (v.length > 1) {v[1].hide(); Form.Element.disable(v[1])}
+ enableValues(field, [0]);
break;
}
}
-function toggle_multi_select(field) {
- select = $('values_' + field);
- if (select.multiple == true) {
- select.multiple = false;
- } else {
- select.multiple = true;
- }
+function toggle_multi_select(el) {
+ var select = $(el);
+ if (select.multiple == true) {
+ select.multiple = false;
+ } else {
+ select.multiple = true;
+ }
}
function submit_query_form(id) {
@@ -102,15 +120,19 @@ Event.observe(document,"dom:loaded", apply_filters_observer);
<div id="div_values_<%= field %>" style="display:none;">
<% case options[:type]
when :list, :list_optional, :list_status, :list_subprojects %>
- <%= select_tag "v[#{field}][]", options_for_select(options[:values], query.values_for(field)), :class => "values_#{field}", :multiple => (query.values_for(field) && query.values_for(field).length > 1) %>
- <%= link_to_function image_tag('bullet_toggle_plus.png'), "toggle_multi_select('#{field}');", :style => "vertical-align: bottom;" %>
+ <span class="span_values_<%= field %>">
+ <%= 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) %>
+ <%= link_to_function image_tag('bullet_toggle_plus.png'), "toggle_multi_select('values_#{field}_1');", :style => "vertical-align: bottom;" %>
+ </span>
<% when :date, :date_past %>
- <%= text_field_tag "v[#{field}][]", query.value_for(field), :class => "values_#{field}", :size => 3 %> <%= l(:label_day_plural) %>
+ <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>
+ <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>
+ <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field), :size => 3, :class => "values_#{field}" %> <%= l(:label_day_plural) %></span>
<% when :string, :text %>
- <%= text_field_tag "v[#{field}][]", query.value_for(field), :class => "values_#{field}", :size => 30 %>
+ <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field), :class => "values_#{field}", :id => "values_#{field}", :size => 30 %></span>
<% when :integer %>
- <%= text_field_tag "v[#{field}][]", query.value_for(field), :class => "values_#{field}", :size => 3 %>
- <%= text_field_tag "v[#{field}][]", query.value_for(field, 1), :class => "values_#{field}", :size => 3 %>
+ <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field), :class => "values_#{field}", :id => "values_#{field}_1", :size => 3 %></span>
+ <span class="span_values_<%= field %>"><%= text_field_tag "v[#{field}][]", query.value_for(field, 1), :class => "values_#{field}", :id => "values_#{field}_2", :size => 3 %></span>
<% end %>
</div>
<script type="text/javascript">toggle_filter('<%= field %>');</script>