will_filter 3.1.11 → 5.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/Gemfile +8 -3
- data/Gemfile.lock +182 -127
- data/README.rdoc +1 -10
- data/app/assets/images/will_filter/loading.gif +0 -0
- data/app/assets/javascripts/will_filter/filter.js +526 -517
- data/app/assets/stylesheets/will_filter/filter.css.scss +405 -108
- data/app/controllers/will_filter/calendar_controller.rb +10 -1
- data/app/controllers/will_filter/exporter_controller.rb +12 -3
- data/app/controllers/will_filter/filter_controller.rb +19 -10
- data/app/models/will_filter/filter.rb +254 -203
- data/app/views/will_filter/calendar/index.html.erb +55 -43
- data/app/views/will_filter/common/_actions_bar.html.erb +3 -3
- data/app/views/will_filter/common/_results_table.html.erb +55 -39
- data/app/views/will_filter/common/_scripts.html.erb +2 -12
- data/app/views/will_filter/exporter/index.html.erb +26 -22
- data/app/views/will_filter/filter/_condition.html.erb +25 -9
- data/app/views/will_filter/filter/_conditions.html.erb +12 -9
- data/app/views/will_filter/filter/_conditions_footer.html.erb +25 -10
- data/app/views/will_filter/filter/_conditions_header.html.erb +38 -24
- data/app/views/will_filter/filter/_container.html.erb +10 -9
- data/app/views/will_filter/filter/containers/_date.html.erb +8 -10
- data/app/views/will_filter/filter/containers/_date_range.html.erb +21 -13
- data/app/views/will_filter/filter/containers/_date_time.html.erb +8 -10
- data/app/views/will_filter/filter/containers/_date_time_range.html.erb +21 -13
- data/app/views/will_filter/filter/containers/_list.html.erb +16 -6
- data/config/routes.rb +26 -16
- data/deploy +63 -0
- data/lib/generators/will_filter/templates/config.yml +18 -5
- data/lib/generators/will_filter/templates/create_will_filter_filters.rb +12 -1
- data/lib/generators/will_filter/will_filter_generator.rb +10 -1
- data/lib/tasks/will_filter_tasks.rake +10 -2
- data/lib/will_filter.rb +10 -1
- data/lib/will_filter/calendar.rb +10 -1
- data/lib/will_filter/config.rb +31 -4
- data/lib/will_filter/containers/boolean.rb +10 -1
- data/lib/will_filter/containers/date.rb +10 -1
- data/lib/will_filter/containers/date_range.rb +10 -1
- data/lib/will_filter/containers/date_time.rb +10 -1
- data/lib/will_filter/containers/date_time_range.rb +10 -1
- data/lib/will_filter/containers/double.rb +10 -1
- data/lib/will_filter/containers/double_delimited.rb +10 -1
- data/lib/will_filter/containers/double_range.rb +10 -1
- data/lib/will_filter/containers/filter_list.rb +21 -7
- data/lib/will_filter/containers/list.rb +10 -1
- data/lib/will_filter/containers/nil.rb +10 -1
- data/lib/will_filter/containers/numeric.rb +10 -1
- data/lib/will_filter/containers/numeric_delimited.rb +10 -1
- data/lib/will_filter/containers/numeric_range.rb +10 -1
- data/lib/will_filter/containers/single_date.rb +12 -1
- data/lib/will_filter/containers/text.rb +10 -1
- data/lib/will_filter/containers/text_delimited.rb +11 -2
- data/lib/will_filter/engine.rb +10 -1
- data/lib/will_filter/extensions/action_controller_extension.rb +34 -10
- data/lib/will_filter/extensions/action_view_extension.rb +12 -3
- data/lib/will_filter/extensions/active_record_extension.rb +11 -1
- data/lib/will_filter/extensions/active_record_relation_extension.rb +51 -0
- data/lib/will_filter/extensions/array_extension.rb +10 -1
- data/lib/will_filter/filter_condition.rb +11 -7
- data/lib/will_filter/filter_container.rb +10 -1
- data/lib/will_filter/filter_exception.rb +10 -1
- data/lib/will_filter/railtie.rb +14 -4
- data/lib/will_filter/version.rb +11 -2
- data/spec/config/config_spec.rb +5 -5
- data/spec/models/will_filter/filter_spec.rb +130 -131
- data/test/dummy/app/assets/javascripts/application.js +3 -0
- data/test/dummy/app/assets/javascripts/bootstrap.js +1951 -0
- data/test/dummy/app/assets/javascripts/jquery-2.1.3.min.js +4 -0
- data/test/dummy/app/assets/javascripts/select2.min.js +3 -0
- data/test/dummy/app/assets/stylesheets/{application.css → application.css.sass} +5 -2
- data/test/dummy/app/assets/stylesheets/bootstrap.min.css +7 -0
- data/test/dummy/app/assets/stylesheets/select2.min.css +1 -0
- data/test/dummy/app/controllers/advanced_controller.rb +4 -4
- data/test/dummy/app/controllers/orders_controller.rb +2 -2
- data/test/dummy/app/controllers/simple_controller.rb +3 -3
- data/test/dummy/app/models/event.rb +1 -1
- data/test/dummy/app/models/user.rb +1 -1
- data/test/dummy/app/views/common/_events.html.erb +7 -13
- data/test/dummy/app/views/common/_menu.html.erb +25 -27
- data/test/dummy/app/views/layouts/application.html.erb +3 -5
- data/test/dummy/config/environments/development.rb +2 -0
- data/test/dummy/config/environments/production.rb +2 -0
- data/test/dummy/config/environments/test.rb +2 -0
- data/test/dummy/config/initializers/assets.rb +12 -0
- data/test/dummy/config/routes.rb +10 -10
- data/test/dummy/db/schema.rb +46 -50
- data/will_filter.gemspec +3 -3
- metadata +39 -44
- data/.rvmrc +0 -1
- data/app/assets/javascripts/will_filter/filter_prototype_effects.js +0 -38
- data/app/assets/stylesheets/will_filter/actions.css.scss +0 -27
- data/app/assets/stylesheets/will_filter/buttons.css.scss +0 -24
- data/app/assets/stylesheets/will_filter/calendar.css.scss +0 -102
- data/app/assets/stylesheets/will_filter/exporter.css.scss +0 -89
- data/app/assets/stylesheets/will_filter/results.css.scss +0 -63
- data/app/views/layouts/will_filter/application.html.erb +0 -14
- data/test/dummy/app/assets/javascripts/orders.js +0 -2
- data/test/dummy/app/assets/stylesheets/orders.css +0 -4
@@ -1,52 +1,64 @@
|
|
1
|
-
<div
|
1
|
+
<div class="wf_calendar_header">
|
2
2
|
<div style="float:right; padding-right:2px;">
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
<%=
|
3
|
+
<% if @calendar.mode == 'month' %>
|
4
|
+
<%= link_to("« expand".html_safe, "#", :onclick => "wfCalendar.changeMode('quarter', #{@calendar.show_time?});", :style => "font-size:10px; padding-bottom: 3px") %>
|
5
|
+
<% elsif @calendar.mode == 'quarter' %>
|
6
|
+
<%= link_to("« expand".html_safe, "#", :onclick => "wfCalendar.changeMode('annual', #{@calendar.show_time?});", :style => "font-size:10px; padding-bottom: 3px") %>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<%= link_to('×'.html_safe, '#', :title=>"Close", :onclick => "wfCalendar.hide(); return false;") %>
|
10
10
|
</div>
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
|
12
|
+
<% if @calendar.show_time? %>
|
13
|
+
Select Date/Time
|
14
|
+
<% else %>
|
15
|
+
Select Date
|
16
|
+
<% end %>
|
17
|
+
</div>
|
18
|
+
|
14
19
|
<div class="wf_calendar_container">
|
15
|
-
<%= form_tag({:controller => "/will_filter/calendar"}, {:method => :get, :id => "wf_calendar_form"}) do %>
|
20
|
+
<%= form_tag({:controller => "/will_filter/calendar"}, {:method => :get, :id => "wf_calendar_form"}) do %>
|
16
21
|
<%= hidden_field_tag :wf_calendar_start_date, @calendar.start_date.strftime("%Y/%m/%d") %>
|
17
|
-
|
22
|
+
<%= hidden_field_tag :wf_calendar_selected_date, @calendar.selected_date.strftime("%Y/%m/%d") %>
|
18
23
|
<%= hidden_field_tag :wf_calendar_mode, @calendar.mode %>
|
19
24
|
<%= hidden_field_tag :wf_calendar_show_time, @calendar.show_time? %>
|
20
25
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
26
|
+
<div style="padding:5px;text-align:center; margin-bottom:5px; border-bottom: 1px solid #ccc;">
|
27
|
+
|
28
|
+
<%= link_to("«".html_safe, "#", :onclick => "wfCalendar.goToStartDate('#{@calendar.previous_start_date}');", :style => "font-size:16px;") %>
|
29
|
+
|
30
|
+
<% if @calendar.mode != 'annual' %>
|
31
|
+
<%= select_tag("month", options_for_select(WillFilter::Calendar.month_options, @calendar.month), {:id => "wf_calendar_month", :onChange => "wfCalendar.goToStartDate('')", :style => "width:auto;"}) %>
|
32
|
+
<% end %>
|
33
|
+
<%= select_tag("year", options_for_select(WillFilter::Calendar.year_options, @calendar.year), {:id => "wf_calendar_year", :onChange => "wfCalendar.goToStartDate('')", :style => "width:auto;"}) %>
|
34
|
+
|
35
|
+
<%= link_to("»".html_safe, "#", :onclick => "wfCalendar.goToStartDate('#{@calendar.next_start_date}');", :style => "font-size:16px;") %>
|
36
|
+
|
37
|
+
</div>
|
38
|
+
|
34
39
|
<%= render :partial => @calendar.mode, :locals => {:calendar => @calendar} %>
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
40
|
+
|
41
|
+
<% if @calendar.show_time? %>
|
42
|
+
<div style="text-align:center; margin-top:10px; padding:5px; border-top:1px solid #ccc;">
|
43
|
+
<div style="margin:10px;">
|
44
|
+
Time:
|
45
|
+
<%= select_tag("wf_calendar_hour", options_for_select(WillFilter::Calendar.hour_options, @calendar.hour), :style => "width:auto;") %>
|
46
|
+
:
|
47
|
+
<%= select_tag("wf_calendar_minute", options_for_select(WillFilter::Calendar.minute_options, @calendar.minute), :style => "width:auto;") %>
|
48
|
+
:
|
49
|
+
<%= select_tag("wf_calendar_second", options_for_select(WillFilter::Calendar.second_options, @calendar.second), :style => "width:auto;") %>
|
50
|
+
</div>
|
51
|
+
|
52
|
+
|
53
|
+
<button type="button" class="btn btn-primary btn-xs" onclick="wfCalendar.setDateTime()">
|
54
|
+
Select Date and Time
|
55
|
+
</button>
|
56
|
+
|
57
|
+
<button type="button" class="btn btn-default btn-xs" onclick="wfCalendar.hide()">
|
58
|
+
Cancel
|
59
|
+
</button>
|
60
|
+
</div>
|
61
|
+
<% end %>
|
62
|
+
|
63
|
+
<% end %>
|
52
64
|
</div>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<% if results.size > 0 %>
|
2
2
|
<div class="<%=opts[:class]%>" style="<%=opts[:style]%>">
|
3
3
|
<% actions.each do |action| %>
|
4
|
-
|
5
|
-
<% end %>
|
6
|
-
</div>
|
4
|
+
<%=link_to("<span>#{action.first}</span>".html_safe, "#", :onclick => "#{action.last};", :class => "wf_grey_button wf_pcb") %>
|
5
|
+
<% end %>
|
6
|
+
</div>
|
7
7
|
<% end %>
|
@@ -15,7 +15,7 @@
|
|
15
15
|
<table class='wf_results_table'>
|
16
16
|
<thead>
|
17
17
|
<tr>
|
18
|
-
<%
|
18
|
+
<%
|
19
19
|
carray = [] # stores the order of the columns
|
20
20
|
|
21
21
|
opts[:columns].each_with_index do |column, index|
|
@@ -23,34 +23,32 @@
|
|
23
23
|
|
24
24
|
# supported notations for columns => [
|
25
25
|
# :id,
|
26
|
-
# [:id, lambda{|obj| obj.id}],
|
27
|
-
# [:id, lambda{|obj| obj.id}, "color: white"],
|
28
|
-
# [:id, lambda{|obj| obj.id}, {:style => "color: white"}],
|
26
|
+
# [:id, lambda{|obj| obj.id}],
|
27
|
+
# [:id, lambda{|obj| obj.id}, "color: white"],
|
28
|
+
# [:id, lambda{|obj| obj.id}, {:style => "color: white"}],
|
29
29
|
# [:id, {:filterable => true, :value => lambda{|obj| obj.id}}],
|
30
30
|
# [:id, {:filterable => true, :value => lambda{|obj| obj.id}}],
|
31
|
-
# {:key => :id, :filterable => true}
|
31
|
+
# {:key => :id, :filterable => true}
|
32
32
|
# ]
|
33
33
|
|
34
34
|
if column.is_a?(Array)
|
35
35
|
if column.size < 2
|
36
|
-
raise WillFilter::FilterException.new("Array table column definition must have at least two elements")
|
36
|
+
raise WillFilter::FilterException.new("Array table column definition must have at least two elements")
|
37
37
|
end
|
38
38
|
|
39
39
|
cmeta[:key] = column[0] # first param must always be the column key
|
40
40
|
|
41
41
|
if column[1].is_a?(Hash) # second param is a hash
|
42
|
-
cmeta.merge!(column[1])
|
43
|
-
else
|
42
|
+
cmeta.merge!(column[1])
|
43
|
+
else
|
44
44
|
cmeta[:value] = column[1]
|
45
45
|
unless column[2].nil?
|
46
46
|
if column[2].is_a?(Hash) # third param can be a set of attributes
|
47
47
|
cmeta.merge!(column[2])
|
48
|
-
|
48
|
+
else # third param can be a string, which represents a style
|
49
49
|
cmeta[:style] = column[2]
|
50
|
-
else
|
51
|
-
raise WillFilter::FilterException.new("Unsupported table column format #{column[2]}")
|
52
50
|
end
|
53
|
-
end
|
51
|
+
end
|
54
52
|
end
|
55
53
|
elsif column.is_a?(Hash)
|
56
54
|
cmeta = column
|
@@ -66,7 +64,7 @@
|
|
66
64
|
|
67
65
|
if cmeta[:sort_key]
|
68
66
|
sort_key = cmeta[:sort_key].call(filter)
|
69
|
-
else
|
67
|
+
else
|
70
68
|
sort_key = cmeta[:key]
|
71
69
|
end
|
72
70
|
|
@@ -80,7 +78,7 @@
|
|
80
78
|
column_title = cmeta[:title].call(filter)
|
81
79
|
else
|
82
80
|
# column_title = cmeta[:title] || filter ? filter.condition_title_for(cmeta[:key]) : "Undefined"
|
83
|
-
if filter
|
81
|
+
if filter
|
84
82
|
column_title = cmeta[:title] || filter.condition_title_for(cmeta[:key])
|
85
83
|
else
|
86
84
|
column_title = cmeta[:title] || cmeta[:key].to_s.titleize
|
@@ -88,18 +86,18 @@
|
|
88
86
|
|
89
87
|
if sortable
|
90
88
|
column_title = link_to(column_title, filter.to_params(:wf_order => cmeta[:key], :wf_order_type => sort_direction_click), :title => "sort by #{cmeta[:key]} ascending", :class => "sort_link")
|
91
|
-
end
|
92
|
-
end
|
89
|
+
end
|
90
|
+
end
|
93
91
|
|
94
|
-
# column class name
|
92
|
+
# column class name
|
95
93
|
title_class_name = "wf_#{cmeta[:title_class] || cmeta[:key].to_s}"
|
96
|
-
title_class_name << " sortable" if sortable
|
94
|
+
title_class_name << " sortable" if sortable
|
97
95
|
title_class_name << " current_sort" if filter && filter.column_sorted?(sort_key)
|
98
96
|
title_class_name << " #{sort_direction}"
|
99
97
|
|
100
98
|
# extra styling that can be applied on a column
|
101
|
-
title_style = cmeta[:title_style] || ""
|
102
|
-
title_style << ";width:15px" if cmeta[:key] == :checkbox
|
99
|
+
title_style = cmeta[:title_style] || ""
|
100
|
+
title_style << ";width:15px" if cmeta[:key] == :checkbox
|
103
101
|
%>
|
104
102
|
|
105
103
|
<th class="<%= title_class_name %>" style="<%=title_style%>">
|
@@ -109,7 +107,7 @@
|
|
109
107
|
<%= link_to "", filter.to_params(:wf_order => sort_key, :wf_order_type => 'asc'), :title => "sort by #{sort_key} ascending", :class => 'up' %>
|
110
108
|
<%= link_to "", filter.to_params(:wf_order => sort_key, :wf_order_type => 'desc'), :title => "sort by #{sort_key} descending", :class => 'down' %>
|
111
109
|
</div>
|
112
|
-
|
110
|
+
|
113
111
|
<div style='white-space: nowrap;'>
|
114
112
|
<%= column_title %>
|
115
113
|
</div>
|
@@ -118,14 +116,14 @@
|
|
118
116
|
<%= check_box_tag("wf_check_all", "", false, :onClick => "wfCheckAll(this)") %>
|
119
117
|
|
120
118
|
<% else %>
|
121
|
-
<%= column_title %>
|
119
|
+
<%= column_title %>
|
122
120
|
|
123
|
-
<% end %>
|
121
|
+
<% end %>
|
124
122
|
</div>
|
125
123
|
</th>
|
126
124
|
<% end %>
|
127
125
|
</tr>
|
128
|
-
</thead>
|
126
|
+
</thead>
|
129
127
|
|
130
128
|
<tbody>
|
131
129
|
|
@@ -137,11 +135,18 @@
|
|
137
135
|
<tr class='data_row <%=(index % 2 == 0) ? "wf_row_even" : "wf_row_odd"%>'>
|
138
136
|
<% carray.each_with_index do |cmeta, column_index| %>
|
139
137
|
<%
|
140
|
-
|
138
|
+
if cmeta[:style].nil?
|
139
|
+
value_style = 'padding-top:2px;padding-bottom:2px;vertical-align:middle;'
|
140
|
+
elsif cmeta[:style].is_a?(Proc)
|
141
|
+
value_style = cmeta[:style].call(obj)
|
142
|
+
else
|
143
|
+
value_style = cmeta[:style]
|
144
|
+
end
|
145
|
+
|
141
146
|
value_class = cmeta[:class] || ''
|
142
147
|
|
143
148
|
if cmeta[:value].nil?
|
144
|
-
value = obj.send(cmeta[:key])
|
149
|
+
value = obj.send(cmeta[:key])
|
145
150
|
elsif cmeta[:value].is_a?(Proc)
|
146
151
|
value = cmeta[:value].call(obj)
|
147
152
|
else
|
@@ -158,26 +163,26 @@
|
|
158
163
|
<td style='<%=value_style%>' class='<%=value_class%>'>
|
159
164
|
<% if cmeta[:filterable] %>
|
160
165
|
<div style='float:right;'><%=link_to(image_tag("will_filter/filter.png", :style=>"width:12px;"), results.add_filter_condition(cmeta[:key], :is, filter_value.to_s).to_params, {:title => "Show only #{filter_value}"}) %></div>
|
161
|
-
<% end -%>
|
166
|
+
<% end -%>
|
162
167
|
|
163
168
|
<% if cmeta[:key] == :checkbox %>
|
164
169
|
<%= check_box_tag("#{value}[]", obj.id, false, :id => "wf_check_#{index}", :onClick => "wfVerifyTrigger(this)") %>
|
165
|
-
|
170
|
+
|
166
171
|
<% elsif value.is_a?(Hash) %>
|
167
172
|
<% value.each do |key, value| %>
|
168
173
|
<strong><%=key%>:</strong> <%= value %>;
|
169
174
|
<% end -%>
|
170
|
-
|
171
|
-
<% elsif value.is_a?(Time) %>
|
172
|
-
<%= value.strftime("%m/%d/%Y %l:%M:%S") %>
|
173
175
|
|
174
|
-
<% elsif value.is_a?(
|
176
|
+
<% elsif value.is_a?(Time) %>
|
177
|
+
<%= value.strftime("%m/%d/%Y %l:%M:%S %p %Z") %>
|
178
|
+
|
179
|
+
<% elsif value.is_a?(Date) %>
|
175
180
|
<%= value.strftime("%m/%d/%Y") %>
|
176
|
-
|
181
|
+
|
177
182
|
<% else %>
|
178
183
|
|
179
|
-
<%= value.to_s %>
|
180
|
-
<% end -%>
|
184
|
+
<%= value.to_s %>
|
185
|
+
<% end -%>
|
181
186
|
</td>
|
182
187
|
<% end -%>
|
183
188
|
</tr>
|
@@ -188,8 +193,19 @@
|
|
188
193
|
<% end -%>
|
189
194
|
|
190
195
|
</tbody>
|
191
|
-
</table>
|
192
|
-
|
196
|
+
</table>
|
197
|
+
|
198
|
+
<table class='wf_paginator'>
|
199
|
+
<tr>
|
200
|
+
<td style='text-align:left;vertical-align:middle;'>
|
201
|
+
<%= paginate(results) %>
|
202
|
+
</td>
|
203
|
+
<td style='text-align:right;vertical-align:middle;'>
|
204
|
+
Showing <%= results.offset_value + 1 %> - <%= results.offset_value + results.length %> of <%= results.total_count %>
|
205
|
+
</td>
|
206
|
+
</tr>
|
207
|
+
</table>
|
208
|
+
|
193
209
|
<script>
|
194
210
|
function wfVerifyTrigger(check) {
|
195
211
|
if (!check.checked) {
|
@@ -197,7 +213,7 @@
|
|
197
213
|
check_all.checked = false;
|
198
214
|
}
|
199
215
|
}
|
200
|
-
|
216
|
+
|
201
217
|
function wfCheckAll(trigger) {
|
202
218
|
var index = 0;
|
203
219
|
var check = document.getElementById("wf_check_" + index);
|
@@ -220,4 +236,4 @@
|
|
220
236
|
</tr>
|
221
237
|
</table>
|
222
238
|
|
223
|
-
<% end %>
|
239
|
+
<% end %>
|
@@ -1,15 +1,5 @@
|
|
1
|
-
<%= stylesheet_link_tag(
|
2
|
-
<%=
|
3
|
-
<%= stylesheet_link_tag("will_filter/exporter") -%>
|
4
|
-
<%= stylesheet_link_tag("will_filter/actions") -%>
|
5
|
-
<%= stylesheet_link_tag("will_filter/results") -%>
|
6
|
-
<%= stylesheet_link_tag("will_filter/buttons") -%>
|
7
|
-
|
8
|
-
<%= javascript_include_tag("will_filter/filter") -%>
|
9
|
-
|
10
|
-
<% if WillFilter::Config.effects_options[:enabled] %>
|
11
|
-
<%= javascript_include_tag(WillFilter::Config.effects_options[:script_path]) -%>
|
12
|
-
<% end %>
|
1
|
+
<%= stylesheet_link_tag('will_filter/filter') -%>
|
2
|
+
<%= javascript_include_tag('will_filter/filter') -%>
|
13
3
|
|
14
4
|
<script>
|
15
5
|
initializeWillFilter();
|
@@ -1,39 +1,43 @@
|
|
1
1
|
<div class="wf_exporter_header">
|
2
|
-
<div class="end">
|
3
|
-
<%=
|
2
|
+
<div class="end" style="margin-top: -3px;">
|
3
|
+
<%= link_to("×".html_safe, "#", :onclick => "wfExporter.hide(); return false;", :title => "Close", :class => "close") %>
|
4
4
|
</div>
|
5
|
-
|
5
|
+
Export Data
|
6
6
|
</div>
|
7
7
|
|
8
8
|
<div class="wf_exporter_container">
|
9
9
|
|
10
10
|
<table style="width:100%" cellpadding="0px" cellspacing="0px;">
|
11
11
|
<thead>
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
<tr>
|
13
|
+
<td><input type="checkbox" id="wf_fld_all" onClick="wfExporter.selectAllFields(this);" style="width:20px;"></td>
|
14
|
+
<td>Name</td>
|
15
|
+
<td>Type</td>
|
16
|
+
</tr>
|
17
17
|
</thead>
|
18
18
|
<tbody>
|
19
|
-
|
19
|
+
<% @wf_filter.model_class.columns.each_with_index do |col, index| %>
|
20
20
|
<tr>
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
21
|
+
<td>
|
22
|
+
<input type="checkbox" id="wf_fld_chk_<%= index %>" onClick="wfExporter.selectField(this);" style="width:20px;"><input type="hidden" id="wf_fld_name_<%= index %>" value="<%= col.name %>">
|
23
|
+
</td>
|
24
|
+
<td><%= col.name %></td>
|
25
|
+
<td><%= col.type %></td>
|
26
26
|
</tr>
|
27
|
-
|
27
|
+
<% end %>
|
28
28
|
</tbody>
|
29
29
|
</table>
|
30
|
-
|
31
|
-
|
32
|
-
<div class="center">
|
33
|
-
Format: <%= select_tag("wf_export_format_selector", options_for_select(@wf_filter.export_formats,
|
30
|
+
|
31
|
+
|
32
|
+
<div class="center" style="border-top: 1px solid #ccc; padding-top: 5px; margin-top: 5px;">
|
33
|
+
Format: <%= select_tag("wf_export_format_selector", options_for_select(@wf_filter.export_formats, @wf_filter.format)) %>
|
34
34
|
</div>
|
35
35
|
<div class="center">
|
36
|
-
|
37
|
-
|
36
|
+
<button type="button" class="btn btn-primary btn-xs" onclick="wfExporter.exportFilter()">
|
37
|
+
Export
|
38
|
+
</button>
|
39
|
+
<button type="button" class="btn btn-default btn-xs" onclick="wfExporter.hide()">
|
40
|
+
Cancel
|
41
|
+
</button>
|
38
42
|
</div>
|
39
|
-
</div>
|
43
|
+
</div>
|
@@ -1,28 +1,44 @@
|
|
1
1
|
<% if wf_filter.errors[index] %>
|
2
2
|
<tr>
|
3
|
-
<td colspan="2"></td>
|
3
|
+
<td colspan="2"></td>
|
4
4
|
<td>
|
5
5
|
<div class="error">
|
6
|
-
<%= wf_filter.errors[index] %>
|
6
|
+
<%= wf_filter.errors[index] %>
|
7
7
|
</div>
|
8
8
|
</td>
|
9
9
|
<td></td>
|
10
|
-
</tr>
|
10
|
+
</tr>
|
11
11
|
<% end %>
|
12
12
|
|
13
13
|
<tr>
|
14
14
|
<td class="condition">
|
15
|
-
<%= select_tag "wf_c#{index}", options_for_select(wf_filter.condition_options, condition.key.to_s), {:class=>"wf_input full_width", :onChange=>"wfFilter.updateConditionAt('#{index}')"} %>
|
15
|
+
<%= select_tag "wf_c#{index}", options_for_select(wf_filter.condition_options, condition.key.to_s), {:class => "wf_input full_width", style: 'width:100%', :onChange => "wfFilter.updateConditionAt('#{index}')"} %>
|
16
|
+
<script>
|
17
|
+
$("#wf_c<%=index%>").select2().on("change", function (e) {
|
18
|
+
wfFilter.updateConditionAt('<%=index%>');
|
19
|
+
});
|
20
|
+
</script>
|
16
21
|
</td>
|
17
22
|
<td class="operator">
|
18
|
-
<%= select_tag "wf_o#{index}", options_for_select(wf_filter.operator_options_for(condition.key), condition.operator.to_s), {:class=>"wf_input full_width", :onChange=>"wfFilter.updateConditionAt('#{index}')"} %>
|
23
|
+
<%= select_tag "wf_o#{index}", options_for_select(wf_filter.operator_options_for(condition.key), condition.operator.to_s), {:class => "wf_input full_width", style: 'width:100%', :onChange => "wfFilter.updateConditionAt('#{index}')"} %>
|
24
|
+
<script>
|
25
|
+
$("#wf_o<%=index%>").select2().on("change", function (e) {
|
26
|
+
wfFilter.updateConditionAt('<%=index%>');
|
27
|
+
});
|
28
|
+
</script>
|
19
29
|
</td>
|
20
30
|
<td class="values">
|
21
|
-
|
31
|
+
<%= render :partial => "/will_filter/filter/containers/#{condition.container.template_name}", :locals => {:container => condition.container, :index => index} %>
|
22
32
|
</td>
|
23
33
|
<td class="actions">
|
24
|
-
|
25
|
-
|
34
|
+
<button type="button" class="btn btn-default btn-xs" onclick="wfFilter.removeConditionAt('<%= index %>')" style="width: 20px;">
|
35
|
+
-
|
36
|
+
</button>
|
37
|
+
<button type="button" class="btn btn-default btn-xs" onclick="wfFilter.addConditionAfter('<%= index %>')" style="width: 20px;">
|
38
|
+
+
|
39
|
+
</button>
|
26
40
|
</td>
|
27
41
|
</tr>
|
28
|
-
|
42
|
+
|
43
|
+
</td>
|
44
|
+
</tr>
|