it-logica-application-backbone 1.0.5 → 1.0.6

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.
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: