wice_grid 4.1.0 → 6.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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']