rails_db_admin 3.0.0 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/{public → app/assets}/images/icons/rails_db_admin/rails_db_admin_16x16.png +0 -0
  3. data/{public → app/assets}/images/icons/rails_db_admin/rails_db_admin_24x24.png +0 -0
  4. data/{public → app/assets}/images/icons/rails_db_admin/rails_db_admin_32x32.png +0 -0
  5. data/{public → app/assets}/images/icons/rails_db_admin/rails_db_admin_64x64.png +0 -0
  6. data/{public → app/assets}/images/icons/rails_db_admin/rails_db_admin_light_16x16.png +0 -0
  7. data/app/assets/images/splash/db_admin_splash.png +0 -0
  8. data/{public → app/assets}/images/splash/images/console-icon.png +0 -0
  9. data/{public → app/assets}/images/splash/images/data-model-icon.png +0 -0
  10. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/app.js +20 -0
  11. data/{public → app/assets}/javascripts/erp_app/desktop/applications/rails_db_admin/database_combo.js +1 -1
  12. data/{public → app/assets}/javascripts/erp_app/desktop/applications/rails_db_admin/module.js +227 -135
  13. data/{public → app/assets}/javascripts/erp_app/desktop/applications/rails_db_admin/queries_tree_menu.js +6 -6
  14. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/query_panel.js +383 -0
  15. data/{public → app/assets}/javascripts/erp_app/desktop/applications/rails_db_admin/readonly_table_data_grid.js +0 -0
  16. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/ParamWindow.js +426 -0
  17. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/ParamsManager.js +177 -0
  18. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/RolesPanel.js +95 -0
  19. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/SetDefaultWindow.js +244 -0
  20. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/Settings.js +155 -0
  21. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/TreePanel.js +391 -0
  22. data/app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/splash_screen.js +163 -0
  23. data/{public → app/assets}/javascripts/erp_app/desktop/applications/rails_db_admin/tables_tree_menu.js +5 -3
  24. data/app/assets/javascripts/erp_app/shared/MultiOption.js +151 -0
  25. data/app/assets/javascripts/erp_app/shared/ReportsParams.js +289 -0
  26. data/app/assets/javascripts/erp_app/shared/rails_db_admin_shared.js +13 -0
  27. data/{public/stylesheets/erp_app/desktop/applications/rails_db_admin/rails_db_admin.css → app/assets/stylesheets/erp_app/shared/rails_db_admin_shared.css} +5 -10
  28. data/app/controllers/rails_db_admin/erp_app/desktop/base_controller.rb +7 -6
  29. data/app/controllers/rails_db_admin/erp_app/desktop/queries_controller.rb +88 -74
  30. data/app/controllers/rails_db_admin/erp_app/desktop/reports_controller.rb +361 -30
  31. data/app/controllers/rails_db_admin/reports/base_controller.rb +105 -22
  32. data/app/mailers/report_mailer.rb +15 -0
  33. data/app/models/report.rb +227 -14
  34. data/app/views/rails_db_admin/reports/base/error_report.erb +27 -0
  35. data/app/views/report_mailer/email_report.html.erb +255 -0
  36. data/config/routes.rb +2 -1
  37. data/db/data_migrations/20110816005525_rails_db_admin_application.rb +6 -14
  38. data/db/data_migrations/20151015093724_add_report_role_type.rb +15 -0
  39. data/db/migrate/20121210160131_add_reports.rb +2 -0
  40. data/db/migrate/20150926061259_add_meta_data_to_reports.rb +9 -0
  41. data/lib/rails_db_admin.rb +4 -2
  42. data/lib/rails_db_admin/engine.rb +12 -4
  43. data/lib/rails_db_admin/erp_string_parser.rb +26 -0
  44. data/lib/rails_db_admin/extensions/railties/action_view/helpers/report_helper.rb +167 -10
  45. data/lib/rails_db_admin/extjs/json_data_builder.rb +36 -20
  46. data/lib/rails_db_admin/query_params.rb +14 -0
  47. data/lib/rails_db_admin/query_support.rb +56 -46
  48. data/lib/rails_db_admin/services/report_helper.rb +241 -0
  49. data/lib/rails_db_admin/version.rb +1 -1
  50. metadata +41 -30
  51. data/app/assets/javascripts/rails_db_admin/application.js +0 -9
  52. data/app/assets/stylesheets/rails_db_admin/application.css +0 -7
  53. data/app/views/rails_db_admin/reports/base/show_report.erb +0 -11
  54. data/db/migrate/20131112013053_add_rails_db_admin_missing_indexes.rb +0 -17
  55. data/lib/rails_db_admin/report_support.rb +0 -52
  56. data/public/images/splash/splash.png +0 -0
  57. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/query_panel.js +0 -223
  58. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/report_panel.js +0 -78
  59. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/reports_tree_panel.js +0 -237
  60. data/public/javascripts/erp_app/desktop/applications/rails_db_admin/splash_screen.js +0 -136
@@ -0,0 +1,241 @@
1
+ module RailsDbAdmin
2
+ module Services
3
+ class ReportHelper < AbstractController::Base
4
+ include AbstractController::Rendering
5
+ include AbstractController::Helpers
6
+ include AbstractController::Translation
7
+ include AbstractController::AssetPaths
8
+
9
+ class Cache
10
+ cattr_accessor :report_resolvers
11
+ end
12
+
13
+ # Renders report for formats
14
+ #
15
+ # @param report_iid [String] IID of Report
16
+ # @param format [Symbol] Format to render the report in (:pdf, :csv)
17
+ # @param report_params [Hash] Parameters for report
18
+ def build_report(report_iid, formats=[:pdf, :csv], report_params={})
19
+ begin
20
+ @formats = formats
21
+
22
+ database_connection_class = RailsDbAdmin::ConnectionHandler.create_connection_class(Rails.env)
23
+ @query_support = RailsDbAdmin::QuerySupport.new(database_connection_class, Rails.env)
24
+
25
+ @report = Report.find_by_internal_identifier(report_iid)
26
+ @report_params = report_params
27
+
28
+ add_report_view_paths
29
+ build_report_data
30
+
31
+ missing_params = check_required_params
32
+
33
+ if missing_params.count > 0
34
+ if missing_params.count == 1
35
+ "#{missing_params.join(', ')} is required"
36
+ else
37
+ "#{missing_params.join(', ')} are required"
38
+ end
39
+
40
+ else
41
+ file_attachments = []
42
+
43
+ if @data[:error]
44
+ @data[:error]
45
+ else
46
+ @formats.each do |format|
47
+ case format
48
+ when :html
49
+ data = render inline: @report.template,
50
+ locals: build_tpl_locals
51
+
52
+ file_attachments.push({name: "#{@report.name}.html", data: data})
53
+
54
+ when :pdf
55
+ data = render_to_string({
56
+ template: 'base.html.erb',
57
+ locals: build_tpl_locals
58
+ })
59
+
60
+ file_attachments << {
61
+ name: "#{@report.name}.pdf",
62
+ data: WickedPdf.new.pdf_from_string(data, build_pdf_config)
63
+ }
64
+
65
+ when :csv
66
+ business_module = @report_params[:business_module_id].present? ? BusinessModule.where(id: @report_params[:business_module_id]).first : nil
67
+
68
+ csv_data = CSV.generate do |csv|
69
+
70
+ custom_data_columns = []
71
+ if @data[:columns].include?('custom_fields')
72
+
73
+ custom_data = JSON.parse(@data[:rows].first['custom_fields'])
74
+
75
+ if business_module
76
+ custom_data.each do |field_name, field_value|
77
+ custom_data_columns << business_module.organizer_view.selected_fields.where('field_name = ?', field_name).first.label
78
+ end
79
+ else
80
+ custom_data_columns = custom_data.keys
81
+ end
82
+
83
+ # remove the custom_fields column if it exists
84
+ @data[:columns].delete('custom_fields')
85
+ end
86
+
87
+ csv << @data[:columns] + custom_data_columns
88
+
89
+ @data[:rows].each do |row|
90
+ custom_values = []
91
+
92
+ custom_fields = row.delete('custom_fields')
93
+
94
+ unless custom_fields.blank?
95
+ custom_data = JSON.parse(custom_fields)
96
+
97
+ if business_module
98
+ custom_data.each do |field_name, field_value|
99
+ case business_module.organizer_view.selected_fields.where('field_name = ?', field_name).first.field_type.internal_identifier
100
+ when 'address'
101
+ if field_value.blank?
102
+ custom_values << ''
103
+ else
104
+ custom_values << "#{field_value['address_line_1']} #{field_value['address_line_2']} #{field_value['city']} #{field_value['state']}, #{field_value['zip']} #{field_value['country']}"
105
+ end
106
+ else
107
+ custom_values << field_value
108
+ end
109
+
110
+ end
111
+ else
112
+ custom_values = custom_data.values
113
+ end
114
+ end
115
+
116
+ csv << row.values + custom_values
117
+ end
118
+ end
119
+
120
+ file_attachments << {
121
+ name: "#{@report.name}.csv",
122
+ data: csv_data
123
+ }
124
+ else
125
+ raise 'Invalid Format'
126
+ end
127
+ end
128
+
129
+ file_attachments
130
+ end
131
+
132
+ end
133
+
134
+ rescue StandardError => ex
135
+ Rails.logger.error ex.message
136
+ Rails.logger.error ex.backtrace.join("\n")
137
+
138
+ # email notification
139
+ ExceptionNotifier.notify_exception(ex) if defined? ExceptionNotifier
140
+
141
+ "Error running report"
142
+ end
143
+ end
144
+
145
+ protected
146
+
147
+ # Get the report data by running executing the sql
148
+ #
149
+ def build_report_data
150
+ query = RailsDbAdmin::ErbStringParser.render(
151
+ @report.query,
152
+ locals: @report_params
153
+ )
154
+ columns, values, error = @query_support.execute_sql(query)
155
+
156
+ @data = {:columns => columns, :rows => values, error: error}
157
+ end
158
+
159
+ # build configuration to render a pdf of a report
160
+ #
161
+ def build_pdf_config
162
+ {
163
+ page_size: @report.meta_data['print_page_size'] || 'A4',
164
+ orientation: @report.meta_data['print_orientation'] || 'Portrait',
165
+ margin: {
166
+ top: (@report.meta_data['print_margin_top'].blank? ? 10 : @report.meta_data['print_margin_top'].to_i),
167
+ bottom: (@report.meta_data['print_margin_bottom'].blank? ? 10 : @report.meta_data['print_margin_bottom'].to_i),
168
+ left: (@report.meta_data['print_margin_left'].blank? ? 10 : @report.meta_data['print_margin_left'].to_i),
169
+ right: (@report.meta_data['print_margin_right'].blank? ? 10 : @report.meta_data['print_margin_right'].to_i),
170
+
171
+ },
172
+ footer: {
173
+ right: 'Page [page] of [topage]'
174
+ }
175
+ }
176
+ end
177
+
178
+ def add_report_view_paths
179
+ ReportHelper::Cache.report_resolvers = [] if ReportHelper::Cache.report_resolvers.nil?
180
+
181
+ report_path = current_report_path
182
+ resolver = case Rails.application.config.erp_tech_svcs.file_storage
183
+ when :s3
184
+ path = File.join(report_path[:url], "templates")
185
+ cached_resolver = ReportHelper::Cache.report_resolvers.find { |cached_resolver| cached_resolver.to_path == path }
186
+ if cached_resolver.nil?
187
+ resolver = ActionView::S3Resolver.new(path)
188
+ ReportHelper::Cache.report_resolvers << resolver
189
+ resolver
190
+ else
191
+ cached_resolver
192
+ end
193
+ when :filesystem
194
+ path = "#{report_path[:path]}/templates"
195
+ cached_resolver = ReportHelper::Cache.report_resolvers.find { |cached_resolver| cached_resolver.to_path == path }
196
+ if cached_resolver.nil?
197
+ resolver = ActionView::CompassAeFileResolver.new(path)
198
+ ReportHelper::Cache.report_resolvers << resolver
199
+ resolver
200
+ else
201
+ cached_resolver
202
+ end
203
+ end
204
+
205
+ prepend_view_path(resolver)
206
+ end
207
+
208
+ def current_report_path
209
+ {:url => @report.url.to_s, :path => @report.base_dir.to_s}
210
+ end
211
+
212
+ def build_tpl_locals
213
+ @report_params.merge({
214
+ time_helper: ErpBaseErpSvcs::Helpers::Time::Client.new(@report_params[:client_utc_offset]),
215
+ formats: @formats,
216
+ unique_name: @report,
217
+ title: @report.name,
218
+ columns: @data[:columns],
219
+ rows: @data[:rows]
220
+ })
221
+ end
222
+
223
+ def check_required_params
224
+ missing_params = []
225
+
226
+ if @report.meta_data['params']
227
+ required_params = @report.meta_data['params'].select { |item| item['required'] === true }
228
+
229
+ required_params.each do |required_param|
230
+ if @report_params[required_param['name'].to_sym].blank? || @report_params[required_param['name'].to_sym] == 'null'
231
+ missing_params.push(required_param['display_name'])
232
+ end
233
+ end
234
+ end
235
+
236
+ missing_params
237
+ end
238
+
239
+ end # ReportHelper
240
+ end # Services
241
+ end # RailsDbAdmin
@@ -1,7 +1,7 @@
1
1
  module RailsDbAdmin
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 3
4
- MINOR = 0
4
+ MINOR = 2
5
5
  TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].compact.join('.')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_db_admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Koloski, Russell Holmes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-19 00:00:00.000000000 Z
11
+ date: 2016-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: erp_app
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '4.0'
19
+ version: '4.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '4.0'
26
+ version: '4.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: erp_dev_svcs
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '4.0'
33
+ version: '4.2'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '4.0'
40
+ version: '4.2'
41
41
  description: RailsDB Admin is similar in functionality to PHPMyAdmin and other database
42
42
  browsing and data editing tools. It uses the CompassAE database connection information
43
43
  to discover the schema for an installation, and generates Extjs UIs for creating
@@ -51,51 +51,62 @@ files:
51
51
  - GPL-3-LICENSE
52
52
  - README.md
53
53
  - Rakefile
54
- - app/assets/javascripts/rails_db_admin/application.js
55
- - app/assets/stylesheets/rails_db_admin/application.css
54
+ - app/assets/images/icons/rails_db_admin/rails_db_admin_16x16.png
55
+ - app/assets/images/icons/rails_db_admin/rails_db_admin_24x24.png
56
+ - app/assets/images/icons/rails_db_admin/rails_db_admin_32x32.png
57
+ - app/assets/images/icons/rails_db_admin/rails_db_admin_64x64.png
58
+ - app/assets/images/icons/rails_db_admin/rails_db_admin_light_16x16.png
59
+ - app/assets/images/splash/db_admin_splash.png
60
+ - app/assets/images/splash/images/console-icon.png
61
+ - app/assets/images/splash/images/data-model-icon.png
62
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/app.js
63
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/database_combo.js
64
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/module.js
65
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/queries_tree_menu.js
66
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/query_panel.js
67
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/readonly_table_data_grid.js
68
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/ParamWindow.js
69
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/ParamsManager.js
70
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/RolesPanel.js
71
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/SetDefaultWindow.js
72
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/Settings.js
73
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/reports/TreePanel.js
74
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/splash_screen.js
75
+ - app/assets/javascripts/erp_app/desktop/applications/rails_db_admin/tables_tree_menu.js
76
+ - app/assets/javascripts/erp_app/shared/MultiOption.js
77
+ - app/assets/javascripts/erp_app/shared/ReportsParams.js
78
+ - app/assets/javascripts/erp_app/shared/rails_db_admin_shared.js
79
+ - app/assets/stylesheets/erp_app/shared/rails_db_admin_shared.css
56
80
  - app/controllers/rails_db_admin/erp_app/desktop/base_controller.rb
57
81
  - app/controllers/rails_db_admin/erp_app/desktop/queries_controller.rb
58
82
  - app/controllers/rails_db_admin/erp_app/desktop/reports_controller.rb
59
83
  - app/controllers/rails_db_admin/reports/base_controller.rb
84
+ - app/mailers/report_mailer.rb
60
85
  - app/models/report.rb
86
+ - app/views/rails_db_admin/reports/base/error_report.erb
61
87
  - app/views/rails_db_admin/reports/base/no_report.erb
62
- - app/views/rails_db_admin/reports/base/show_report.erb
88
+ - app/views/report_mailer/email_report.html.erb
63
89
  - config/routes.rb
64
90
  - db/data_migrations/20110816005525_rails_db_admin_application.rb
91
+ - db/data_migrations/20151015093724_add_report_role_type.rb
65
92
  - db/migrate/20121210160131_add_reports.rb
66
- - db/migrate/20131112013053_add_rails_db_admin_missing_indexes.rb
93
+ - db/migrate/20150926061259_add_meta_data_to_reports.rb
67
94
  - lib/rails_db_admin.rb
68
95
  - lib/rails_db_admin/config.rb
69
96
  - lib/rails_db_admin/connection_handler.rb
70
97
  - lib/rails_db_admin/engine.rb
98
+ - lib/rails_db_admin/erp_string_parser.rb
71
99
  - lib/rails_db_admin/extensions/railties/action_view/base.rb
72
100
  - lib/rails_db_admin/extensions/railties/action_view/helpers/report_helper.rb
73
101
  - lib/rails_db_admin/extjs.rb
74
102
  - lib/rails_db_admin/extjs/json_column_builder.rb
75
103
  - lib/rails_db_admin/extjs/json_data_builder.rb
104
+ - lib/rails_db_admin/query_params.rb
76
105
  - lib/rails_db_admin/query_support.rb
77
- - lib/rails_db_admin/report_support.rb
106
+ - lib/rails_db_admin/services/report_helper.rb
78
107
  - lib/rails_db_admin/table_support.rb
79
108
  - lib/rails_db_admin/version.rb
80
109
  - lib/tasks/rails_db_admin_tasks.rake
81
- - public/images/icons/rails_db_admin/rails_db_admin_16x16.png
82
- - public/images/icons/rails_db_admin/rails_db_admin_24x24.png
83
- - public/images/icons/rails_db_admin/rails_db_admin_32x32.png
84
- - public/images/icons/rails_db_admin/rails_db_admin_64x64.png
85
- - public/images/icons/rails_db_admin/rails_db_admin_light_16x16.png
86
- - public/images/splash/images/console-icon.png
87
- - public/images/splash/images/data-model-icon.png
88
- - public/images/splash/splash.png
89
- - public/javascripts/erp_app/desktop/applications/rails_db_admin/database_combo.js
90
- - public/javascripts/erp_app/desktop/applications/rails_db_admin/module.js
91
- - public/javascripts/erp_app/desktop/applications/rails_db_admin/queries_tree_menu.js
92
- - public/javascripts/erp_app/desktop/applications/rails_db_admin/query_panel.js
93
- - public/javascripts/erp_app/desktop/applications/rails_db_admin/readonly_table_data_grid.js
94
- - public/javascripts/erp_app/desktop/applications/rails_db_admin/report_panel.js
95
- - public/javascripts/erp_app/desktop/applications/rails_db_admin/reports_tree_panel.js
96
- - public/javascripts/erp_app/desktop/applications/rails_db_admin/splash_screen.js
97
- - public/javascripts/erp_app/desktop/applications/rails_db_admin/tables_tree_menu.js
98
- - public/stylesheets/erp_app/desktop/applications/rails_db_admin/rails_db_admin.css
99
110
  - spec/controllers/rails_db_admin/erp_app/desktop/base_controller_spec.rb
100
111
  - spec/controllers/rails_db_admin/erp_app/desktop/queries_controller_spec.rb
101
112
  - spec/dummy/Rakefile
@@ -149,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
160
  version: '0'
150
161
  requirements: []
151
162
  rubyforge_project:
152
- rubygems_version: 2.2.2
163
+ rubygems_version: 2.4.8
153
164
  signing_key:
154
165
  specification_version: 4
155
166
  summary: RailsDB Admin is similar in functionality to PHPMyAdmin and other database
@@ -1,9 +0,0 @@
1
- // This is a manifest file that'll be compiled into including all the files listed below.
2
- // Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
3
- // be included in the compiled file accessible from http://example.com/assets/application.js
4
- // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
5
- // the compiled file.
6
- //
7
- //= require jquery
8
- //= require jquery_ujs
9
- //= require_tree .
@@ -1,7 +0,0 @@
1
- /*
2
- * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
- * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
- * the top of the compiled file, but it's generally better to create a new file per style scope.
5
- *= require_self
6
- *= require_tree .
7
- */
@@ -1,11 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title><%= @report.name %></title>
5
- </head>
6
- <body>
7
-
8
- <%= render_report(@report.internal_identifier) %>
9
-
10
- </body>
11
- </html>
@@ -1,17 +0,0 @@
1
- class AddRailsDbAdminMissingIndexes < ActiveRecord::Migration
2
- def up
3
-
4
- if indexes(:reports).select {|index| index.name == 'reports_internal_identifier_idx'}.empty?
5
- add_index :reports, :internal_identifier, :name => 'reports_internal_identifier_idx'
6
- end
7
-
8
- end
9
-
10
- def down
11
-
12
- unless indexes(:reports).select {|index| index.name == 'reports_internal_identifier_idx'}.empty?
13
- remove_index :reports, :internal_identifier
14
- end
15
-
16
- end
17
- end
@@ -1,52 +0,0 @@
1
- require 'fileutils'
2
- require 'csv'
3
-
4
- module RailsDbAdmin
5
- class ReportSupport < QuerySupport
6
-
7
- def initialize()
8
- @connection = RailsDbAdmin::ConnectionHandler.create_connection_class(Rails.env).connection
9
- end
10
-
11
- def render_report(iid, format=:html)
12
- report = Report.find_by_internal_identifier(iid.to_s)
13
-
14
- if report.nil? or report.query.nil?
15
- "Invalid Report, make sure report exists and query is valid"
16
- else
17
- data = get_report_data(iid)
18
-
19
- case format
20
- when :html
21
- ActionView::Base.new().render(:inline => report.template, :locals =>
22
- {:unique_name => iid, :title => report.name, :columns => data[:columns], :rows => data[:rows]}
23
- )
24
- when :pdf
25
- html = ActionView::Base.new().render(:inline => report.template, :locals =>
26
- {:unique_name => iid, :title => report.name, :columns => data[:columns], :rows => data[:rows]}
27
- )
28
-
29
- kit = PDFKit.new(html, :page_size => 'Letter')
30
- kit.to_pdf
31
- when :csv
32
- CSV.generate do |csv|
33
- csv << data[:columns]
34
- data[:rows].each do |row|
35
- csv << row.values
36
- end
37
- end
38
- end
39
- end
40
-
41
- end
42
-
43
- def get_report_data(iid)
44
- report = Report.find_by_internal_identifier(iid.to_s)
45
- columns, values = self.execute_sql(report.query)
46
-
47
- return {:columns => columns, :rows => values}
48
- end
49
-
50
-
51
- end #ReportSupport
52
- end #RailsDbAdmin