it-logica-application-backbone 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.5
1
+ 1.0.6
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "it-logica-application-backbone"
8
- s.version = "1.0.5"
8
+ s.version = "1.0.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ladas"]
@@ -13,11 +13,11 @@ module ModelMixins
13
13
  params[:real_order_by] = params[:order_by]
14
14
  check_non_existing_colum_order_by(settings, params)
15
15
 
16
- not_selected_items = object.filter(settings, params, per_page)
16
+ not_selected_items = object.filter(object, settings, params, per_page)
17
17
  items = not_selected_items.selection(settings)
18
18
  if params[:page].to_i > items.total_pages && items.total_pages > 0
19
19
  params[:page] = 1
20
- not_selected_items = object.filter(settings, params, per_page)
20
+ not_selected_items = object.filter(object, settings, params, per_page)
21
21
  items = not_selected_items.selection(settings)
22
22
  end
23
23
 
@@ -131,7 +131,9 @@ module ModelMixins
131
131
  def selection(settings)
132
132
  select_string = ""
133
133
  settings[:columns].each do |col|
134
- col[:table] = "unknown" if col[:table].blank?
134
+ col[:table] = "___unknown___" if col[:table].blank?
135
+ col[:table] = "___sql_expression___" unless col[:sql_expression].blank?
136
+
135
137
  if col[:column_method].blank? && col[:row_method].blank? && !col[:name].blank?
136
138
  if col[:sql_expression].blank?
137
139
  # I am selection col[:name]
@@ -163,16 +165,22 @@ module ModelMixins
163
165
  select_string += ", " unless select_string.blank?
164
166
  select_string += "#{settings[:row][:id]} AS row_id "
165
167
 
168
+
166
169
  select(select_string)
167
170
  end
168
171
 
169
- def filter(settings, params, per_page = 10)
172
+ def filter(object, settings, params, per_page = 10)
170
173
  order_by = params[:real_order_by]
171
174
 
172
175
  cond_str = ""
173
176
  cond_hash = {}
177
+ having_cond_str = ""
178
+ having_cond_hash = {}
179
+
180
+
174
181
  if !params.blank? && params['find']
175
182
  params['find'].each_pair do |i, v|
183
+ i = i.gsub(/___unknown___\./, "") #some cleaning job
176
184
  unless v.blank?
177
185
  if i.match(/^.*?non_existing_column___.*$/i)
178
186
  identifier = i.split("non_existing_column___").second
@@ -194,17 +202,29 @@ module ModelMixins
194
202
  end
195
203
  end
196
204
  else
197
- cond_str += " AND " unless cond_str.blank?
198
- cond_id = "find_#{i.gsub(/\./, '_')}"
199
- cond_str += "#{i} LIKE :#{cond_id}" #OR guest_email LIKE :find"
200
- cond_hash.merge!({cond_id.to_sym => "%#{v}%"})
205
+ if i.match(/^.*?___sql_expression___.*$/i)
206
+ i = i.gsub(/___sql_expression___\./, "") #some cleaning job
207
+
208
+ having_cond_str += " AND " unless cond_str.blank?
209
+ cond_id = "find_#{i.gsub(/\./, '_')}"
210
+ having_cond_str += "#{i} LIKE :#{cond_id}" #OR guest_email LIKE :find"
211
+ having_cond_hash.merge!({cond_id.to_sym => "%#{v}%"})
212
+ else
213
+ cond_str += " AND " unless cond_str.blank?
214
+ cond_id = "find_#{i.gsub(/\./, '_')}"
215
+ cond_str += "#{i} LIKE :#{cond_id}" #OR guest_email LIKE :find"
216
+ cond_hash.merge!({cond_id.to_sym => "%#{v}%"})
217
+ end
201
218
  end
202
219
  end
203
220
  end
204
221
  end
205
222
 
223
+ # ToDO ladas add number filter
224
+ # ToDo ladas add having condition to others
206
225
  if !params.blank? && params['multichoice']
207
226
  params['multichoice'].each_pair do |i, v|
227
+ i = i.gsub(/___unknown___\./, "") #some cleaning job
208
228
  unless v.blank?
209
229
  cond_str += " AND " unless cond_str.blank?
210
230
  cond_id = "multichoice_#{i.gsub(/\./, '_')}"
@@ -217,6 +237,7 @@ module ModelMixins
217
237
 
218
238
  if !params.blank? && params['date_from']
219
239
  params['date_from'].each_pair do |i, v|
240
+ i = i.gsub(/___unknown___\./, "") #some cleaning job
220
241
  unless v.blank?
221
242
  cond_str += " AND " unless cond_str.blank?
222
243
  cond_id = "date_from_#{i.gsub(/\./, '_')}"
@@ -228,6 +249,7 @@ module ModelMixins
228
249
 
229
250
  if !params.blank? && params['date_to']
230
251
  params['date_to'].each_pair do |i, v|
252
+ i = i.gsub(/___unknown___\./, "") #some cleaning job
231
253
  unless v.blank?
232
254
  cond_str += " AND " unless cond_str.blank?
233
255
  cond_id = "date_to_#{i.gsub(/\./, '_')}"
@@ -237,7 +259,8 @@ module ModelMixins
237
259
  end
238
260
  end
239
261
 
240
- ret = where(cond_str, cond_hash).paginate(:page => params[:page], :per_page => per_page).order(order_by)
262
+ ret = where(cond_str, cond_hash).order(order_by)
263
+ ret = ret.having(having_cond_str, having_cond_hash) unless having_cond_str.blank?
241
264
  #items = self.joins("LEFT OUTER JOIN intranet_text_pages ON resource_id = intranet_text_pages.id").where(cond_str, cond_hash).paginate(:page => params[:page], :per_page => per_page).order(order_by).selection(settings)
242
265
  #if params[:page].to_i > items.total_pages && items.total_pages > 0
243
266
  # params[:page] = 1
@@ -254,12 +277,25 @@ module ModelMixins
254
277
  end
255
278
  end
256
279
 
280
+
281
+ # fuck will paginate, if there are agregated queries that I use for condition, will_paginage will delete it
282
+ # i am counting rows on my own
283
+ if object.respond_to?(:klass)
284
+ mysql_count = object.klass.find_by_sql("SELECT COUNT(*) AS count_all FROM (" + ret.selection(settings).to_sql + ") count")
285
+ else
286
+ mysql_count = object.find_by_sql("SELECT COUNT(*) AS count_all FROM (" + ret.selection(settings).to_sql + ") count")
287
+ end
288
+ ret = ret.paginate(:page => params[:page], :per_page => per_page, :total_entries => mysql_count.first[:count_all])
289
+
257
290
  ret
258
291
  end
259
292
 
260
293
 
261
294
  def check_non_existing_colum_order_by(settings, params)
262
- order_by_arr = params[:order_by].split(",")
295
+ order_by_params = params[:order_by].dup.gsub(/___unknown___\./, "") #some cleaning job
296
+ order_by_params = order_by_params.gsub(/___sql_expression___\./, "") #some cleaning job
297
+
298
+ order_by_arr = order_by_params.split(",")
263
299
  order_by_arr.each_with_index do |one_order_by, index|
264
300
  if one_order_by.match(/^.*?non_existing_column___.*$/i)
265
301
  identifier_and_direction = one_order_by.split("non_existing_column___").second
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: it-logica-application-backbone
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-08-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: htmlentities
16
- requirement: &78953680 !ruby/object:Gem::Requirement
16
+ requirement: &74655360 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *78953680
24
+ version_requirements: *74655360
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: shoulda
27
- requirement: &77670010 !ruby/object:Gem::Requirement
27
+ requirement: &74654940 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *77670010
35
+ version_requirements: *74654940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rdoc
38
- requirement: &77669710 !ruby/object:Gem::Requirement
38
+ requirement: &74176350 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.12'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *77669710
46
+ version_requirements: *74176350
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &77669430 !ruby/object:Gem::Requirement
49
+ requirement: &74176070 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.1.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *77669430
57
+ version_requirements: *74176070
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &77669150 !ruby/object:Gem::Requirement
60
+ requirement: &74175780 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.8.4
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *77669150
68
+ version_requirements: *74175780
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
- requirement: &77668840 !ruby/object:Gem::Requirement
71
+ requirement: &74175470 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *77668840
79
+ version_requirements: *74175470
80
80
  description: longer description of your gem
81
81
  email: ladislav.smola@it-logica.cz
82
82
  executables: []
@@ -570,7 +570,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
570
570
  version: '0'
571
571
  segments:
572
572
  - 0
573
- hash: 539010931
573
+ hash: -1038174595
574
574
  required_rubygems_version: !ruby/object:Gem::Requirement
575
575
  none: false
576
576
  requirements: