meta_reports 0.0.5 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +26 -68
- data/app/models/meta_reports/color.rb +16 -0
- data/{lib/generators/meta_reports/templates/views/templates → app/views/meta_reports}/_default.html.erb +1 -1
- data/{lib/generators/meta_reports/templates/views/templates → app/views/meta_reports}/_default_footer.pdf.prawn +0 -0
- data/{lib/generators/meta_reports/templates/views/templates → app/views/meta_reports}/_default_header.pdf.prawn +0 -0
- data/{lib/generators/meta_reports/templates/views/templates → app/views/meta_reports}/_default_header.xlsx.axlsx +0 -0
- data/{spec/dummy/app/views/meta_reports/reports/templates → app/views/meta_reports}/_default_table.html.erb +3 -3
- data/{lib/generators/meta_reports/templates/views/templates → app/views/meta_reports}/_default_table.pdf.prawn +0 -0
- data/app/views/meta_reports/default.html.erb +1 -0
- data/app/views/meta_reports/default.pdf.prawn +37 -0
- data/{lib/generators/meta_reports/templates/views/templates → app/views/meta_reports}/default.xlsx.axlsx +1 -1
- data/lib/generators/meta_reports/install_templates_generator.rb +1 -6
- data/lib/meta_reports.rb +7 -1
- data/{app/models → lib}/meta_reports/data.rb +9 -0
- data/{app/helpers/meta_reports/reports_helper.rb → lib/meta_reports/helper.rb} +7 -6
- data/lib/meta_reports/railtie.rb +7 -0
- data/{app/models → lib}/meta_reports/table.rb +4 -0
- data/lib/meta_reports/version.rb +1 -1
- data/lib/tasks/meta_reports_tasks.rake +2 -2
- data/spec/ci.sh +1 -1
- data/spec/dummy/Rakefile +0 -0
- data/spec/dummy/app/assets/javascripts/application.js +0 -0
- data/spec/dummy/app/assets/stylesheets/application.css +0 -0
- data/spec/dummy/app/controllers/application_controller.rb +0 -0
- data/spec/dummy/app/controllers/home_controller.rb +0 -0
- data/spec/dummy/app/controllers/reports_controller.rb +87 -0
- data/spec/dummy/app/helpers/application_helper.rb +0 -0
- data/spec/dummy/app/models/meta_reports/color.rb +16 -0
- data/{app/models/meta_reports/base.rb → spec/dummy/app/models/report.rb} +15 -26
- data/spec/dummy/app/views/home/index.html.erb +0 -0
- data/spec/dummy/app/views/layouts/application.html.erb +0 -0
- data/spec/dummy/app/views/meta_reports/{reports/templates/_default.html.erb → _default.html.erb} +2 -2
- data/spec/dummy/app/views/meta_reports/{reports/templates/_default_footer.pdf.prawn → _default_footer.pdf.prawn} +0 -0
- data/spec/dummy/app/views/meta_reports/{reports/templates/_default_header.pdf.prawn → _default_header.pdf.prawn} +0 -0
- data/spec/dummy/app/views/meta_reports/{reports/templates/_default_header.xlsx.axlsx → _default_header.xlsx.axlsx} +0 -0
- data/{lib/generators/meta_reports/templates/views/templates → spec/dummy/app/views/meta_reports}/_default_table.html.erb +3 -3
- data/spec/dummy/app/views/meta_reports/{reports/templates/_default_table.pdf.prawn → _default_table.pdf.prawn} +0 -0
- data/spec/dummy/app/views/meta_reports/default.html.erb +1 -0
- data/spec/dummy/app/views/meta_reports/default.pdf.prawn +37 -0
- data/spec/dummy/app/views/meta_reports/{reports/templates/default.xlsx.axlsx → default.xlsx.axlsx} +1 -1
- data/{lib/generators/meta_reports/templates/views → spec/dummy/app/views/reports}/_form.html.erb +1 -1
- data/{lib/generators/meta_reports/templates/views → spec/dummy/app/views/reports}/edit.html.erb +1 -1
- data/spec/dummy/app/views/{meta_reports/reports → reports}/forms/_form_moo.html.erb +0 -0
- data/{lib/generators/meta_reports/templates/views → spec/dummy/app/views/reports}/forms/form.html.erb +0 -0
- data/{lib/generators/meta_reports/templates/views → spec/dummy/app/views/reports}/index.html.erb +0 -0
- data/{lib/generators/meta_reports/templates/views → spec/dummy/app/views/reports}/new.html.erb +0 -0
- data/spec/dummy/config.ru +0 -0
- data/spec/dummy/config/application.rb +0 -0
- data/spec/dummy/config/boot.rb +0 -0
- data/spec/dummy/config/database.yml +0 -0
- data/spec/dummy/config/environment.rb +0 -0
- data/spec/dummy/config/environments/development.rb +0 -0
- data/spec/dummy/config/environments/production.rb +0 -0
- data/spec/dummy/config/environments/test.rb +0 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -0
- data/spec/dummy/config/initializers/inflections.rb +0 -0
- data/spec/dummy/config/initializers/mime_types.rb +0 -0
- data/spec/dummy/config/initializers/secret_token.rb +0 -0
- data/spec/dummy/config/initializers/session_store.rb +0 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +0 -0
- data/spec/dummy/config/locales/en.yml +0 -0
- data/spec/dummy/config/routes.rb +2 -1
- data/spec/dummy/config/routes_empty.rb +0 -0
- data/spec/dummy/config/routes_original.rb +0 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20130801071213_for_testing_only.rb +1 -2
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +5 -24939
- data/spec/dummy/log/test.log +3029 -0
- data/spec/dummy/public/404.html +0 -0
- data/spec/dummy/public/422.html +0 -0
- data/spec/dummy/public/500.html +0 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/tmp/cache/assets/C9B/140/sprockets%2F805babf865ce32228222420a522c7b36 +0 -0
- data/spec/dummy/tmp/cache/assets/CBD/2B0/sprockets%2F9e22e937dd267c81a146665f15471b8e +0 -0
- data/spec/dummy/tmp/cache/assets/CD0/810/sprockets%2Fe858c95fa595e319dac0065d49982967 +0 -0
- data/spec/dummy/tmp/cache/assets/CD0/AC0/sprockets%2F1d341d7a2fc1328567d4b23e0809b2e2 +0 -0
- data/spec/dummy/tmp/cache/assets/CD1/A80/sprockets%2F25be813f3840b407d514e03973fbac40 +0 -0
- data/spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/CDC/FB0/sprockets%2F16b037c6f739184fc67a82dc140a3b83 +0 -0
- data/spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/D3D/EB0/sprockets%2F2d47bd3108d9abbb12c0497e36d9674d +0 -0
- data/spec/dummy/tmp/cache/assets/D40/8F0/sprockets%2F290aea2004dfecfc76f42e48970f1484 +0 -0
- data/spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/D61/310/sprockets%2Fc168b1c9be3e38ac1c8403a3074b5b8c +0 -0
- data/spec/dummy/tmp/cache/assets/D74/AE0/sprockets%2F9ad0425db5cfa16a9426f7b1a7958d7d +0 -0
- data/spec/dummy/tmp/cache/assets/D98/270/sprockets%2F0b7ba158ff62bbbb378d6bea80680c63 +0 -0
- data/spec/dummy/tmp/cache/assets/DDC/340/sprockets%2F8ad88a197ff3462ea8dd3ad7b1e2b7e9 +0 -0
- data/spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy/tmp/cache/assets/DF1/CD0/sprockets%2F3b66bd14b91d4fb176ce0a30ab5fd9bf +0 -0
- data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/E5A/EF0/sprockets%2Fb0d5af721ea37c98fd4bccd8e1e5c6ab +0 -0
- data/spec/dummy/tmp/cache/assets/test/sass/cd99a83fa417594c8715ee09005855a11886141c/metareports_color_variables.scssc +0 -0
- data/spec/dummy/tmp/cache/assets/test/sass/cd99a83fa417594c8715ee09005855a11886141c/metareports_colors.scssc +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/0b7ba158ff62bbbb378d6bea80680c63 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/16b037c6f739184fc67a82dc140a3b83 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/1d341d7a2fc1328567d4b23e0809b2e2 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/25be813f3840b407d514e03973fbac40 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/290aea2004dfecfc76f42e48970f1484 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/2d47bd3108d9abbb12c0497e36d9674d +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/2e7ca7e84b7c22471bbca0e4504a2597 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/34d1d79bff5dc36e7f78550df20eec85 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/366f779b10b9268d7594b4833cac1629 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/3b66bd14b91d4fb176ce0a30ab5fd9bf +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/3f5939c6c02f0f902d77ac93858eaa55 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/76da4521ccd2724b5e04ce969514f6f7 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/7d10cf1420e7efe789dd0a850b92fe72 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/7f26f47a9eab416ae0e730d60088b9ef +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/805babf865ce32228222420a522c7b36 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/89b49044c6f7d85bbb660b73a9a4e181 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/8ad88a197ff3462ea8dd3ad7b1e2b7e9 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/9e22e937dd267c81a146665f15471b8e +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/b0d5af721ea37c98fd4bccd8e1e5c6ab +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/e858c95fa595e319dac0065d49982967 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/dummy/tmp/capybara/capybara-201310282335386823859116.html +0 -0
- data/spec/dummy/tmp/capybara/capybara-201310282336101820292402.html +0 -0
- data/spec/dummy/tmp/capybara/capybara-201310282338439674392250.html +0 -0
- data/spec/dummy/tmp/capybara/capybara-201310282350595445887206.html +0 -0
- data/spec/dummy/tmp/capybara/capybara-201310282351429822980920.html +0 -0
- data/spec/dummy/tmp/capybara/capybara-201310282354523302677005.html +0 -0
- data/spec/features/dummy_spec.rb +8 -8
- data/spec/generators/install_templates_spec.rb +14 -14
- data/spec/models/data_spec.rb +0 -0
- data/spec/models/table_spec.rb +0 -0
- data/spec/spec_helper.rb +0 -0
- data/spec/support/utilities.rb +0 -0
- data/spec/tasks/meta_reports_rake_spec.rb +0 -1
- metadata +82 -76
- data/app/assets/images/meta_reports/print.png +0 -0
- data/app/assets/images/meta_reports/spreadsheet.png +0 -0
- data/app/assets/javascripts/meta_reports/reports.js +0 -2
- data/app/controllers/meta_reports/application_controller.rb +0 -4
- data/config/routes.rb +0 -11
- data/db/migrate/20130801071213_create_meta_reports_reports.rb +0 -17
- data/lib/generators/meta_reports/install_engine_generator.rb +0 -44
- data/lib/generators/meta_reports/templates/controllers/reports_controller.rb +0 -91
- data/lib/generators/meta_reports/templates/models/report.rb +0 -35
- data/lib/generators/meta_reports/templates/models/report_non_activerecord.rb +0 -35
- data/lib/generators/meta_reports/templates/views/forms/_form_example.html.erb +0 -1
- data/lib/generators/meta_reports/templates/views/templates/default.html.erb +0 -1
- data/lib/generators/meta_reports/templates/views/templates/default.pdf.prawn +0 -28
- data/lib/meta_reports/engine.rb +0 -15
- data/spec/dummy/app/controllers/meta_reports/reports_controller.rb +0 -91
- data/spec/dummy/app/models/meta_reports/report.rb +0 -34
- data/spec/dummy/app/views/meta_reports/reports/_form.html.erb +0 -61
- data/spec/dummy/app/views/meta_reports/reports/edit.html.erb +0 -6
- data/spec/dummy/app/views/meta_reports/reports/forms/form.html.erb +0 -17
- data/spec/dummy/app/views/meta_reports/reports/index.html.erb +0 -36
- data/spec/dummy/app/views/meta_reports/reports/new.html.erb +0 -5
- data/spec/dummy/app/views/meta_reports/reports/templates/default.html.erb +0 -1
- data/spec/dummy/app/views/meta_reports/reports/templates/default.pdf.prawn +0 -26
- data/spec/generators/install_engine_spec.rb +0 -61
Binary file
|
Binary file
|
data/config/routes.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
MetaReports::Engine.routes.draw do
|
2
|
-
root to: "reports#index"
|
3
|
-
|
4
|
-
get 'reports/file/:dir' => 'reports#file', as: 'file'
|
5
|
-
get 'new' => 'reports#new', as: 'short_new'
|
6
|
-
post 'reports' => 'reports#create', as: 'normal_create'
|
7
|
-
match ':id(.:format)' => 'reports#show', as: 'short_show', via: [:get, :post]
|
8
|
-
get ':id/edit' => 'reports#edit', as: 'short_edit'
|
9
|
-
get ':id/form' => 'reports#form', as: 'short_form'
|
10
|
-
resources :reports
|
11
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
class CreateMetaReportsReports < ActiveRecord::Migration
|
2
|
-
def change
|
3
|
-
create_table :meta_reports_reports do |t|
|
4
|
-
t.string :name
|
5
|
-
t.text :description
|
6
|
-
t.string :title
|
7
|
-
t.string :group
|
8
|
-
t.boolean :direct
|
9
|
-
t.integer :views
|
10
|
-
t.string :target
|
11
|
-
t.integer :formats_mask
|
12
|
-
|
13
|
-
t.timestamps
|
14
|
-
end
|
15
|
-
add_index :meta_reports_reports, :name
|
16
|
-
end
|
17
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'rails/generators'
|
2
|
-
|
3
|
-
module MetaReports
|
4
|
-
module Generators
|
5
|
-
class InstallEngineGenerator < Rails::Generators::Base
|
6
|
-
source_root File.expand_path('../templates', __FILE__)
|
7
|
-
|
8
|
-
desc 'Copy meta_reports migration, models, controllers, and views.'
|
9
|
-
|
10
|
-
def create_migration_file
|
11
|
-
Dir.chdir(Rails.root) do
|
12
|
-
`rake meta_reports:install:migrations`
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def install_controller
|
17
|
-
copy_file "controllers/reports_controller.rb", "app/controllers/meta_reports/reports_controller.rb"
|
18
|
-
end
|
19
|
-
|
20
|
-
def install_model
|
21
|
-
copy_file "models/report.rb", "app/models/meta_reports/report.rb"
|
22
|
-
end
|
23
|
-
|
24
|
-
def install_views
|
25
|
-
directory "views", "app/views/meta_reports/reports"
|
26
|
-
end
|
27
|
-
|
28
|
-
def mount_engine
|
29
|
-
routes_file = "#{Rails.root}/config/routes.rb"
|
30
|
-
unless open(routes_file).grep(/MetaReports::Engine/)
|
31
|
-
insert_into_file(routes_file, :after => /routes.draw.do\n/) do
|
32
|
-
%Q{
|
33
|
-
# This line mounts MetaReports's routes at /reports by default.
|
34
|
-
# This means, any requests to the /reports URL of your application will go to MetaReports::ReportsController#index.
|
35
|
-
# If you would like to change where this extension is mounted, simply change '/reports' to something different.
|
36
|
-
mount MetaReports::Engine => '/reports'
|
37
|
-
|
38
|
-
}
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,91 +0,0 @@
|
|
1
|
-
require_dependency "meta_reports/application_controller"
|
2
|
-
|
3
|
-
module MetaReports
|
4
|
-
class ReportsController < ApplicationController
|
5
|
-
# remember to add authentication/authorization. E.g:
|
6
|
-
# before_filter :require_user
|
7
|
-
# load_and_authorize_resource
|
8
|
-
|
9
|
-
def index
|
10
|
-
@reports = Report.order("meta_reports_reports.title") || []
|
11
|
-
end
|
12
|
-
|
13
|
-
def show
|
14
|
-
if params[:id].to_s =~ /^\d+$/
|
15
|
-
_report = Report.find(params[:id])
|
16
|
-
elsif Report.respond_to?(params[:id])
|
17
|
-
_report = Report.find_by_name(params[:id])
|
18
|
-
else
|
19
|
-
redirect_to root_url, notice: 'That report does not exist'
|
20
|
-
return
|
21
|
-
end
|
22
|
-
@report = _report.run(params)
|
23
|
-
template = {template: "meta_reports/reports/templates/" + (@report[:template] || "default") }
|
24
|
-
|
25
|
-
respond_to do |format|
|
26
|
-
format.html { render template }
|
27
|
-
format.pdf { render template }
|
28
|
-
format.xlsx { render template }
|
29
|
-
end
|
30
|
-
_report.view
|
31
|
-
end
|
32
|
-
|
33
|
-
def new
|
34
|
-
@report = Report.new
|
35
|
-
end
|
36
|
-
|
37
|
-
def edit
|
38
|
-
@report = Report.find params[:id]
|
39
|
-
end
|
40
|
-
|
41
|
-
def create
|
42
|
-
@report = Report.new(params[:report])
|
43
|
-
if @report.save
|
44
|
-
flash[:notice] = 'Report was successfully created.'
|
45
|
-
redirect_to(edit_report_path(@report))
|
46
|
-
else
|
47
|
-
render action: "new"
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def update
|
52
|
-
@report = Report.find params[:id]
|
53
|
-
if @report.update_attributes(params[:meta_report])
|
54
|
-
flash[:notice] = 'Report was successfully updated.'
|
55
|
-
redirect_to(edit_report_path(@report))
|
56
|
-
else
|
57
|
-
format.html { render action: "edit" }
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def destroy
|
62
|
-
@report = Report.find params[:id]
|
63
|
-
@report.destroy
|
64
|
-
flash[:notice] = 'Report was successfully deleted.'
|
65
|
-
|
66
|
-
redirect_to root_url
|
67
|
-
end
|
68
|
-
|
69
|
-
def file
|
70
|
-
dir = params[:dir].to_sym
|
71
|
-
path = Report::FILE_DIRS[dir] + params[:file].gsub(/\/../,'')
|
72
|
-
if File.exists?(path)
|
73
|
-
send_file path, type: "application/pdf", x_sendfile: true, disposition: 'inline'
|
74
|
-
else
|
75
|
-
puts "file doesn't exist: #{path}"
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def form
|
80
|
-
if params[:id].to_s =~ /^\d+$/
|
81
|
-
@report = Report.find(params[:id])
|
82
|
-
elsif Report.respond_to?(params[:id])
|
83
|
-
@report = Report.find_by_name(params[:id])
|
84
|
-
else
|
85
|
-
redirect_to reports_url, notice: 'That report does not exist'
|
86
|
-
return
|
87
|
-
end
|
88
|
-
render "meta_reports/reports/forms/form"
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
class MetaReports::Report < MetaReports::Base
|
2
|
-
|
3
|
-
#
|
4
|
-
# Shared colors. The key is the class name, value is RGB in hex format
|
5
|
-
#
|
6
|
-
# Example: "highlight: 'ffcccc'" is 'tr.highlight {background: #ffcccc}' in CSS, and "$highlight: #ffcccc;"" as a SASS variable.
|
7
|
-
#
|
8
|
-
|
9
|
-
COLORS = {
|
10
|
-
even: 'efefef',
|
11
|
-
odd: 'ffffff',
|
12
|
-
yellow: ['ffffaa', 'ffffcc', 'f9f9a4', 'f9f9c6'],
|
13
|
-
highlight: '$yellow_1 !important',
|
14
|
-
}
|
15
|
-
|
16
|
-
|
17
|
-
#
|
18
|
-
# Reports
|
19
|
-
#
|
20
|
-
|
21
|
-
def self.example_report(params)
|
22
|
-
{title: 'Example Report', subtitle: 'this is a test report', tables: {'Table 1' => [['One','Two','Three'],[1,2,3]]}}
|
23
|
-
MetaReports::Data.new do |d|
|
24
|
-
d.title = 'Example Report'
|
25
|
-
d.subtitle = 'Of the Testing Kind'
|
26
|
-
d.description = 'This is a test report.'
|
27
|
-
d.tables["Table 1"] = MetaReports::Table.new do |t|
|
28
|
-
t << ['One', 'Two', 'Three']
|
29
|
-
t << [1, 2, 3]
|
30
|
-
t << [4, "#{params[:disco]} Moo", 'No Way!']
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
class MetaReports::Report
|
2
|
-
|
3
|
-
#
|
4
|
-
# Shared colors. The key is the class name, value is RGB in hex format
|
5
|
-
#
|
6
|
-
# Example: "highlight: 'ffcccc'" is 'tr.highlight {background: #ffcccc}' in CSS, and "$highlight: #ffcccc;"" as a SASS variable.
|
7
|
-
#
|
8
|
-
|
9
|
-
COLORS = {
|
10
|
-
even: 'efefef',
|
11
|
-
odd: 'ffffff',
|
12
|
-
yellow: ['ffffaa', 'ffffcc', 'f9f9a4', 'f9f9c6'],
|
13
|
-
highlight: '$yellow_1 !important',
|
14
|
-
}
|
15
|
-
|
16
|
-
|
17
|
-
#
|
18
|
-
# Reports
|
19
|
-
#
|
20
|
-
|
21
|
-
def self.example_report(params)
|
22
|
-
{title: 'Example Report', subtitle: 'this is a test report', tables: {'Table 1' => [['One','Two','Three'],[1,2,3]]}}
|
23
|
-
MetaReports::Data.new do |d|
|
24
|
-
d.title = 'Example Report'
|
25
|
-
d.subtitle = 'Of the Testing Kind'
|
26
|
-
d.description = 'This is a test report.'
|
27
|
-
d.tables["Table 1"] = MetaReports::Table.new do |t|
|
28
|
-
t << ['One', 'Two', 'Three']
|
29
|
-
t << [1, 2, 3]
|
30
|
-
t << [4, "#{params[:disco]} Moo", 'No Way!']
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= select_tag :type, options_for_select(['One','Two']), include_blank: true %>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render 'meta_reports/reports/templates/default', report: (defined?(report).nil? ? @report : report) %>
|
@@ -1,28 +0,0 @@
|
|
1
|
-
margin = @report[:page_margin] && [*@report[:page_margin]][0,4] || nil
|
2
|
-
prawn_document(page_layout: @report[:page_orientation] || :portrait, page_size: @report[:page_size] || 'LETTER', margin: margin) do |pdf|
|
3
|
-
|
4
|
-
render :partial => "meta_reports/reports/templates/default_header", :locals => { :pdf => pdf, :title => @report[:title], :subtitle => @report[:subtitle] }
|
5
|
-
pdf.font_size = @report[:font_size] || 8
|
6
|
-
if @report[:description]
|
7
|
-
pdf.move_up 5
|
8
|
-
pdf.text strip_tags(@report[:description]), align: :center
|
9
|
-
pdf.move_down 15
|
10
|
-
end
|
11
|
-
|
12
|
-
table_names = @report[:table_order] || @report[:tables].keys.sort_by {|k| k.to_s}
|
13
|
-
table_names.each do |table_name|
|
14
|
-
table = @report[:tables][table_name]
|
15
|
-
pdf.pad_bottom(25) do
|
16
|
-
if table[:group]
|
17
|
-
pdf.group do #if the table is larger than a page this will throw an error
|
18
|
-
render :partial => 'meta_reports/reports/templates/default_table', :locals => {:pdf => pdf, :title => table_name, :table => table}
|
19
|
-
end
|
20
|
-
else
|
21
|
-
render :partial => 'meta_reports/reports/templates/default_table', :locals => {:pdf => pdf, :title => table_name, :table => table}
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
render partial: "meta_reports/reports/templates/default_footer", locals: { pdf: pdf }
|
27
|
-
|
28
|
-
end #prawn document
|
data/lib/meta_reports/engine.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
module MetaReports
|
2
|
-
class Engine < ::Rails::Engine
|
3
|
-
engine_name "meta_reports"
|
4
|
-
isolate_namespace MetaReports
|
5
|
-
|
6
|
-
require 'axlsx_rails'
|
7
|
-
require 'prawn_rails'
|
8
|
-
|
9
|
-
# config.to_prepare do
|
10
|
-
# Dir.glob(Rails.root + "app/decorators/**/*_decorator*.rb").each do |c|
|
11
|
-
# require_dependency(c)
|
12
|
-
# end
|
13
|
-
# end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,91 +0,0 @@
|
|
1
|
-
require_dependency "meta_reports/application_controller"
|
2
|
-
|
3
|
-
module MetaReports
|
4
|
-
class ReportsController < ApplicationController
|
5
|
-
# remember to add authentication/authorization. E.g:
|
6
|
-
# before_filter :require_user
|
7
|
-
# load_and_authorize_resource
|
8
|
-
|
9
|
-
def index
|
10
|
-
@reports = Report.order("meta_reports_reports.title") || []
|
11
|
-
end
|
12
|
-
|
13
|
-
def show
|
14
|
-
if params[:id].to_s =~ /^\d+$/
|
15
|
-
_report = Report.find(params[:id])
|
16
|
-
elsif Report.respond_to?(params[:id])
|
17
|
-
_report = Report.find_by_name(params[:id])
|
18
|
-
else
|
19
|
-
redirect_to root_url, notice: 'That report does not exist'
|
20
|
-
return
|
21
|
-
end
|
22
|
-
@report = _report.run(params)
|
23
|
-
template = {template: "meta_reports/reports/templates/" + (@report[:template] || "default") }
|
24
|
-
|
25
|
-
respond_to do |format|
|
26
|
-
format.html { render template }
|
27
|
-
format.pdf { render template }
|
28
|
-
format.xlsx { render template }
|
29
|
-
end
|
30
|
-
_report.view
|
31
|
-
end
|
32
|
-
|
33
|
-
def new
|
34
|
-
@report = Report.new
|
35
|
-
end
|
36
|
-
|
37
|
-
def edit
|
38
|
-
@report = Report.find params[:id]
|
39
|
-
end
|
40
|
-
|
41
|
-
def create
|
42
|
-
@report = Report.new(params[:report])
|
43
|
-
if @report.save
|
44
|
-
flash[:notice] = 'Report was successfully created.'
|
45
|
-
redirect_to(edit_report_path(@report))
|
46
|
-
else
|
47
|
-
render action: "new"
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def update
|
52
|
-
@report = Report.find params[:id]
|
53
|
-
if @report.update_attributes(params[:meta_report])
|
54
|
-
flash[:notice] = 'Report was successfully updated.'
|
55
|
-
redirect_to(edit_report_path(@report))
|
56
|
-
else
|
57
|
-
format.html { render action: "edit" }
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def destroy
|
62
|
-
@report = Report.find params[:id]
|
63
|
-
@report.destroy
|
64
|
-
flash[:notice] = 'Report was successfully deleted.'
|
65
|
-
|
66
|
-
redirect_to root_url
|
67
|
-
end
|
68
|
-
|
69
|
-
def file
|
70
|
-
dir = params[:dir].to_sym
|
71
|
-
path = Report::FILE_DIRS[dir] + params[:file].gsub(/\/../,'')
|
72
|
-
if File.exists?(path)
|
73
|
-
send_file path, type: "application/pdf", x_sendfile: true, disposition: 'inline'
|
74
|
-
else
|
75
|
-
puts "file doesn't exist: #{path}"
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def form
|
80
|
-
if params[:id].to_s =~ /^\d+$/
|
81
|
-
@report = Report.find(params[:id])
|
82
|
-
elsif Report.respond_to?(params[:id])
|
83
|
-
@report = Report.find_by_name(params[:id])
|
84
|
-
else
|
85
|
-
redirect_to reports_url, notice: 'That report does not exist'
|
86
|
-
return
|
87
|
-
end
|
88
|
-
render "meta_reports/reports/forms/form"
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
class MetaReports::Report < MetaReports::Base
|
2
|
-
|
3
|
-
#
|
4
|
-
# Shared colors. The key is the class name, value is RGB in hex format
|
5
|
-
#
|
6
|
-
# Example: "highlight: 'ffcccc'" is 'tr.highlight {background: #ffcccc}' in CSS, and "$highlight: #ffcccc;"" as a SASS variable.
|
7
|
-
#
|
8
|
-
|
9
|
-
COLORS = {
|
10
|
-
even: 'efefef',
|
11
|
-
odd: 'ffffff',
|
12
|
-
yellow: ['ffffaa', 'ffffcc', 'f9f9a4', 'f9f9c6'],
|
13
|
-
highlight: '$yellow_1 !important',
|
14
|
-
}
|
15
|
-
|
16
|
-
|
17
|
-
#
|
18
|
-
# Reports
|
19
|
-
#
|
20
|
-
|
21
|
-
def self.moo(params)
|
22
|
-
MetaReports::Data.new do |d|
|
23
|
-
d.title = 'Le Moo'
|
24
|
-
d.subtitle = 'Ahem'
|
25
|
-
d.tables["The Big Moo"] = MetaReports::Table.new do |t|
|
26
|
-
t << ['Number', 'Title', 'Hey']
|
27
|
-
t << [1, 'Ode to Moo', 'Ow']
|
28
|
-
t << [2, 'Odious Moo', 'Eww']
|
29
|
-
t << [3, "#{params[:moo_type]} Moo", 'No Way!']
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
<%= form_for(@report) do |f| %>
|
2
|
-
<% if @report.errors.any? %>
|
3
|
-
<div id="error_explanation">
|
4
|
-
<h2><%= pluralize(@report.errors.count, "error") %> prohibited this report from being saved:</h2>
|
5
|
-
|
6
|
-
<ul>
|
7
|
-
<% @report.errors.full_messages.each do |msg| %>
|
8
|
-
<li><%= msg %></li>
|
9
|
-
<% end %>
|
10
|
-
</ul>
|
11
|
-
</div>
|
12
|
-
<% end %>
|
13
|
-
|
14
|
-
<div class="field">
|
15
|
-
<%= f.label :name %><br />
|
16
|
-
<%= f.text_field :name %>
|
17
|
-
</div>
|
18
|
-
<div class="field">
|
19
|
-
<%= f.label :description %><br />
|
20
|
-
<%= f.text_area :description %>
|
21
|
-
</div>
|
22
|
-
<div class="field">
|
23
|
-
<%= f.label :title %><br />
|
24
|
-
<%= f.text_field :title %>
|
25
|
-
</div>
|
26
|
-
<div class="field">
|
27
|
-
<%= f.label :group %><br />
|
28
|
-
<%= f.text_field :group %>
|
29
|
-
</div>
|
30
|
-
<div class="field">
|
31
|
-
<%= f.label :direct %><br />
|
32
|
-
<%= f.check_box :direct %>
|
33
|
-
</div>
|
34
|
-
<div class="field">
|
35
|
-
<%= f.label :views %><br />
|
36
|
-
<%= f.number_field :views, disabled: true %>
|
37
|
-
</div>
|
38
|
-
<div class="field">
|
39
|
-
<%= f.label :target %><br />
|
40
|
-
<%= f.text_field :target %>
|
41
|
-
</div>
|
42
|
-
<div class="field">
|
43
|
-
<% formats = @report.formats %>
|
44
|
-
<% if current_user.has_any_role?(:admin, :manager) %>
|
45
|
-
<% for format in MetaReports::Base::FORMATS.sort %>
|
46
|
-
<%= check_box_tag "report[formats][]", format, formats.include?(format) %>
|
47
|
-
<span class='bold'><%= format.humanize %></span>
|
48
|
-
<br />
|
49
|
-
<% end %>
|
50
|
-
<% else %>
|
51
|
-
<% for format in formats %>
|
52
|
-
* <span class='bold'><%= role.humanize %></span>
|
53
|
-
<br />
|
54
|
-
<% end %>
|
55
|
-
<% end %>
|
56
|
-
<%= hidden_field_tag "report[formats][]", "" %>
|
57
|
-
</div>
|
58
|
-
<div class="actions">
|
59
|
-
<%= f.submit %>
|
60
|
-
</div>
|
61
|
-
<% end %>
|