forest_liana 1.3.10 → 1.3.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/services/forest_liana/line_stat_getter.rb +1 -1
- data/app/services/forest_liana/operator_value_parser.rb +23 -15
- data/app/services/forest_liana/pie_stat_getter.rb +1 -1
- data/app/services/forest_liana/resources_getter.rb +3 -18
- data/app/services/forest_liana/search_query_builder.rb +2 -2
- data/app/services/forest_liana/value_stat_getter.rb +1 -1
- data/lib/forest_liana/version.rb +1 -1
- data/test/dummy/app/models/owner.rb +2 -0
- data/test/dummy/app/models/tree.rb +3 -0
- data/test/dummy/db/migrate/20160627172810_create_owner.rb +7 -0
- data/test/dummy/db/migrate/20160627172951_create_tree.rb +8 -0
- data/test/dummy/db/migrate/20160628173505_add_timestamps.rb +8 -0
- data/test/dummy/db/schema.rb +16 -2
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/test.log +1466 -0
- data/test/fixtures/owner.yml +17 -0
- data/test/fixtures/tree.yml +34 -0
- data/test/services/forest_liana/resources_getter_test.rb +67 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5499cb583c0ca2e7eb3a4b9596a76e5ca545842f
|
4
|
+
data.tar.gz: 3727b0e41710ee0f3a3b1a4962bc384d280aec84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a81248483a08e7dd28fbd49176057242d9e384520d0d4c018719551c6e21dc8c5b66b610ca0491a22d33e34d511b94445aa0584ae0b9e4ce4548020d3eef57cf
|
7
|
+
data.tar.gz: b7679fff43bb4058c006e61b9013dbb3facf914c9729249596e15b8237902497935da649cc3aa5dc20ec2e57609ff53d11129806f51f5b3a3802550602beb7f7
|
@@ -14,7 +14,7 @@ module ForestLiana
|
|
14
14
|
@params[:filters].try(:each) do |filter|
|
15
15
|
operator, filter_value = OperatorValueParser.parse(filter[:value])
|
16
16
|
value = OperatorValueParser.add_where(value, filter[:field], operator,
|
17
|
-
filter_value)
|
17
|
+
filter_value, @resource)
|
18
18
|
end
|
19
19
|
|
20
20
|
value = value.send(time_range, @params[:group_by_date_field])
|
@@ -29,33 +29,41 @@ module ForestLiana
|
|
29
29
|
[operator, value]
|
30
30
|
end
|
31
31
|
|
32
|
-
def self.add_where(query, field, operator, value)
|
32
|
+
def self.add_where(query, field, operator, value, resource)
|
33
|
+
if field.split(':').size < 2
|
34
|
+
field_name = "\"#{resource.table_name}\".\"#{field}\""
|
35
|
+
else
|
36
|
+
association = field.split(':')[0].pluralize
|
37
|
+
field_name = "\"#{association}\".\"#{field.split(':')[1]}\""
|
38
|
+
end
|
39
|
+
|
33
40
|
match = /^last(\d+)days$/.match(value)
|
34
41
|
if match && match[1]
|
35
|
-
return query = query.where("#{
|
42
|
+
return query = query.where("#{field_name} >= ?",
|
43
|
+
Integer(match[1]).day.ago)
|
36
44
|
end
|
37
45
|
|
38
46
|
case value
|
39
47
|
when 'yesterday'
|
40
|
-
|
41
|
-
|
48
|
+
query = query.where("#{field_name} BETWEEN " +
|
49
|
+
"'#{1.day.ago.beginning_of_day}' AND '#{1.day.ago.end_of_day}'")
|
42
50
|
when 'lastWeek'
|
43
|
-
|
44
|
-
|
51
|
+
query = query.where("#{field_name} BETWEEN " +
|
52
|
+
"'#{1.week.ago.beginning_of_week}' AND '#{1.week.ago.end_of_week}'")
|
45
53
|
when 'last2Weeks'
|
46
|
-
|
47
|
-
|
54
|
+
query = query.where("#{field_name} BETWEEN " +
|
55
|
+
"'#{2.week.ago.beginning_of_week}' AND '#{1.week.ago.end_of_week}'")
|
48
56
|
when 'lastMonth'
|
49
|
-
|
50
|
-
|
57
|
+
query = query.where("#{field_name} BETWEEN " +
|
58
|
+
"'#{1.month.ago.beginning_of_month}' AND '#{1.month.ago.end_of_month}'")
|
51
59
|
when 'last3Months'
|
52
|
-
|
53
|
-
|
60
|
+
query = query.where("#{field_name} BETWEEN " +
|
61
|
+
"'#{3.month.ago.beginning_of_month}' AND '#{1.month.ago.end_of_month}'")
|
54
62
|
when 'lastYear'
|
55
|
-
|
56
|
-
|
63
|
+
query = query.where("#{field_name} BETWEEN " +
|
64
|
+
"'#{1.year.ago.beginning_of_year}' AND '#{1.year.ago.end_of_year}'")
|
57
65
|
else
|
58
|
-
where = "#{
|
66
|
+
where = "#{field_name} #{operator}"
|
59
67
|
where += " '#{value}'" if value
|
60
68
|
query = query.where(where)
|
61
69
|
end
|
@@ -14,7 +14,7 @@ module ForestLiana
|
|
14
14
|
@params[:filters].try(:each) do |filter|
|
15
15
|
operator, filter_value = OperatorValueParser.parse(filter[:value])
|
16
16
|
value = OperatorValueParser.add_where(value, filter[:field], operator,
|
17
|
-
filter_value)
|
17
|
+
filter_value, @resource)
|
18
18
|
end
|
19
19
|
|
20
20
|
# NOTICE: The generated alias for a count is "count_all", for a sum the
|
@@ -35,37 +35,22 @@ module ForestLiana
|
|
35
35
|
@records = @records.includes(ref) if association?(ref)
|
36
36
|
|
37
37
|
field = detect_reference(field)
|
38
|
-
|
39
|
-
if [:has_many, :has_and_belongs_to_many].include?(
|
40
|
-
association.try(:macro))
|
41
|
-
@records = has_many_sort(association, order)
|
42
|
-
else
|
38
|
+
if field.index('.').nil?
|
43
39
|
@records = @records
|
44
40
|
.order("#{@resource.table_name}.#{field} #{order.upcase}")
|
41
|
+
else
|
42
|
+
@records = @records.order("#{field} #{order.upcase}")
|
45
43
|
end
|
46
44
|
end
|
47
45
|
elsif @resource.column_names.include?('created_at')
|
48
46
|
@records = @records.order("#{@resource.table_name}.created_at DESC")
|
49
47
|
elsif @resource.column_names.include?('id')
|
50
48
|
@records = @records.order("#{@resource.table_name}.id DESC")
|
51
|
-
else
|
52
|
-
@records
|
53
49
|
end
|
54
50
|
|
55
51
|
@records
|
56
52
|
end
|
57
53
|
|
58
|
-
def has_many_sort(association, order)
|
59
|
-
@records
|
60
|
-
.select("#{@resource.table_name}.*,
|
61
|
-
COUNT(#{association.table_name}.id)
|
62
|
-
#{association.table_name}_has_many_count")
|
63
|
-
.joins(ArelHelpers.join_association(@resource, association.name,
|
64
|
-
Arel::Nodes::OuterJoin))
|
65
|
-
.group("#{@resource.table_name}.id")
|
66
|
-
.order("#{association.table_name}_has_many_count #{order.upcase}")
|
67
|
-
end
|
68
|
-
|
69
54
|
def detect_sort_order(field)
|
70
55
|
return (if field[0] == '-' then :desc else :asc end)
|
71
56
|
end
|
@@ -51,11 +51,11 @@ module ForestLiana
|
|
51
51
|
def filter_param
|
52
52
|
if @params[:filter]
|
53
53
|
@params[:filter].each do |field, values|
|
54
|
-
next if
|
54
|
+
next if has_many_association?(field)
|
55
55
|
values.split(',').each do |value|
|
56
56
|
operator, value = OperatorValueParser.parse(value)
|
57
57
|
@records = OperatorValueParser.add_where(@records, field, operator,
|
58
|
-
value)
|
58
|
+
value, @resource)
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -14,7 +14,7 @@ module ForestLiana
|
|
14
14
|
@params[:filters].try(:each) do |filter|
|
15
15
|
operator, filter_value = OperatorValueParser.parse(filter[:value])
|
16
16
|
value = OperatorValueParser.add_where(value, filter[:field], operator,
|
17
|
-
filter_value)
|
17
|
+
filter_value, @resource)
|
18
18
|
end
|
19
19
|
|
20
20
|
@record = Model::Stat.new(value: count(value))
|
data/lib/forest_liana/version.rb
CHANGED
data/test/dummy/db/schema.rb
CHANGED
@@ -11,8 +11,7 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended that you check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(version:
|
15
|
-
|
14
|
+
ActiveRecord::Schema.define(version: 20160628173505) do
|
16
15
|
create_table "belongs_to_class_name_fields", force: :cascade do |t|
|
17
16
|
t.integer "foo_id"
|
18
17
|
end
|
@@ -67,6 +66,12 @@ ActiveRecord::Schema.define(version: 20150814081918) do
|
|
67
66
|
t.integer "field"
|
68
67
|
end
|
69
68
|
|
69
|
+
create_table "owners", force: :cascade do |t|
|
70
|
+
t.string "name"
|
71
|
+
t.datetime "created_at"
|
72
|
+
t.datetime "updated_at"
|
73
|
+
end
|
74
|
+
|
70
75
|
create_table "polymorphic_fields", force: :cascade do |t|
|
71
76
|
t.integer "has_one_field_id"
|
72
77
|
end
|
@@ -77,4 +82,13 @@ ActiveRecord::Schema.define(version: 20150814081918) do
|
|
77
82
|
t.string "field"
|
78
83
|
end
|
79
84
|
|
85
|
+
create_table "trees", force: :cascade do |t|
|
86
|
+
t.string "name"
|
87
|
+
t.integer "owner_id"
|
88
|
+
t.datetime "created_at"
|
89
|
+
t.datetime "updated_at"
|
90
|
+
end
|
91
|
+
|
92
|
+
add_index "trees", ["owner_id"], name: "index_trees_on_owner_id"
|
93
|
+
|
80
94
|
end
|
data/test/dummy/db/test.sqlite3
CHANGED
Binary file
|