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 +1 -1
- data/it-logica-application-backbone.gemspec +1 -1
- data/lib/model_mixins/table_builder_class_methods.rb +46 -10
- metadata +14 -14
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.6
|
@@ -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] = "
|
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
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
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).
|
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
|
-
|
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.
|
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: &
|
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: *
|
24
|
+
version_requirements: *74655360
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: shoulda
|
27
|
-
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: *
|
35
|
+
version_requirements: *74654940
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rdoc
|
38
|
-
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: *
|
46
|
+
version_requirements: *74176350
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
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: *
|
57
|
+
version_requirements: *74176070
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
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: *
|
68
|
+
version_requirements: *74175780
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: simplecov
|
71
|
-
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: *
|
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:
|
573
|
+
hash: -1038174595
|
574
574
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
575
575
|
none: false
|
576
576
|
requirements:
|