To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / app / views / queries / .svn / text-base / _filters.rhtml.svn-base @ 442:753f1380d6bc

History | View | Annotate | Download (4.43 KB)

1 0:513646585e45 Chris
<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
22
    if (check_box.checked) {
23
        Element.show("operators_" + field);
24 441:cbce1fd3b1b7 Chris
				Form.Element.enable("operators_" + field);
25
        Form.Element.enable("values_" + field);
26 0:513646585e45 Chris
        toggle_operator(field);
27
    } else {
28
        Element.hide("operators_" + field);
29
        Element.hide("div_values_" + field);
30 441:cbce1fd3b1b7 Chris
        Form.Element.disable("operators_" + field);
31
        Form.Element.disable("values_" + field);
32 0:513646585e45 Chris
  }
33
}
34
35
function toggle_operator(field) {
36
  operator = $("operators_" + field);
37
  switch (operator.value) {
38
    case "!*":
39
    case "*":
40
    case "t":
41
    case "w":
42
    case "o":
43
    case "c":
44
      Element.hide("div_values_" + field);
45
      break;
46
    default:
47
      Element.show("div_values_" + field);
48
      break;
49
  }
50
}
51
52
function toggle_multi_select(field) {
53
    select = $('values_' + field);
54
    if (select.multiple == true) {
55
        select.multiple = false;
56
    } else {
57
        select.multiple = true;
58
    }
59
}
60 22:40f7cfd4df19 chris
61 441:cbce1fd3b1b7 Chris
function submit_query_form(id) {
62
  selectAllOptions("selected_columns");
63
  $(id).submit();
64
}
65
66 22:40f7cfd4df19 chris
function apply_filters_observer() {
67
  $$("#query_form input[type=text]").invoke("observe", "keypress", function(e){
68
    if(e.keyCode == Event.KEY_RETURN) {
69 441:cbce1fd3b1b7 Chris
      submit_query_form("query_form");
70 22:40f7cfd4df19 chris
    }
71
  });
72
}
73
Event.observe(document,"dom:loaded", apply_filters_observer);
74 0:513646585e45 Chris
//]]>
75
</script>
76
77
<table width="100%">
78
<tr>
79
<td>
80
<table>
81
<% query.available_filters.sort{|a,b| a[1][:order]<=>b[1][:order]}.each do |filter| %>
82
    <% field = filter[0]
83
       options = filter[1] %>
84
    <tr <%= 'style="display:none;"' unless query.has_filter?(field) %> id="tr_<%= field %>" class="filter">
85
    <td style="width:200px;">
86 441:cbce1fd3b1b7 Chris
        <%= check_box_tag 'f[]', field, query.has_filter?(field), :onclick => "toggle_filter('#{field}');", :id => "cb_#{field}" %>
87 0:513646585e45 Chris
        <label for="cb_<%= field %>"><%= filter[1][:name] || l(("field_"+field.to_s.gsub(/\_id$/, "")).to_sym) %></label>
88
    </td>
89
    <td style="width:150px;">
90 441:cbce1fd3b1b7 Chris
        <%= select_tag "op[#{field}]", options_for_select(operators_for_select(options[:type]), query.operator_for(field)), :id => "operators_#{field}", :onchange => "toggle_operator('#{field}');", :class => "select-small", :style => "vertical-align: top;" %>
91 0:513646585e45 Chris
    </td>
92
    <td>
93
    <div id="div_values_<%= field %>" style="display:none;">
94
    <% case options[:type]
95
    when :list, :list_optional, :list_status, :list_subprojects %>
96 441:cbce1fd3b1b7 Chris
        <select <%= "multiple=true" if query.values_for(field) and query.values_for(field).length > 1 %> name="v[<%= field %>][]" id="values_<%= field %>" class="select-small" style="vertical-align: top;">
97 0:513646585e45 Chris
        <%= options_for_select options[:values], query.values_for(field) %>
98
        </select>
99
        <%= link_to_function image_tag('bullet_toggle_plus.png'), "toggle_multi_select('#{field}');", :style => "vertical-align: bottom;" %>
100
    <% when :date, :date_past %>
101 441:cbce1fd3b1b7 Chris
        <%= text_field_tag "v[#{field}][]", query.values_for(field), :id => "values_#{field}", :size => 3, :class => "select-small" %> <%= l(:label_day_plural) %>
102 0:513646585e45 Chris
    <% when :string, :text %>
103 441:cbce1fd3b1b7 Chris
        <%= text_field_tag "v[#{field}][]", query.values_for(field), :id => "values_#{field}", :size => 30, :class => "select-small" %>
104 0:513646585e45 Chris
    <% when :integer %>
105 441:cbce1fd3b1b7 Chris
        <%= text_field_tag "v[#{field}][]", query.values_for(field), :id => "values_#{field}", :size => 3, :class => "select-small" %>
106 0:513646585e45 Chris
    <% end %>
107
    </div>
108
    <script type="text/javascript">toggle_filter('<%= field %>');</script>
109
    </td>
110
    </tr>
111
<% end %>
112
</table>
113
</td>
114
<td class="add-filter">
115
<%= label_tag('add_filter_select', l(:label_filter_add)) %>:
116
<%= 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),
117
																		:onchange => "add_filter();",
118
																		:class => "select-small",
119
																		:name => nil %>
120
</td>
121
</tr>
122
</table>
123 441:cbce1fd3b1b7 Chris
<%= hidden_field_tag 'f[]', '' %>