old_sql 0.1.0 → 0.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.
- data/Rakefile +2 -0
- data/VERSION +1 -1
- data/app/controllers/old_sql/report_controller.rb +188 -0
- data/app/views/old_sql/report/datagrid.html.erb +16 -0
- data/app/views/old_sql/report/index.html.erb +148 -0
- data/app/views/old_sql/report/print.html.erb +66 -0
- data/config/routes.rb +12 -0
- data/lib/extensions/action_controller/base.rb +7 -0
- data/lib/old_sql.rb +5 -0
- data/lib/old_sql/engine.rb +9 -0
- data/lib/report_processor/base.rb +85 -0
- data/old_sql.gemspec +9 -2
- data/pkg/old_sql-0.1.0.gem +0 -0
- metadata +10 -3
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
@@ -0,0 +1,188 @@
|
|
1
|
+
require 'csv'
|
2
|
+
require 'sequel'
|
3
|
+
|
4
|
+
#
|
5
|
+
# TODO:
|
6
|
+
# 1. Reduce the datagrid and print views to a single view.
|
7
|
+
# The colnames can be defined in the reports.yml config file.
|
8
|
+
# (Completed on 5-24-2011)
|
9
|
+
# 2. Create a generic SQL parse method.
|
10
|
+
# (Completed on 5-24-2011)
|
11
|
+
# 3. Convert to a gem. This class will be overridden to implement
|
12
|
+
# parse methods.
|
13
|
+
# 4. Add export to CSV
|
14
|
+
# (Completed on 5-24-2011)
|
15
|
+
# 5. I think we should move the parse methods to a lib class.
|
16
|
+
# The parse class name could be defined in the reports.yml file.
|
17
|
+
# (Completed on 5-24-2011)
|
18
|
+
# 6. Try and implement jqgrid sort and search methods.
|
19
|
+
# This should be done in the sql files by passing the params
|
20
|
+
# from jqgrid into them.
|
21
|
+
# 7. Remove rails_admin dependencies
|
22
|
+
# 8. Add Devise support
|
23
|
+
# 9. Rewrite jqgrid using JQuery
|
24
|
+
#
|
25
|
+
|
26
|
+
module OldSql
|
27
|
+
class ReportController < ApplicationController
|
28
|
+
before_filter :_init
|
29
|
+
before_filter :_reports
|
30
|
+
|
31
|
+
helper_method :jqgrid_field_list
|
32
|
+
|
33
|
+
ROUND_PRECISION = 2
|
34
|
+
BASE_PROCESSOR = "base"
|
35
|
+
|
36
|
+
def index
|
37
|
+
render :layout => 'rails_admin/dashboard'
|
38
|
+
end
|
39
|
+
|
40
|
+
def datagrid
|
41
|
+
@start_date = params[:start_date]
|
42
|
+
@end_date = params[:end_date]
|
43
|
+
@generation = params[:generation]
|
44
|
+
@report_name = params[:report]
|
45
|
+
@report_sql = params[:report_sql]
|
46
|
+
|
47
|
+
render :layout => 'rails_admin/datagrid', :template => "rails_admin/db_report/datagrid.html.erb"
|
48
|
+
end
|
49
|
+
|
50
|
+
def query
|
51
|
+
@start_date = params[:start_date]
|
52
|
+
@end_date = params[:end_date]
|
53
|
+
@generation = params[:generation]
|
54
|
+
@report_name = params[:report]
|
55
|
+
@report_sql = params[:report_sql].downcase
|
56
|
+
@report_sql_orig = params[:report_sql].downcase
|
57
|
+
|
58
|
+
if !@generation.nil? && @generation.to_i >= 0
|
59
|
+
@report_sql << "_gen_#{@generation}"
|
60
|
+
end
|
61
|
+
|
62
|
+
logger.info "REPORT: #{@report_name}"
|
63
|
+
logger.info "REPORT SQL: #{@report_sql}"
|
64
|
+
logger.info "START_DATE: #{@start_date}"
|
65
|
+
logger.info "END_DATE: #{@end_date}"
|
66
|
+
logger.info "GENERATION: #{@generation}"
|
67
|
+
|
68
|
+
processor = load_processor(@report_name)
|
69
|
+
@report = processor.execute_query(@report_sql,@start_date,@end_date,query_vars(@report_name))
|
70
|
+
|
71
|
+
respond_to do |format|
|
72
|
+
format.json { render :json => @report.to_json}
|
73
|
+
format.xml { render :xml => @report.to_xml }
|
74
|
+
format.csv {
|
75
|
+
csv_string = CSV.generate do |csv|
|
76
|
+
# header row
|
77
|
+
csv << ['Start Date', @start_date,'End Date', @end_date]
|
78
|
+
csv << @reports[@report_name]['fields']
|
79
|
+
|
80
|
+
# data rows
|
81
|
+
@report[:rows].each do |row|
|
82
|
+
rec = []
|
83
|
+
row[:cell].each do |cell|
|
84
|
+
rec << Sanitize.clean(cell.to_s)
|
85
|
+
end
|
86
|
+
csv << rec
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
send_data csv_string,
|
91
|
+
:type => 'text/csv; charset=iso-8859-1; header=present',
|
92
|
+
:disposition => "attachment; filename=#{@report_sql}_#{@start_date.gsub(' ','_')}_#{@end_date.gsub(' ','_')}.csv"
|
93
|
+
}
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def print
|
98
|
+
@start_date = params[:start_date]
|
99
|
+
@end_date = params[:end_date]
|
100
|
+
@generation = params[:generation]
|
101
|
+
@report_name = params[:report]
|
102
|
+
@desc = params[:desc]
|
103
|
+
@report_sql = params[:report_sql].downcase
|
104
|
+
@report_sql_orig = params[:report_sql].downcase
|
105
|
+
|
106
|
+
if !@generation.nil? && @generation.to_i >= 0
|
107
|
+
@report_sql << "_gen_#{@generation}"
|
108
|
+
end
|
109
|
+
|
110
|
+
logger.info "REPORT: #{@report_name}"
|
111
|
+
logger.info "REPORT SQL: #{@report_sql}"
|
112
|
+
logger.info "START_DATE: #{@start_date}"
|
113
|
+
logger.info "END_DATE: #{@end_date}"
|
114
|
+
logger.info "GENERATION: #{@generation}"
|
115
|
+
|
116
|
+
processor = load_processor(@report_name)
|
117
|
+
@report = processor.execute_query(@report_sql,@start_date,@end_date,query_vars(@report_name))
|
118
|
+
|
119
|
+
render :layout => 'rails_admin/db_report_print', :template => "rails_admin/db_report/print.html.erb"
|
120
|
+
end
|
121
|
+
|
122
|
+
|
123
|
+
private
|
124
|
+
def _init
|
125
|
+
#todo add Devise support
|
126
|
+
#@authorization_adapter.authorize(:index) if @authorization_adapter
|
127
|
+
@page_name = t("admin.report.pagename")
|
128
|
+
@page_type = "report"
|
129
|
+
@host = self.request.host
|
130
|
+
@port = self.request.port
|
131
|
+
end
|
132
|
+
|
133
|
+
def _reports
|
134
|
+
template = File.read("#{Rails.root}/config/reports.yml")
|
135
|
+
@reports = YAML.load(Erubis::Eruby.new(template).result)
|
136
|
+
end
|
137
|
+
|
138
|
+
def load_processor report
|
139
|
+
processor = nil
|
140
|
+
begin
|
141
|
+
#todo get processor name from @reports
|
142
|
+
|
143
|
+
if !@reports[report]['processor'].nil?
|
144
|
+
logger.info "Loading Processor report_processor/#{@reports[report]['processor'].downcase}"
|
145
|
+
require "report_processor/#{@reports[report]['processor'].downcase}"
|
146
|
+
processor=eval("ReportProcessor::#{@reports[report]['processor'].gsub("_","")}").new
|
147
|
+
|
148
|
+
else
|
149
|
+
logger.info "Loading Processor report_processor/#{BASE_PROCESSOR}"
|
150
|
+
require "report_processor/#{BASE_PROCESSOR}"
|
151
|
+
processor=eval("ReportProcessor::#{BASE_PROCESSOR}.capitalize").new
|
152
|
+
end
|
153
|
+
rescue
|
154
|
+
logger.info "Loading Processor report_processor/#{BASE_PROCESSOR}"
|
155
|
+
require "report_processor/#{BASE_PROCESSOR}"
|
156
|
+
processor=eval("ReportProcessor::#{BASE_PROCESSOR}.capitalize").new
|
157
|
+
end
|
158
|
+
|
159
|
+
processor
|
160
|
+
end
|
161
|
+
|
162
|
+
def jqgrid_field_list
|
163
|
+
@fields = []
|
164
|
+
field_num = 1
|
165
|
+
|
166
|
+
@reports[@report_name]['fields'].each do |field|
|
167
|
+
if field_num == 1
|
168
|
+
@fields << { :field => "cell_#{field_num}", :label => field }
|
169
|
+
else
|
170
|
+
@fields << { :field => "cell_#{field_num}", :label => field, :align => "center" }
|
171
|
+
end
|
172
|
+
field_num+=1
|
173
|
+
end
|
174
|
+
|
175
|
+
@fields
|
176
|
+
end
|
177
|
+
|
178
|
+
def query_vars report
|
179
|
+
query_vars = @reports[report]['query_vars']
|
180
|
+
if !query_vars.nil? && query_vars.size > 0
|
181
|
+
return query_vars[0]
|
182
|
+
else
|
183
|
+
return nil
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<%=jqgrid_javascripts%>
|
2
|
+
<%=jqgrid_stylesheets%>
|
3
|
+
|
4
|
+
<%=raw jqgrid(
|
5
|
+
"#{@reports[@report_name]['value']} Report",
|
6
|
+
"#{@report_name}",
|
7
|
+
"/admin/db/report/query.json/",
|
8
|
+
jqgrid_field_list(),
|
9
|
+
{
|
10
|
+
:autowidth=>true,
|
11
|
+
:height=>430,
|
12
|
+
:rows_per_page=>25,
|
13
|
+
:mtype=>'GET',
|
14
|
+
:post_data=>"{'report':'#{@report_name}','report_sql':'#{@report_sql}','generation':'#{@generation}','start_date':'#{@start_date}','end_date':'#{@end_date}'}"
|
15
|
+
}
|
16
|
+
) %>
|
@@ -0,0 +1,148 @@
|
|
1
|
+
<% head_style "old_sql/db_report" %>
|
2
|
+
|
3
|
+
<% head_javascript "old_sql/application.js" %>
|
4
|
+
<% head_javascript "old_sql/jquery-ui-timepicker-addon.js" %>
|
5
|
+
<% head_javascript "old_sql/date_format.js" %>
|
6
|
+
|
7
|
+
<script>
|
8
|
+
var host = "<%=@host%>";
|
9
|
+
var port = "<%=@port%>";
|
10
|
+
var _report_sql = '';
|
11
|
+
var _report_loaded = false;
|
12
|
+
|
13
|
+
function report_selected()
|
14
|
+
{
|
15
|
+
var virality = $j("#report option:selected").attr('virality');
|
16
|
+
_report_sql = $j("#report option:selected").attr('report_sql');
|
17
|
+
|
18
|
+
if (virality == 'true')
|
19
|
+
{
|
20
|
+
$j("#select-generation").removeAttr('disabled');
|
21
|
+
}
|
22
|
+
else
|
23
|
+
{
|
24
|
+
$j("#select-generation").attr('disabled', 'disabled');
|
25
|
+
$j("#select-generation option:first").attr('selected','selected');
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
function load_report()
|
30
|
+
{
|
31
|
+
var src = "http://" + host+":"+port+"/admin/db/report/datagrid/?report="+$j("#report").val()+
|
32
|
+
"&start_date="+$j("#datepicker-start").val()+"&end_date="+$j("#datepicker-end").val()+"&generation="+$j("#select-generation").val()+"&report_sql="+
|
33
|
+
_report_sql;
|
34
|
+
|
35
|
+
jQuery('iframe').attr('src', src);
|
36
|
+
|
37
|
+
_report_loaded = true;
|
38
|
+
}
|
39
|
+
|
40
|
+
function print_report()
|
41
|
+
{
|
42
|
+
if(_report_loaded == false)
|
43
|
+
{
|
44
|
+
alert("You must select a report, and run it before continuing.");
|
45
|
+
return;
|
46
|
+
}
|
47
|
+
|
48
|
+
var src = "http://" + host+":"+port+"/admin/db/report/print/?report="+$j("#report").val()+
|
49
|
+
"&start_date="+$j("#datepicker-start").val()+"&end_date="+$j("#datepicker-end").val()+"&generation="+$j("#select-generation").val()+"&report_sql="+
|
50
|
+
_report_sql+"&desc="+$j("#report option:selected").attr('desc');
|
51
|
+
window.open(src,'DB Report')
|
52
|
+
}
|
53
|
+
|
54
|
+
function export_report_to_excel()
|
55
|
+
{
|
56
|
+
if(_report_loaded == false)
|
57
|
+
{
|
58
|
+
alert("You must select a report, and run it before continuing.");
|
59
|
+
return;
|
60
|
+
}
|
61
|
+
|
62
|
+
var src = "http://" + host+":"+port+"/admin/db/report/query.csv/?report="+$j("#report").val()+
|
63
|
+
"&start_date="+$j("#datepicker-start").val()+"&end_date="+$j("#datepicker-end").val()+"&generation="+$j("#select-generation").val()+"&report_sql="+
|
64
|
+
_report_sql+"&desc="+$j("#report option:selected").attr('desc');
|
65
|
+
window.open(src,'DB Report')
|
66
|
+
}
|
67
|
+
|
68
|
+
$j(document).ready(function($){
|
69
|
+
$("#datepicker-start").datetimepicker();
|
70
|
+
$("#datepicker-start").datetimepicker( "option", "dateFormat", "yy/mm/dd" );
|
71
|
+
$("#datepicker-end").datetimepicker();
|
72
|
+
$("#datepicker-end").datetimepicker( "option", "dateFormat", "yy/mm/dd" );
|
73
|
+
|
74
|
+
$j("#select-generation").attr('disabled', 'disabled');
|
75
|
+
|
76
|
+
var now = new Date();
|
77
|
+
var tomorrow = new Date();
|
78
|
+
var two_weeks_ago = new Date();
|
79
|
+
two_weeks_ago.setDate(now.getDate() - 14);
|
80
|
+
tomorrow.setDate(now.getDate() + 1);
|
81
|
+
$j("#datepicker-start").attr('value', two_weeks_ago.format("yyyy/mm/dd HH:MM:ss"));
|
82
|
+
$j("#datepicker-end").attr('value', tomorrow.format("yyyy/mm/dd HH:MM:ss"));
|
83
|
+
});
|
84
|
+
</script>
|
85
|
+
|
86
|
+
<div class="ra-block">
|
87
|
+
<div class="ui-widget-header clearfix">
|
88
|
+
<%= @page_name %>
|
89
|
+
</div>
|
90
|
+
|
91
|
+
<form id="report-form" name="report-form" action="/admin/db/report/query" method="POST">
|
92
|
+
<div class="report-form-row">
|
93
|
+
<div class="report-form-label">SELECT A REPORT:</div>
|
94
|
+
<div class="report-form-input">
|
95
|
+
<select name="report" id="report"
|
96
|
+
onchange="report_selected()">
|
97
|
+
<option></option>
|
98
|
+
<% @reports.each do |report, data| %>
|
99
|
+
<option value="<%= data['name'] %>" virality="<%= data['virality'] %>" report_sql="<%= data['report_sql'] %>" desc="<%= data['value'] %>"><%= data['value'] %></option>
|
100
|
+
<% end %>
|
101
|
+
</select>
|
102
|
+
</div>
|
103
|
+
</div>
|
104
|
+
|
105
|
+
<div class="report-form-row">
|
106
|
+
<div class="report-form-label">GENERATION:</div>
|
107
|
+
<div class="report-form-input">
|
108
|
+
<select name="generation" id="select-generation">
|
109
|
+
<option value="-1"></option>
|
110
|
+
<option value="0">0</option>
|
111
|
+
<option value="1">1</option>
|
112
|
+
<option value="2">2</option>
|
113
|
+
</select>
|
114
|
+
</div>
|
115
|
+
</div>
|
116
|
+
|
117
|
+
<div class="report-form-row">
|
118
|
+
<div class="report-form-label">START DATE:</div>
|
119
|
+
<div class="report-form-input">
|
120
|
+
<input type="text" id="datepicker-start" name="start_date" value="">
|
121
|
+
</div>
|
122
|
+
</div>
|
123
|
+
|
124
|
+
<div class="report-form-row">
|
125
|
+
<div class="report-form-label">END DATE:</div>
|
126
|
+
<div class="report-form-input">
|
127
|
+
<input type="text" id="datepicker-end" name="end_date" value="">
|
128
|
+
</div>
|
129
|
+
</div>
|
130
|
+
|
131
|
+
<div class="report-form-row">
|
132
|
+
<div class="report-form-label"></div>
|
133
|
+
<input type="button" value="Run" onclick="load_report();"/>
|
134
|
+
</div>
|
135
|
+
</form>
|
136
|
+
|
137
|
+
<div id="links">
|
138
|
+
<div><%= link_to_function("Print Report", "javascript:print_report()") %></div>
|
139
|
+
<div><%= link_to_function("Export To Excel", "javascript:export_report_to_excel()") %></div>
|
140
|
+
</div>
|
141
|
+
|
142
|
+
<div id="data_grid">
|
143
|
+
<iframe id="data_grid_frame" src="" width="100%" height="530" frameborder="0" scrolling="no">
|
144
|
+
<p>Your browser does not support iframes.</p>
|
145
|
+
</iframe>
|
146
|
+
</div>
|
147
|
+
|
148
|
+
</div>
|
@@ -0,0 +1,66 @@
|
|
1
|
+
<script>
|
2
|
+
print();
|
3
|
+
</script>
|
4
|
+
|
5
|
+
<style>
|
6
|
+
body {
|
7
|
+
background-color: White;
|
8
|
+
font-family:Verdana, Geneva, sans-serif;
|
9
|
+
font-size:13px;
|
10
|
+
}
|
11
|
+
#report-name {
|
12
|
+
font-weight:bold;
|
13
|
+
}
|
14
|
+
table {
|
15
|
+
border-collapse: collapse;
|
16
|
+
}
|
17
|
+
td {
|
18
|
+
border: 1px solid #000000;
|
19
|
+
}
|
20
|
+
.data {
|
21
|
+
text-align:center;
|
22
|
+
vertical-align:top
|
23
|
+
}
|
24
|
+
th {
|
25
|
+
border: 1px solid #000000;
|
26
|
+
font-weight:normal;
|
27
|
+
}
|
28
|
+
</style>
|
29
|
+
|
30
|
+
<div class="print">
|
31
|
+
<!-- DISPLAY FOR PRINTED PAGE -->
|
32
|
+
|
33
|
+
<table border="0" style="margin-bottom:10px; border:0px;">
|
34
|
+
<tr>
|
35
|
+
<td colspan="3" style="border:0px;"><div id="report-name"><%=@desc%> Report</div></td>
|
36
|
+
</tr>
|
37
|
+
<tr>
|
38
|
+
<td style="border:0px;">Start Date: <%=@start_date%></td>
|
39
|
+
<td style="border:0px; padding-left:20px; padding-right:20px;">to</td>
|
40
|
+
<td style="border:0px;">End Date: <%=@end_date%></td>
|
41
|
+
</tr>
|
42
|
+
</table>
|
43
|
+
|
44
|
+
<table border="1" cellspacing="5" cellpadding="0" width="700">
|
45
|
+
<tr>
|
46
|
+
<% @reports[@report_name]['fields'].each do |report_field| %>
|
47
|
+
<td class="data"><%=report_field%></td>
|
48
|
+
<% end %>
|
49
|
+
</tr>
|
50
|
+
|
51
|
+
<% @report[:rows].each do |row| %>
|
52
|
+
<tr>
|
53
|
+
<% first_cell=true %>
|
54
|
+
<%row[:cell].each do |c|%>
|
55
|
+
<% cleaned_cell = Sanitize.clean(c.to_s) %>
|
56
|
+
<% if first_cell==true %>
|
57
|
+
<td><%=cleaned_cell%></td>
|
58
|
+
<% else %>
|
59
|
+
<td class="data"><%=cleaned_cell%></td>
|
60
|
+
<% end %>
|
61
|
+
<% first_cell=false %>
|
62
|
+
<%end%>
|
63
|
+
</tr>
|
64
|
+
<% end %>
|
65
|
+
</table>
|
66
|
+
</div>
|
data/config/routes.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
scope "report", :module => :old_sql, :as => "old_sql" do
|
3
|
+
scope "report", :as => "report" do
|
4
|
+
controller "report" do
|
5
|
+
match "/", :to => :index, :as => "report_list"
|
6
|
+
match "/query", :to => :query, :as => "query"
|
7
|
+
match "/datagrid", :to => :datagrid, :as => "datagrid"
|
8
|
+
match "/print", :to => :print, :as => "print"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/old_sql.rb
CHANGED
@@ -0,0 +1,85 @@
|
|
1
|
+
module ReportProcessor
|
2
|
+
class Base
|
3
|
+
|
4
|
+
ROUND_PRECISION = 2
|
5
|
+
|
6
|
+
def execute_query(report_sql,start_date,end_date,query_vars)
|
7
|
+
vars = {:start_date => start_date, :end_date => end_date}
|
8
|
+
|
9
|
+
if !query_vars.nil?
|
10
|
+
vars = vars.merge query_vars
|
11
|
+
end
|
12
|
+
|
13
|
+
template = File.read("#{Rails.root}/config/report_sql/#{report_sql}.erb")
|
14
|
+
sql = Erubis::Eruby.new(template).result(vars)
|
15
|
+
|
16
|
+
Rails.logger.debug sql
|
17
|
+
|
18
|
+
db = nil
|
19
|
+
|
20
|
+
begin
|
21
|
+
#todo change to a reporting db
|
22
|
+
db = Sequel.connect("mysql2://#{PurePlay.database.user}:#{PurePlay.database.password}@#{PurePlay.database.host}:3306/#{PurePlay.database.database}")
|
23
|
+
|
24
|
+
@resultset = []
|
25
|
+
db.fetch(sql) do |row|
|
26
|
+
@resultset << row
|
27
|
+
end
|
28
|
+
ensure
|
29
|
+
db.disconnect
|
30
|
+
end
|
31
|
+
|
32
|
+
parse(@resultset)
|
33
|
+
|
34
|
+
@data
|
35
|
+
end
|
36
|
+
|
37
|
+
def init(resultset)
|
38
|
+
@rec = resultset[0]
|
39
|
+
self.new_data
|
40
|
+
end
|
41
|
+
|
42
|
+
def parse(resultset)
|
43
|
+
init(resultset)
|
44
|
+
|
45
|
+
resultset.each do |r|
|
46
|
+
cell = []
|
47
|
+
r.each do |key, value|
|
48
|
+
cell << value
|
49
|
+
end
|
50
|
+
new_row(nil, cell)
|
51
|
+
end
|
52
|
+
|
53
|
+
@data
|
54
|
+
end
|
55
|
+
|
56
|
+
def new_data(page=1, total=1, records=1)
|
57
|
+
@id = 0
|
58
|
+
@data = {}
|
59
|
+
@data[:page]=page
|
60
|
+
@data[:total]=total
|
61
|
+
@data[:records]=records
|
62
|
+
@data[:rows] = []
|
63
|
+
end
|
64
|
+
|
65
|
+
def new_row(title = nil, cell_data = [], id = @id+1)
|
66
|
+
if !title.nil?
|
67
|
+
cell_data.unshift "<b>#{title}</b>"
|
68
|
+
end
|
69
|
+
|
70
|
+
@data[:rows] << {id: id, cell: cell_data}
|
71
|
+
end
|
72
|
+
|
73
|
+
def ifnull(o)
|
74
|
+
if !o.nil? && o != 0
|
75
|
+
return o
|
76
|
+
else
|
77
|
+
return 1
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def isNumeric(s)
|
82
|
+
Float(s) != nil rescue false
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
data/old_sql.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{old_sql}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{Eddie Gonzales}]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-06-01}
|
13
13
|
s.description = %q{OldSQL is a Rails Engine database reporting gem that uses plain old SQL}
|
14
14
|
s.email = %q{egonzales@pureplay.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,8 +24,15 @@ Gem::Specification.new do |s|
|
|
24
24
|
"Rakefile",
|
25
25
|
"TODO.mkd",
|
26
26
|
"VERSION",
|
27
|
+
"app/controllers/old_sql/report_controller.rb",
|
28
|
+
"app/views/old_sql/report/datagrid.html.erb",
|
29
|
+
"app/views/old_sql/report/index.html.erb",
|
30
|
+
"app/views/old_sql/report/print.html.erb",
|
27
31
|
"config/routes.rb",
|
32
|
+
"lib/extensions/action_controller/base.rb",
|
28
33
|
"lib/old_sql.rb",
|
34
|
+
"lib/old_sql/engine.rb",
|
35
|
+
"lib/report_processor/base.rb",
|
29
36
|
"old_sql.gemspec",
|
30
37
|
"pkg/old_sql-0.1.0.gem"
|
31
38
|
]
|
data/pkg/old_sql-0.1.0.gem
CHANGED
Binary file
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: old_sql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Eddie Gonzales
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-06-01 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: shoulda
|
@@ -73,8 +73,15 @@ files:
|
|
73
73
|
- Rakefile
|
74
74
|
- TODO.mkd
|
75
75
|
- VERSION
|
76
|
+
- app/controllers/old_sql/report_controller.rb
|
77
|
+
- app/views/old_sql/report/datagrid.html.erb
|
78
|
+
- app/views/old_sql/report/index.html.erb
|
79
|
+
- app/views/old_sql/report/print.html.erb
|
76
80
|
- config/routes.rb
|
81
|
+
- lib/extensions/action_controller/base.rb
|
77
82
|
- lib/old_sql.rb
|
83
|
+
- lib/old_sql/engine.rb
|
84
|
+
- lib/report_processor/base.rb
|
78
85
|
- old_sql.gemspec
|
79
86
|
- pkg/old_sql-0.1.0.gem
|
80
87
|
homepage: http://github.com/egonz/old_sql
|
@@ -90,7 +97,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
90
97
|
requirements:
|
91
98
|
- - ">="
|
92
99
|
- !ruby/object:Gem::Version
|
93
|
-
hash:
|
100
|
+
hash: 1302646033916433491
|
94
101
|
segments:
|
95
102
|
- 0
|
96
103
|
version: "0"
|