old_sql 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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"
|