old_sql 1.1.0 → 1.2.0
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.
|
@@ -4,6 +4,12 @@ OldSql.setup do |config|
|
|
|
4
4
|
# The title of the Report Selection View.
|
|
5
5
|
config.report_select_page_title = 'Old SQL Reports'
|
|
6
6
|
|
|
7
|
+
# Determines whether the values for the report will be rounded.
|
|
8
|
+
config.round_report_values = true
|
|
9
|
+
|
|
10
|
+
# The precision to round all values to if rounding is enabled.
|
|
11
|
+
config.rounding_precision = 2
|
|
12
|
+
|
|
7
13
|
# Configure the default report view. This setting will be used unless overridden
|
|
8
14
|
# in config/old_sql/reports.yml.
|
|
9
15
|
config.default_report_view = "jqgrid"
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
# Old SQL:
|
|
2
|
-
# Example Report Design
|
|
2
|
+
# Example Report Design Document
|
|
3
|
+
#
|
|
4
|
+
# Text not in quotes are column names from the SQL query
|
|
5
|
+
# Quoted text are labels that will appear in the report.
|
|
6
|
+
# Expressions like ( id + id ) * 10 below must be single
|
|
7
|
+
# space delimited. So (id+id) will not parse correctly.
|
|
8
|
+
#
|
|
9
|
+
# NaN and Infinity are returned as zero.
|
|
10
|
+
#
|
|
11
|
+
# Comments are lines beginning with a hash #. They are
|
|
12
|
+
# stripped when this document is parsed.
|
|
13
|
+
#
|
|
14
|
+
# Values (either columns or expressions) are rounded by default.
|
|
15
|
+
# To disable this set round_report_values to false in
|
|
16
|
+
# config/initializers/old_sql.rb. You can also change the
|
|
17
|
+
# precision, which is 2 by default.
|
|
3
18
|
#
|
|
4
19
|
id,name
|
|
5
20
|
"Example Math Operation",id + id
|
|
6
|
-
"Totals","..."
|
|
21
|
+
"Totals","..."
|
|
22
|
+
"Expression",( id + id ) * 10
|
|
23
|
+
"Divide by Zero 1",0 / 0
|
|
24
|
+
"Divide by Zero 2",1.0 / 0
|
|
25
|
+
"Divide by Zero 3",0.0 / 0.0
|
|
26
|
+
"Rounding",200.0 / 43.0
|
|
@@ -8,7 +8,7 @@ module OldSql
|
|
|
8
8
|
module ReportProcessor
|
|
9
9
|
class Base
|
|
10
10
|
|
|
11
|
-
ROUND_PRECISION =
|
|
11
|
+
ROUND_PRECISION = OldSql.rounding_precision
|
|
12
12
|
|
|
13
13
|
def execute_query(report_sql,start_date,end_date,query_vars,design=nil,sub_processor=nil)
|
|
14
14
|
vars = {:start_date => start_date, :end_date => end_date}
|
|
@@ -94,7 +94,11 @@ module OldSql
|
|
|
94
94
|
end
|
|
95
95
|
else
|
|
96
96
|
if cd.type == OldSql::ReportDesign::CellData::COLUMN
|
|
97
|
-
|
|
97
|
+
result = @rec[cd.data]
|
|
98
|
+
if OldSql.round_report_values
|
|
99
|
+
result = round(result.to_f, OldSql.rounding_precision)
|
|
100
|
+
end
|
|
101
|
+
report_row << result
|
|
98
102
|
elsif cd.type == OldSql::ReportDesign::CellData::LABEL
|
|
99
103
|
report_row << cd.data.gsub(/"/,"")
|
|
100
104
|
end
|
|
@@ -108,11 +112,10 @@ module OldSql
|
|
|
108
112
|
end
|
|
109
113
|
|
|
110
114
|
def eval_expression expression
|
|
111
|
-
result =
|
|
115
|
+
result = 0.0
|
|
112
116
|
begin
|
|
113
117
|
Rails.logger.debug "Evalutating Expression: #{expression}"
|
|
114
118
|
result = eval(expression)
|
|
115
|
-
Rails.logger.debug "EXPR RESULT #{result.to_s}"
|
|
116
119
|
rescue ZeroDivisionError => e
|
|
117
120
|
Rails.logger.error e
|
|
118
121
|
rescue Exception => e
|
|
@@ -124,14 +127,20 @@ module OldSql
|
|
|
124
127
|
end
|
|
125
128
|
|
|
126
129
|
if result == "Infinity" || result == "NaN"
|
|
127
|
-
result =
|
|
130
|
+
result = 0.0
|
|
131
|
+
elsif OldSql.round_report_values
|
|
132
|
+
result = round(result.to_f, OldSql.rounding_precision)
|
|
128
133
|
end
|
|
129
134
|
|
|
130
|
-
|
|
131
|
-
Rails.logger.debug "Result of the expression: #{result}"
|
|
135
|
+
Rails.logger.debug "Expression result: #{result}"
|
|
132
136
|
|
|
133
137
|
result
|
|
134
138
|
end
|
|
139
|
+
|
|
140
|
+
def round(value, precision = ROUND_PRECISION)
|
|
141
|
+
factor = 10.0**precision
|
|
142
|
+
(value*factor).round / factor
|
|
143
|
+
end
|
|
135
144
|
|
|
136
145
|
def new_data(page=1, total=1, records=1)
|
|
137
146
|
@id = 0
|
data/lib/old_sql.rb
CHANGED
|
@@ -10,10 +10,13 @@ module OldSql
|
|
|
10
10
|
mattr_accessor :default_report_view
|
|
11
11
|
@@default_report_view = 'jqgrid'
|
|
12
12
|
|
|
13
|
-
#
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
# Determines whether the values for the report will be rounded.
|
|
14
|
+
mattr_accessor :round_report_values
|
|
15
|
+
@@round_report_values = true
|
|
16
|
+
|
|
17
|
+
# The precision to round all values to if rounding is enabled.
|
|
18
|
+
mattr_accessor :rounding_precision
|
|
19
|
+
@@rounding_precision = 2
|
|
17
20
|
|
|
18
21
|
# Width of the jqGrid component in the jqGrid report view.
|
|
19
22
|
mattr_accessor :jqgrid_width
|
metadata
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: old_sql
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease:
|
|
5
|
-
version: 1.
|
|
5
|
+
version: 1.2.0
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- Eddie Gonzales
|
|
@@ -200,7 +200,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
200
200
|
requirements:
|
|
201
201
|
- - ">="
|
|
202
202
|
- !ruby/object:Gem::Version
|
|
203
|
-
hash:
|
|
203
|
+
hash: 1929929110961270162
|
|
204
204
|
segments:
|
|
205
205
|
- 0
|
|
206
206
|
version: "0"
|