wice_grid 4.1.0 → 6.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +63 -36
  3. data/.github/dependabot.yml +36 -0
  4. data/CHANGELOG.md +14 -7
  5. data/Gemfile.lock +68 -47
  6. data/README.md +10 -13
  7. data/config/locales/cz.yml +2 -5
  8. data/config/locales/de.yml +0 -5
  9. data/config/locales/en.yml +0 -5
  10. data/config/locales/es.yml +0 -5
  11. data/config/locales/fr.yml +2 -5
  12. data/config/locales/is.yml +4 -8
  13. data/config/locales/it.yml +0 -5
  14. data/config/locales/ja.yml +0 -5
  15. data/config/locales/nl.yml +2 -5
  16. data/config/locales/pt-BR.yml +2 -5
  17. data/config/locales/pt.yml +2 -5
  18. data/config/locales/ru.yml +2 -5
  19. data/config/locales/sk.yml +2 -5
  20. data/config/locales/uk.yml +2 -5
  21. data/config/locales/zh.yml +2 -5
  22. data/gemfiles/rails_5.0.gemfile.lock +34 -26
  23. data/gemfiles/rails_5.1.gemfile.lock +35 -27
  24. data/gemfiles/rails_5.2.gemfile.lock +37 -29
  25. data/lib/wice/active_record_column_wrapper.rb +10 -0
  26. data/lib/wice/columns/column_custom_dropdown.rb +14 -4
  27. data/lib/wice/grid_renderer.rb +3 -3
  28. data/lib/wice/table_column_matrix.rb +2 -1
  29. data/lib/wice/wice_grid_controller.rb +1 -51
  30. data/lib/wice_grid.rb +1 -1
  31. data/package.json +18 -0
  32. data/spec/acceptance_helper.rb +1 -0
  33. data/spec/features/auto_reloads2_request_spec.rb +18 -1
  34. data/spec/features/auto_reloads_request_spec.rb +19 -3
  35. data/spec/features/custom_filters1_request_spec.rb +5 -24
  36. data/spec/features/custom_filters2_request_spec.rb +4 -26
  37. data/spec/features/custom_filters3_request_spec.rb +3 -19
  38. data/spec/features/detached_filters_spec.rb +1 -1
  39. data/spec/features/detached_filters_two_grids_spec.rb +10 -2
  40. data/spec/features/shared_detached_filters.rb +18 -1
  41. data/vendor/assets/javascripts/wice_grid_processor.js.coffee +3 -3
  42. data/wice_grid.gemspec +14 -12
  43. metadata +56 -36
  44. data/.travis.yml +0 -22
  45. data/TODO.md +0 -16
@@ -1,9 +1,4 @@
1
1
  uk:
2
- date:
3
- order:
4
- - :year
5
- - :month
6
- - :day
7
2
  wice_grid:
8
3
  show_filter_tooltip: "Показати фільтр"
9
4
  hide_filter_tooltip: "Сховати фільтр"
@@ -43,3 +38,5 @@ uk:
43
38
  query_saved_message: "Збережуваний фільтр збережено."
44
39
  select_all: "Виділити все"
45
40
  deselect_all: "Забрати виділення"
41
+ expand: Розгорнути
42
+ collapse: Згорнути
@@ -1,9 +1,4 @@
1
1
  zh:
2
- date:
3
- order:
4
- - :year
5
- - :month
6
- - :day
7
2
  wice_grid:
8
3
  show_filter_tooltip: 显示过滤
9
4
  hide_filter_tooltip: 隐藏过滤
@@ -43,3 +38,5 @@ zh:
43
38
  query_saved_message: 查询已储存
44
39
  select_all: 全选
45
40
  deselect_all: 全清
41
+ expand: 擴大
42
+ collapse: 坍方
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- wice_grid (4.0.1)
4
+ wice_grid (4.1.0)
5
5
  coffee-rails (> 3.2)
6
- kaminari (~> 0.16)
6
+ kaminari (~> 1.1)
7
7
  rails (~> 5.0, < 5.3)
8
8
 
9
9
  GEM
@@ -57,12 +57,14 @@ GEM
57
57
  sass (~> 3.2)
58
58
  builder (3.2.3)
59
59
  byebug (10.0.2)
60
- capybara (2.2.1)
61
- mime-types (>= 1.16)
62
- nokogiri (>= 1.3.3)
63
- rack (>= 1.0.0)
64
- rack-test (>= 0.5.4)
65
- xpath (~> 2.0)
60
+ capybara (3.13.2)
61
+ addressable
62
+ mini_mime (>= 0.1.3)
63
+ nokogiri (~> 1.8)
64
+ rack (>= 1.6.0)
65
+ rack-test (>= 0.6.3)
66
+ regexp_parser (~> 1.2)
67
+ xpath (~> 3.2)
66
68
  capybara-screenshot (1.0.21)
67
69
  capybara (>= 1.0, < 4)
68
70
  launchy
@@ -111,9 +113,18 @@ GEM
111
113
  jquery-ui-themes (0.0.12)
112
114
  httparty
113
115
  json (1.8.6)
114
- kaminari (0.17.0)
115
- actionpack (>= 3.0.0)
116
- activesupport (>= 3.0.0)
116
+ kaminari (1.1.1)
117
+ activesupport (>= 4.1.0)
118
+ kaminari-actionview (= 1.1.1)
119
+ kaminari-activerecord (= 1.1.1)
120
+ kaminari-core (= 1.1.1)
121
+ kaminari-actionview (1.1.1)
122
+ actionview
123
+ kaminari-core (= 1.1.1)
124
+ kaminari-activerecord (1.1.1)
125
+ activerecord
126
+ kaminari-core (= 1.1.1)
127
+ kaminari-core (1.1.1)
117
128
  launchy (2.4.3)
118
129
  addressable (~> 2.3)
119
130
  libv8 (3.16.14.19)
@@ -123,27 +134,23 @@ GEM
123
134
  mail (2.7.0)
124
135
  mini_mime (>= 0.1.1)
125
136
  method_source (0.9.0)
126
- mime-types (3.1)
127
- mime-types-data (~> 3.2015)
128
- mime-types-data (3.2016.0521)
129
137
  mini_mime (1.0.0)
130
- mini_portile2 (2.3.0)
138
+ mini_portile2 (2.4.0)
131
139
  minitest (5.11.3)
132
140
  multi_json (1.13.1)
133
141
  multi_xml (0.6.0)
134
142
  nio4r (2.3.1)
135
- nokogiri (1.8.2)
136
- mini_portile2 (~> 2.3.0)
137
- poltergeist (1.9.0)
138
- capybara (~> 2.1)
143
+ nokogiri (1.10.1)
144
+ mini_portile2 (~> 2.4.0)
145
+ poltergeist (1.18.1)
146
+ capybara (>= 2.1, < 4)
139
147
  cliver (~> 0.3.1)
140
- multi_json (~> 1.0)
141
148
  websocket-driver (>= 0.2.0)
142
149
  pry (0.11.3)
143
150
  coderay (~> 1.1.0)
144
151
  method_source (~> 0.9.0)
145
152
  public_suffix (3.0.2)
146
- rack (2.0.5)
153
+ rack (2.0.6)
147
154
  rack-test (0.6.3)
148
155
  rack (>= 1.0)
149
156
  rails (5.0.7)
@@ -176,6 +183,7 @@ GEM
176
183
  rdoc (4.2.2)
177
184
  json (~> 1.4)
178
185
  ref (2.0.0)
186
+ regexp_parser (1.3.0)
179
187
  rspec (3.6.0)
180
188
  rspec-core (~> 3.6.0)
181
189
  rspec-expectations (~> 3.6.0)
@@ -249,8 +257,8 @@ GEM
249
257
  websocket-driver (0.6.5)
250
258
  websocket-extensions (>= 0.1.0)
251
259
  websocket-extensions (0.1.3)
252
- xpath (2.1.0)
253
- nokogiri (~> 1.3)
260
+ xpath (3.2.0)
261
+ nokogiri (~> 1.8)
254
262
  yard (0.8.7.6)
255
263
 
256
264
  PLATFORMS
@@ -261,7 +269,7 @@ DEPENDENCIES
261
269
  bootstrap-sass (= 3.1.1.1)
262
270
  bundler (~> 1.3)
263
271
  byebug
264
- capybara (~> 2.2.0)
272
+ capybara (~> 3.13.2)
265
273
  capybara-screenshot (~> 1.0.11)
266
274
  coderay (~> 1.1.0)
267
275
  faker (~> 1.8.7)
@@ -271,7 +279,7 @@ DEPENDENCIES
271
279
  jquery-rails (~> 4.3.3)
272
280
  jquery-ui-rails (~> 5.0.5)
273
281
  jquery-ui-themes (~> 0.0.11)
274
- poltergeist (~> 1.9.0)
282
+ poltergeist (~> 1.18.0)
275
283
  rails (~> 5.0.0)
276
284
  rake (~> 10.1)
277
285
  rdoc (~> 4.2.0)
@@ -288,4 +296,4 @@ DEPENDENCIES
288
296
  yard (~> 0.8)
289
297
 
290
298
  BUNDLED WITH
291
- 1.16.2
299
+ 1.17.2
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- wice_grid (4.0.1)
4
+ wice_grid (4.1.0)
5
5
  coffee-rails (> 3.2)
6
- kaminari (~> 0.16)
6
+ kaminari (~> 1.1)
7
7
  rails (~> 5.0, < 5.3)
8
8
 
9
9
  GEM
@@ -57,12 +57,14 @@ GEM
57
57
  sass (~> 3.2)
58
58
  builder (3.2.3)
59
59
  byebug (10.0.2)
60
- capybara (2.2.1)
61
- mime-types (>= 1.16)
62
- nokogiri (>= 1.3.3)
63
- rack (>= 1.0.0)
64
- rack-test (>= 0.5.4)
65
- xpath (~> 2.0)
60
+ capybara (3.13.2)
61
+ addressable
62
+ mini_mime (>= 0.1.3)
63
+ nokogiri (~> 1.8)
64
+ rack (>= 1.6.0)
65
+ rack-test (>= 0.6.3)
66
+ regexp_parser (~> 1.2)
67
+ xpath (~> 3.2)
66
68
  capybara-screenshot (1.0.21)
67
69
  capybara (>= 1.0, < 4)
68
70
  launchy
@@ -111,9 +113,18 @@ GEM
111
113
  jquery-ui-themes (0.0.12)
112
114
  httparty
113
115
  json (1.8.6)
114
- kaminari (0.17.0)
115
- actionpack (>= 3.0.0)
116
- activesupport (>= 3.0.0)
116
+ kaminari (1.1.1)
117
+ activesupport (>= 4.1.0)
118
+ kaminari-actionview (= 1.1.1)
119
+ kaminari-activerecord (= 1.1.1)
120
+ kaminari-core (= 1.1.1)
121
+ kaminari-actionview (1.1.1)
122
+ actionview
123
+ kaminari-core (= 1.1.1)
124
+ kaminari-activerecord (1.1.1)
125
+ activerecord
126
+ kaminari-core (= 1.1.1)
127
+ kaminari-core (1.1.1)
117
128
  launchy (2.4.3)
118
129
  addressable (~> 2.3)
119
130
  libv8 (3.16.14.19)
@@ -123,28 +134,24 @@ GEM
123
134
  mail (2.7.0)
124
135
  mini_mime (>= 0.1.1)
125
136
  method_source (0.9.0)
126
- mime-types (3.1)
127
- mime-types-data (~> 3.2015)
128
- mime-types-data (3.2016.0521)
129
137
  mini_mime (1.0.0)
130
- mini_portile2 (2.3.0)
138
+ mini_portile2 (2.4.0)
131
139
  minitest (5.11.3)
132
140
  multi_json (1.13.1)
133
141
  multi_xml (0.6.0)
134
142
  nio4r (2.3.1)
135
- nokogiri (1.8.2)
136
- mini_portile2 (~> 2.3.0)
137
- poltergeist (1.9.0)
138
- capybara (~> 2.1)
143
+ nokogiri (1.10.1)
144
+ mini_portile2 (~> 2.4.0)
145
+ poltergeist (1.18.1)
146
+ capybara (>= 2.1, < 4)
139
147
  cliver (~> 0.3.1)
140
- multi_json (~> 1.0)
141
148
  websocket-driver (>= 0.2.0)
142
149
  pry (0.11.3)
143
150
  coderay (~> 1.1.0)
144
151
  method_source (~> 0.9.0)
145
152
  public_suffix (3.0.2)
146
- rack (2.0.5)
147
- rack-test (1.0.0)
153
+ rack (2.0.6)
154
+ rack-test (1.1.0)
148
155
  rack (>= 1.0, < 3)
149
156
  rails (5.1.6)
150
157
  actioncable (= 5.1.6)
@@ -176,6 +183,7 @@ GEM
176
183
  rdoc (4.2.2)
177
184
  json (~> 1.4)
178
185
  ref (2.0.0)
186
+ regexp_parser (1.3.0)
179
187
  rspec (3.6.0)
180
188
  rspec-core (~> 3.6.0)
181
189
  rspec-expectations (~> 3.6.0)
@@ -249,8 +257,8 @@ GEM
249
257
  websocket-driver (0.6.5)
250
258
  websocket-extensions (>= 0.1.0)
251
259
  websocket-extensions (0.1.3)
252
- xpath (2.1.0)
253
- nokogiri (~> 1.3)
260
+ xpath (3.2.0)
261
+ nokogiri (~> 1.8)
254
262
  yard (0.8.7.6)
255
263
 
256
264
  PLATFORMS
@@ -261,7 +269,7 @@ DEPENDENCIES
261
269
  bootstrap-sass (= 3.1.1.1)
262
270
  bundler (~> 1.3)
263
271
  byebug
264
- capybara (~> 2.2.0)
272
+ capybara (~> 3.13.2)
265
273
  capybara-screenshot (~> 1.0.11)
266
274
  coderay (~> 1.1.0)
267
275
  faker (~> 1.8.7)
@@ -271,7 +279,7 @@ DEPENDENCIES
271
279
  jquery-rails (~> 4.3.3)
272
280
  jquery-ui-rails (~> 5.0.5)
273
281
  jquery-ui-themes (~> 0.0.11)
274
- poltergeist (~> 1.9.0)
282
+ poltergeist (~> 1.18.0)
275
283
  rails (~> 5.1.0)
276
284
  rake (~> 10.1)
277
285
  rdoc (~> 4.2.0)
@@ -288,4 +296,4 @@ DEPENDENCIES
288
296
  yard (~> 0.8)
289
297
 
290
298
  BUNDLED WITH
291
- 1.16.2
299
+ 1.17.2
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- wice_grid (4.0.1)
4
+ wice_grid (4.1.0)
5
5
  coffee-rails (> 3.2)
6
- kaminari (~> 0.16)
6
+ kaminari (~> 1.1)
7
7
  rails (~> 5.0, < 5.3)
8
8
 
9
9
  GEM
@@ -61,12 +61,14 @@ GEM
61
61
  sass (~> 3.2)
62
62
  builder (3.2.3)
63
63
  byebug (10.0.2)
64
- capybara (2.2.1)
65
- mime-types (>= 1.16)
66
- nokogiri (>= 1.3.3)
67
- rack (>= 1.0.0)
68
- rack-test (>= 0.5.4)
69
- xpath (~> 2.0)
64
+ capybara (3.13.2)
65
+ addressable
66
+ mini_mime (>= 0.1.3)
67
+ nokogiri (~> 1.8)
68
+ rack (>= 1.6.0)
69
+ rack-test (>= 0.6.3)
70
+ regexp_parser (~> 1.2)
71
+ xpath (~> 3.2)
70
72
  capybara-screenshot (1.0.21)
71
73
  capybara (>= 1.0, < 4)
72
74
  launchy
@@ -74,9 +76,9 @@ GEM
74
76
  ffi (~> 1.0, >= 1.0.11)
75
77
  cliver (0.3.2)
76
78
  coderay (1.1.2)
77
- coffee-rails (4.2.2)
79
+ coffee-rails (5.0.0)
78
80
  coffee-script (>= 2.2.0)
79
- railties (>= 4.0.0)
81
+ railties (>= 5.2.0)
80
82
  coffee-script (2.4.1)
81
83
  coffee-script-source
82
84
  execjs
@@ -115,9 +117,18 @@ GEM
115
117
  jquery-ui-themes (0.0.12)
116
118
  httparty
117
119
  json (1.8.6)
118
- kaminari (0.17.0)
119
- actionpack (>= 3.0.0)
120
- activesupport (>= 3.0.0)
120
+ kaminari (1.1.1)
121
+ activesupport (>= 4.1.0)
122
+ kaminari-actionview (= 1.1.1)
123
+ kaminari-activerecord (= 1.1.1)
124
+ kaminari-core (= 1.1.1)
125
+ kaminari-actionview (1.1.1)
126
+ actionview
127
+ kaminari-core (= 1.1.1)
128
+ kaminari-activerecord (1.1.1)
129
+ activerecord
130
+ kaminari-core (= 1.1.1)
131
+ kaminari-core (1.1.1)
121
132
  launchy (2.4.3)
122
133
  addressable (~> 2.3)
123
134
  libv8 (3.16.14.19)
@@ -129,29 +140,25 @@ GEM
129
140
  marcel (0.3.2)
130
141
  mimemagic (~> 0.3.2)
131
142
  method_source (0.9.0)
132
- mime-types (3.1)
133
- mime-types-data (~> 3.2015)
134
- mime-types-data (3.2016.0521)
135
143
  mimemagic (0.3.2)
136
144
  mini_mime (1.0.0)
137
- mini_portile2 (2.3.0)
145
+ mini_portile2 (2.4.0)
138
146
  minitest (5.11.3)
139
147
  multi_json (1.13.1)
140
148
  multi_xml (0.6.0)
141
149
  nio4r (2.3.1)
142
- nokogiri (1.8.3)
143
- mini_portile2 (~> 2.3.0)
144
- poltergeist (1.9.0)
145
- capybara (~> 2.1)
150
+ nokogiri (1.10.1)
151
+ mini_portile2 (~> 2.4.0)
152
+ poltergeist (1.18.1)
153
+ capybara (>= 2.1, < 4)
146
154
  cliver (~> 0.3.1)
147
- multi_json (~> 1.0)
148
155
  websocket-driver (>= 0.2.0)
149
156
  pry (0.11.3)
150
157
  coderay (~> 1.1.0)
151
158
  method_source (~> 0.9.0)
152
159
  public_suffix (3.0.2)
153
- rack (2.0.5)
154
- rack-test (1.0.0)
160
+ rack (2.0.6)
161
+ rack-test (1.1.0)
155
162
  rack (>= 1.0, < 3)
156
163
  rails (5.2.0)
157
164
  actioncable (= 5.2.0)
@@ -184,6 +191,7 @@ GEM
184
191
  rdoc (4.2.2)
185
192
  json (~> 1.4)
186
193
  ref (2.0.0)
194
+ regexp_parser (1.3.0)
187
195
  rspec (3.6.0)
188
196
  rspec-core (~> 3.6.0)
189
197
  rspec-expectations (~> 3.6.0)
@@ -257,8 +265,8 @@ GEM
257
265
  websocket-driver (0.7.0)
258
266
  websocket-extensions (>= 0.1.0)
259
267
  websocket-extensions (0.1.3)
260
- xpath (2.1.0)
261
- nokogiri (~> 1.3)
268
+ xpath (3.2.0)
269
+ nokogiri (~> 1.8)
262
270
  yard (0.8.7.6)
263
271
 
264
272
  PLATFORMS
@@ -269,7 +277,7 @@ DEPENDENCIES
269
277
  bootstrap-sass (= 3.1.1.1)
270
278
  bundler (~> 1.3)
271
279
  byebug
272
- capybara (~> 2.2.0)
280
+ capybara (~> 3.13.2)
273
281
  capybara-screenshot (~> 1.0.11)
274
282
  coderay (~> 1.1.0)
275
283
  faker (~> 1.8.7)
@@ -279,7 +287,7 @@ DEPENDENCIES
279
287
  jquery-rails (~> 4.3.3)
280
288
  jquery-ui-rails (~> 5.0.5)
281
289
  jquery-ui-themes (~> 0.0.11)
282
- poltergeist (~> 1.9.0)
290
+ poltergeist (~> 1.18.0)
283
291
  rails (~> 5.2.0)
284
292
  rake (~> 10.1)
285
293
  rdoc (~> 4.2.0)
@@ -296,4 +304,4 @@ DEPENDENCIES
296
304
  yard (~> 0.8)
297
305
 
298
306
  BUNDLED WITH
299
- 1.16.2
307
+ 1.17.2
@@ -115,6 +115,16 @@ module Wice
115
115
  @column.model
116
116
  end
117
117
 
118
+ def array?
119
+ if @column.sql_type_metadata.respond_to? :array
120
+ @column.sql_type_metadata.array
121
+ else
122
+ @column.sql_type_metadata.sql_type.index('[]')
123
+ end
124
+ rescue
125
+ false
126
+ end
127
+
118
128
  def alias_or_table_name(table_alias) #:nodoc:
119
129
  table_alias || @column.model.table_name
120
130
  end
@@ -83,17 +83,23 @@ module Wice
83
83
  end
84
84
  opts = (opts.is_a?(Array) && opts.size == 1) ? opts[0] : opts
85
85
 
86
+ column_name =
87
+ "#{@column_wrapper.alias_or_table_name(table_alias)}.#{@column_wrapper.name}"
86
88
  if opts.is_a?(Array)
87
89
  opts_with_special_values, normal_opts = opts.partition { |v| ::Wice::GridTools.special_value(v) }
88
90
 
89
91
  conditions_ar = if normal_opts.size > 0
90
- [" #{@column_wrapper.alias_or_table_name(table_alias)}.#{@column_wrapper.name} IN ( " + (['?'] * normal_opts.size).join(', ') + ' )'] + normal_opts
92
+ if @column_wrapper.array?
93
+ [(["? = ANY(#{column_name})"] * normal_opts.size).join(' OR ')] + normal_opts
94
+ else
95
+ [" #{column_name} IN ( " + (['?'] * normal_opts.size).join(', ') + ' )'] + normal_opts
96
+ end
91
97
  else
92
98
  []
93
99
  end
94
100
 
95
101
  if opts_with_special_values.size > 0
96
- special_conditions = opts_with_special_values.collect { |v| " #{@column_wrapper.alias_or_table_name(table_alias)}.#{@column_wrapper.name} is " + v }.join(' or ')
102
+ special_conditions = opts_with_special_values.collect { |v| " #{column_name} is " + v }.join(' or ')
97
103
  if conditions_ar.size > 0
98
104
  conditions_ar[0] = " (#{conditions_ar[0]} or #{special_conditions} ) "
99
105
  else
@@ -103,9 +109,13 @@ module Wice
103
109
  conditions_ar
104
110
  else
105
111
  if ::Wice::GridTools.special_value(opts)
106
- " #{@column_wrapper.alias_or_table_name(table_alias)}.#{@column_wrapper.name} is " + opts
112
+ " #{column_name} is " + opts
107
113
  else
108
- [" #{@column_wrapper.alias_or_table_name(table_alias)}.#{@column_wrapper.name} = ?", opts]
114
+ if @column_wrapper.array?
115
+ [" ? = ANY(#{column_name})", opts]
116
+ else
117
+ [" #{column_name} = ?", opts]
118
+ end
109
119
  end
110
120
  end
111
121
  end
@@ -106,7 +106,7 @@ module Wice
106
106
  def csv_export_icon #:nodoc:
107
107
  content_tag(
108
108
  :div,
109
- content_tag(:i, '', class: 'fa fa-file-excel-o'),
109
+ content_tag(:i, '', class: 'fa fa-file-csv'),
110
110
  title: NlMessage['csv_export_tooltip'],
111
111
  class: 'clickable export-to-csv-button'
112
112
  )
@@ -119,13 +119,13 @@ module Wice
119
119
 
120
120
  if panel.nil?
121
121
  if render_csv_button
122
- "<tr><td colspan=\"#{number_of_columns}\"></td><td>#{csv_export_icon}</td></tr>"
122
+ "<tr><td colspan=\"#{number_of_columns}\"></td><td class=\"csv_export\">#{csv_export_icon}</td></tr>"
123
123
  else
124
124
  ''
125
125
  end
126
126
  else
127
127
  if render_csv_button
128
- "<tr><td colspan=\"#{number_of_columns}\">#{panel}</td><td>#{csv_export_icon}</td></tr>"
128
+ "<tr><td colspan=\"#{number_of_columns}\">#{panel}</td><td class=\"csv_export\">#{csv_export_icon}</td></tr>"
129
129
  else
130
130
  "<tr><td colspan=\"#{number_of_columns + 1}\">#{panel}</td></tr>"
131
131
  end
@@ -54,7 +54,8 @@ module Wice
54
54
  end
55
55
 
56
56
  def init_columns_of_table(model) #:nodoc:
57
- self[model] = HashWithIndifferentAccess.new(model.columns.index_by(&:name))
57
+ self[model] =
58
+ HashWithIndifferentAccess.new(model.columns.map(&:dup).index_by(&:name))
58
59
  @by_table_names[model.table_name] = self[model]
59
60
  self[model].each_value { |c| c.model = model }
60
61
  end
@@ -115,7 +115,7 @@ module Wice
115
115
  temp_filename = temp_filename.strip
116
116
  filename = (grid.csv_file_name || grid.name) + '.csv'
117
117
  grid.csv_tempfile.close
118
- send_file_rails2 temp_filename, filename: filename, type: "text/csv; charset=#{get_output_encoding grid.csv_encoding}"
118
+ send_file temp_filename, filename: filename, type: "text/csv; charset=#{get_output_encoding grid.csv_encoding}"
119
119
  grid.csv_tempfile = nil
120
120
  true
121
121
  else
@@ -170,55 +170,5 @@ module Wice
170
170
  csv_encoding.split(':').first
171
171
  end
172
172
  end
173
-
174
- def send_file_rails2(path, options = {}) #:nodoc:
175
- raise "Cannot read file #{path}" unless File.file?(path) && File.readable?(path)
176
-
177
- options[:length] ||= File.size(path)
178
- options[:filename] ||= File.basename(path) unless options[:url_based_filename]
179
- send_file_headers_rails2! options
180
-
181
- @performed_render = false
182
-
183
- logger.info "Sending file #{path}" unless logger.nil?
184
- File.open(path, 'rb') { |file| render status: options[:status], plain: file.read }
185
- end
186
-
187
- DEFAULT_SEND_FILE_OPTIONS_RAILS2 = { #:nodoc:
188
- type: 'application/octet-stream'.freeze,
189
- disposition: 'attachment'.freeze,
190
- stream: true,
191
- buffer_size: 4096,
192
- x_sendfile: false
193
- }.freeze
194
-
195
- def send_file_headers_rails2!(options) #:nodoc:
196
- options.update(DEFAULT_SEND_FILE_OPTIONS_RAILS2.merge(options))
197
- [:length, :type, :disposition].each do |arg|
198
- raise ArgumentError, ":#{arg} option required" if options[arg].nil?
199
- end
200
-
201
- disposition = options[:disposition].dup || 'attachment'
202
-
203
- disposition <<= %(; filename="#{options[:filename]}") if options[:filename]
204
-
205
- content_type = options[:type]
206
- content_type = content_type.to_s.strip # fixes a problem with extra '\r' with some browsers
207
-
208
- headers.merge!(
209
- 'Content-Length' => options[:length].to_s,
210
- 'Content-Type' => content_type,
211
- 'Content-Disposition' => disposition,
212
- 'Content-Transfer-Encoding' => 'binary'
213
- )
214
-
215
- # Fix a problem with IE 6.0 on opening downloaded files:
216
- # If Cache-Control: no-cache is set (which Rails does by default),
217
- # IE removes the file it just downloaded from its cache immediately
218
- # after it displays the "open/save" dialog, which means that if you
219
- # hit "open" the file isn't there anymore when the application that
220
- # is called for handling the download is run, so let's workaround that
221
- headers['Cache-Control'] = 'private' if headers['Cache-Control'] == 'no-cache'
222
- end
223
173
  end
224
174
  end
data/lib/wice_grid.rb CHANGED
@@ -304,7 +304,7 @@ module Wice
304
304
  else
305
305
  @ar_options[:order] = arel_column_reference(@status[:order])
306
306
  end
307
- if @ar_options[:order].is_a?(Arel::Attributes::Attribute)
307
+ if @ar_options[:order].is_a?(Arel::Attributes::Attribute) || @ar_options[:order].is_a?(Arel::Nodes::SqlLiteral)
308
308
  if @status[:order_direction] == 'desc'
309
309
  @ar_options[:order] = @ar_options[:order].desc
310
310
  else
data/package.json ADDED
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "wice-grid",
3
+ "version": "4.1.0",
4
+ "description": "WiceGrid is a Rails grid plugin",
5
+ "main": "vendor/assets/javascripts/wice_grid.js",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "/home/dima/devel/github/wice_grid"
9
+ },
10
+ "author": "Dmitry Kulikov",
11
+ "license": "MIT",
12
+ "directories": {
13
+ "lib": "lib"
14
+ },
15
+ "scripts": {
16
+ "test": "echo \"Error: no test specified\" && exit 1"
17
+ }
18
+ }
@@ -16,6 +16,7 @@ else
16
16
  require 'capybara-screenshot/rspec'
17
17
  Capybara::Screenshot.prune_strategy = :keep_last_run
18
18
  end
19
+ Capybara.server = :webrick
19
20
 
20
21
  # Slow down responses to help debug tests that have race conditions.
21
22
  if ENV['TEST_RESPONSE_DELAY']