treport 0.1.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.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/app/controllers/connects_controller.rb +56 -0
  3. data/app/controllers/dictionaries_controller.rb +56 -0
  4. data/app/controllers/reports_controller.rb +62 -0
  5. data/app/controllers/requirements_controller.rb +60 -0
  6. data/app/controllers/series_controller.rb +60 -0
  7. data/app/models/.keep +0 -0
  8. data/app/models/connect.rb +26 -0
  9. data/app/models/dictionary.rb +4 -0
  10. data/app/models/report.rb +34 -0
  11. data/app/models/requirement.rb +42 -0
  12. data/app/models/series.rb +4 -0
  13. data/app/views/connects/_form.html.erb +68 -0
  14. data/app/views/connects/edit.html.erb +1 -0
  15. data/app/views/connects/index.html.erb +48 -0
  16. data/app/views/connects/new.html.erb +1 -0
  17. data/app/views/dictionaries/_form.html.erb +49 -0
  18. data/app/views/dictionaries/edit.html.erb +1 -0
  19. data/app/views/dictionaries/index.html.erb +42 -0
  20. data/app/views/dictionaries/new.html.erb +1 -0
  21. data/app/views/layouts/report.html.erb +54 -0
  22. data/app/views/reports/_form.html.erb +65 -0
  23. data/app/views/reports/edit.html.erb +1 -0
  24. data/app/views/reports/index.html.erb +49 -0
  25. data/app/views/reports/new.html.erb +1 -0
  26. data/app/views/requirements/_form.html.erb +72 -0
  27. data/app/views/requirements/edit.html.erb +1 -0
  28. data/app/views/requirements/index.html.erb +51 -0
  29. data/app/views/requirements/new.html.erb +1 -0
  30. data/app/views/series/_form.html.erb +47 -0
  31. data/app/views/series/edit.html.erb +1 -0
  32. data/app/views/series/index.html.erb +40 -0
  33. data/app/views/series/new.html.erb +1 -0
  34. data/app/views/templates/public_one.html.erb +75 -0
  35. data/app/views/templates/public_two.html.erb +76 -0
  36. data/app/views/templates/text.html.erb +9 -0
  37. data/db/migrate/20160607002137_create_connects.rb +15 -0
  38. data/db/migrate/20160608123333_create_reports.rb +15 -0
  39. data/db/migrate/20160608124539_create_requirements.rb +16 -0
  40. data/db/migrate/20160608124549_create_dictionaries.rb +12 -0
  41. data/db/migrate/20160608124602_create_series.rb +11 -0
  42. data/lib/generators/report/install_generator.rb +26 -0
  43. data/lib/treport/db.rb +49 -0
  44. data/lib/treport.rb +9 -0
  45. data/public/report/css/AdminLTE.css +4906 -0
  46. data/public/report/css/AdminLTE.min.css +7 -0
  47. data/public/report/css/bootstrap.min.css +6 -0
  48. data/public/report/css/skins/_all-skins.css +1799 -0
  49. data/public/report/css/skins/_all-skins.min.css +1 -0
  50. data/public/report/js/app.js +44 -0
  51. data/public/report/js/echarts.min.js +35 -0
  52. data/treport.gemspec +12 -0
  53. metadata +94 -0
@@ -0,0 +1,54 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <title>Report</title>
7
+ <%= stylesheet_link_tag "application" %>
8
+ <%= javascript_include_tag "application" %>
9
+ <%= csrf_meta_tags %>
10
+ <link rel="stylesheet" href="/report/css/bootstrap.min.css">
11
+ <link rel="stylesheet" href="/report/css/AdminLTE.min.css">
12
+ <link rel="stylesheet" href="/report/css/skins/_all-skins.min.css">
13
+ </head>
14
+ <body class="hold-transition skin-blue sidebar-mini">
15
+ <div class="wrapper">
16
+ <header class="main-header">
17
+ <!-- Logo -->
18
+ <a href="/" class="logo">
19
+ <span class="logo-lg"><b>Report</b></span>
20
+ </a>
21
+ </header>
22
+ <!-- Left side column. contains the logo and sidebar -->
23
+ <aside class="main-sidebar">
24
+ <!-- sidebar: style can be found in sidebar.less -->
25
+ <section class="sidebar">
26
+ <!-- sidebar menu: : style can be found in sidebar.less -->
27
+ <ul class="sidebar-menu">
28
+ <li class="header">MAIN NAVIGATION</li>
29
+ <li class="treeview">
30
+ <a href="/connects">
31
+ <span>Connect</span>
32
+ </a>
33
+ </li>
34
+ <li class="treeview">
35
+ <a href="/reports">
36
+ <span>Report</span>
37
+ </a>
38
+ </li>
39
+ </ul>
40
+ </section>
41
+ <!-- /.sidebar -->
42
+ </aside>
43
+ <!-- Content Wrapper. Contains page content -->
44
+ <div class="content-wrapper">
45
+ <%= yield %>
46
+ <!-- /.content -->
47
+ </div>
48
+ </div>
49
+ <!-- ./wrapper -->
50
+ <!-- ./wrapper -->
51
+ <script src='/report/js/app.js'></script>
52
+ </body>
53
+ </html>
54
+
@@ -0,0 +1,65 @@
1
+ <% if @report.errors.any? %>
2
+ <% errors = "" %>
3
+ <% @report.errors.messages.values.each_with_index { |message, index| errors = errors +
4
+ "#{index+1}.#{message.join(";")}; " } %>
5
+ <h5 style="color: red;"><%= errors %></h5>
6
+ <% end %>
7
+ <section class="content-header">
8
+ <h1>
9
+ 报表管理
10
+ </h1>
11
+ </section>
12
+ <!-- Main content -->
13
+ <section class="content">
14
+ <div class="row">
15
+ <!-- right column -->
16
+ <div class="col-md-6">
17
+ <!-- general form elements disabled -->
18
+ <div class="box box-primary">
19
+ <div class="box-header with-border">
20
+ <h3 class="box-title">报表管理</h3>
21
+ </div>
22
+ <!-- /.box-header -->
23
+ <div class="box-body">
24
+ <%= form_for(@report) do |f| %>
25
+ <div class="form-group">
26
+ <label>报表名称</label>
27
+ <%= f.text_field :name, class: "form-control", placeholder: "name" %>
28
+ </div>
29
+ <div class="form-group">
30
+ <label>数据库链接名称</label>
31
+ <%= f.select :connect_id, options_for_select(Connect.connect_options, @report.connect_id), {}, class: "form-control" %>
32
+ </div>
33
+ <div class="form-group">
34
+ <label> Sql内容 </label>
35
+ <%= f.text_area :sql_code, class: "form-control", placeholder: "sql_code" %>
36
+ </div>
37
+ <div class="form-group">
38
+ <%= f.check_box :is_sql_category %><label> 是否是sql获取 </label>
39
+ </div>
40
+ <div class="form-group">
41
+ <label> 分类名 </label>
42
+ <%= f.text_field :category_name, class: "form-control", placeholder: "category_name" %>
43
+ </div>
44
+ <div class="form-group">
45
+ <label> 模板地址 </label>
46
+ <%= f.text_field :template, class: "form-control", placeholder: "category_name" %>
47
+ </div>
48
+ <div class="form-group">
49
+ <label> 事件url </label>
50
+ <%= f.text_field :url, class: "form-control", placeholder: "url" %>
51
+ </div>
52
+ <div class="box-footer">
53
+ <button type="submit" class="btn btn-primary">提交</button>
54
+ </div>
55
+ <% end %>
56
+ </div>
57
+ <!-- /.box-body -->
58
+ </div>
59
+ <!-- /.box -->
60
+ </div>
61
+ <!--/.col (right) -->
62
+ </div>
63
+ <!-- /.row -->
64
+ </section>
65
+ <!-- /.content -->
@@ -0,0 +1 @@
1
+ <%= render 'form' %>
@@ -0,0 +1,49 @@
1
+ <section class="content-header">
2
+ <h1>
3
+ 报表管理
4
+ </h1>
5
+ </section>
6
+ <!-- Main content -->
7
+ <section class="content">
8
+ <div class="row">
9
+ <div class="col-xs-12">
10
+ <div class="box">
11
+ <div class="box-header">
12
+ <h3 class="box-title">报表管理</h3>
13
+ </div>
14
+ <!-- /.box-header -->
15
+ <div class="box-body table-responsive no-padding">
16
+ <%= link_to '添加报表', new_report_path, class: "btn" %>
17
+ <table class="table table-hover">
18
+ <tr>
19
+ <th>报表名称</th>
20
+ <th>数据库链接名称</th>
21
+ <th>Sql内容</th>
22
+ <th>是否是sql获取</th>
23
+ <th>模板</th>
24
+ <th>分类名</th>
25
+ <th colspan="5"></th>
26
+ </tr>
27
+ <% @reports.each do |report| %>
28
+ <tr>
29
+ <td><%= report.name %></td>
30
+ <td><%= report.connect.name %></td>
31
+ <td><%= report.sql_code %></td>
32
+ <td><%= report.is_sql_category %></td>
33
+ <td><%= report.template %></td>
34
+ <td><%= report.category_name %></td>
35
+ <td><%= link_to '修改', edit_report_path(report) %></td>
36
+ <td><%= link_to '条件', report_requirements_path(report) %></td>
37
+ <td><%= link_to '系列', report_series_index_path(report) %></td>
38
+ <td><%= link_to '分类字典', dictionaries_path(resource_type: "Report", resource_id: report.id) %></td>
39
+ <td><%= link_to '删除', report, method: :delete, data: {confirm: '你确定要删除么?'} %></td>
40
+ </tr>
41
+ <% end %>
42
+ </table>
43
+ </div>
44
+ <!-- /.box-body -->
45
+ </div>
46
+ <!-- /.box -->
47
+ </div>
48
+ </div>
49
+ </section>
@@ -0,0 +1 @@
1
+ <%= render 'form' %>
@@ -0,0 +1,72 @@
1
+ <% if @requirement.errors.any? %>
2
+ <% errors = "" %>
3
+ <% @requirement.errors.messages.values.each_with_index { |message, index| errors = errors +
4
+ "#{index+1}.#{message.join(";")}; " } %>
5
+ <h5 style="color: red;"><%= errors %></h5>
6
+ <% end %>
7
+ <% if @report.errors.any? %>
8
+ <% errors = "" %>
9
+ <% @report.errors.messages.values.each_with_index { |message, index| errors = errors +
10
+ "#{index+1}.#{message.join(";")}; " } %>
11
+ <h5 style="color: red;"><%= errors %></h5>
12
+ <% end %>
13
+ <section class="content-header">
14
+ <h1>
15
+ 报表管理
16
+ </h1>
17
+ </section>
18
+ <!-- Main content -->
19
+ <section class="content">
20
+ <div class="row">
21
+ <!-- right column -->
22
+ <div class="col-md-6">
23
+ <!-- general form elements disabled -->
24
+ <div class="box box-primary">
25
+ <div class="box-header with-border">
26
+ <h3 class="box-title">报表管理</h3>
27
+ </div>
28
+ <!-- /.box-header -->
29
+ <div class="box-body">
30
+ <%= form_for(@requirement, url: (@requirement.id ? report_requirement_path(@report, @requirement) : report_requirements_path(@report))) do |f| %>
31
+ <div class="form-group">
32
+ <label>条件名</label>
33
+ <%= f.text_field :name, class: "form-control", placeholder: "name" %>
34
+ </div>
35
+ <div class="form-group">
36
+ <label>条件列名</label>
37
+ <%= f.text_field :sql_key, class: "form-control", placeholder: "sql_key" %>
38
+ </div>
39
+ <div class="form-group">
40
+ <label> 被替换的sql </label>
41
+ <%= f.text_field :sql_default, class: "form-control", placeholder: "sql_default" %>
42
+ </div>
43
+ <div class="form-group">
44
+ <label> 替换成的sql </label>
45
+ <%= f.text_field :sql_replace, class: "form-control", placeholder: "sql_replace" %>
46
+ </div>
47
+ <div class="form-group">
48
+ <label> 表单类型 </label>
49
+ <%= f.select :form_type, options_for_select(Requirement.form_type_options, @requirement.form_type), {}, class: "form-control" %>
50
+ </div>
51
+ <div class="form-group">
52
+ <label> 下拉数据源类型 </label>
53
+ <%= f.select :sql_type, options_for_select(Requirement.sql_type_options, @requirement.sql_type), {} , class: "form-control" %>
54
+ </div>
55
+ <div class="form-group">
56
+ <label> sql查询代码 </label>
57
+ <%= f.text_area :sql_str, class: "form-control" %>
58
+ </div>
59
+ <div class="box-footer">
60
+ <button type="submit" class="btn btn-primary">提交</button>
61
+ </div>
62
+ <% end %>
63
+ </div>
64
+ <!-- /.box-body -->
65
+ </div>
66
+ <!-- /.box -->
67
+ </div>
68
+ <!--/.col (right) -->
69
+ </div>
70
+ <!-- /.row -->
71
+ </section>
72
+ <!-- /.content -->
@@ -0,0 +1 @@
1
+ <%= render 'form' %>
@@ -0,0 +1,51 @@
1
+ <section class="content-header">
2
+ <h1>
3
+ 条件管理
4
+ </h1>
5
+ </section>
6
+ <!-- Main content -->
7
+ <section class="content">
8
+ <div class="row">
9
+ <div class="col-xs-12">
10
+ <div class="box">
11
+ <div class="box-header">
12
+ <h3 class="box-title">条件管理</h3>
13
+ </div>
14
+ <!-- /.box-header -->
15
+ <div class="box-body table-responsive no-padding">
16
+ <%= link_to '添加条件', new_report_requirement_path, class: "btn" %>
17
+ <table class="table table-hover">
18
+ <tr>
19
+ <th>ID</th>
20
+ <th>条件名称</th>
21
+ <th>条件列名</th>
22
+ <th>被替换的sql</th>
23
+ <th>sql替换成</th>
24
+ <th>表单类型</th>
25
+ <th>下拉数据源类型</th>
26
+ <th>sql查询代码</th>
27
+ <th colspan="3"></th>
28
+ </tr>
29
+ <% @requirements.each do |requirement| %>
30
+ <tr>
31
+ <td><%= requirement.id %></td>
32
+ <td><%= requirement.name %></td>
33
+ <td><%= requirement.sql_key %></td>
34
+ <td><%= requirement.sql_default %></td>
35
+ <td><%= requirement.sql_replace %></td>
36
+ <td><%= requirement.form_type_name %></td>
37
+ <td><%= requirement.sql_type_name %></td>
38
+ <td><%= requirement.sql_str %></td>
39
+ <td><%= link_to '修改', edit_report_requirement_path(@report, requirement) %></td>
40
+ <td><%= link_to '字典', dictionaries_path(resource_type: "Requirement", resource_id: requirement.id) %></td>
41
+ <td><%= link_to '删除', report_requirement_path(@report, requirement), method: :delete, data: {confirm: '你确定要删除么?'} %></td>
42
+ </tr>
43
+ <% end %>
44
+ </table>
45
+ </div>
46
+ <!-- /.box-body -->
47
+ </div>
48
+ <!-- /.box -->
49
+ </div>
50
+ </div>
51
+ </section>
@@ -0,0 +1 @@
1
+ <%= render 'form' %>
@@ -0,0 +1,47 @@
1
+ <% if @series.errors.any? %>
2
+ <% errors = "" %>
3
+ <% @series.errors.messages.values.each_with_index { |message, index| errors = errors +
4
+ "#{index+1}.#{message.join(";")}; " } %>
5
+ <h5 style="color: red;"><%= errors %></h5>
6
+ <% end %>
7
+ <!-- Content Header (Page header) -->
8
+ <section class="content-header">
9
+ <h1>
10
+ 字典管理
11
+ </h1>
12
+ </section>
13
+ <!-- Main content -->
14
+ <section class="content">
15
+ <div class="row">
16
+ <!-- right column -->
17
+ <div class="col-md-6">
18
+ <!-- general form elements disabled -->
19
+ <div class="box box-primary">
20
+ <div class="box-header with-border">
21
+ <h3 class="box-title">字典管理</h3>
22
+ </div>
23
+ <!-- /.box-header -->
24
+ <div class="box-body">
25
+ <%= form_for(@series, url: (@series.id ? report_series_path(@report, @series) : report_series_index_path(@report))) do |f| %>
26
+ <div class="form-group">
27
+ <label>系列名</label>
28
+ <%= f.text_field :name, class: "form-control", placeholder: "name" %>
29
+ </div>
30
+ <div class="form-group">
31
+ <label>sql中的对应标识</label>
32
+ <%= f.text_field :sql_key, class: "form-control", placeholder: "sql_key" %>
33
+ </div>
34
+ <div class="box-footer">
35
+ <button type="submit" class="btn btn-primary">提交</button>
36
+ </div>
37
+ <% end %>
38
+ </div>
39
+ <!-- /.box-body -->
40
+ </div>
41
+ <!-- /.box -->
42
+ </div>
43
+ <!--/.col (right) -->
44
+ </div>
45
+ <!-- /.row -->
46
+ </section>
47
+ <!-- /.content -->
@@ -0,0 +1 @@
1
+ <%= render 'form' %>
@@ -0,0 +1,40 @@
1
+ <section class="content-header">
2
+ <h1>
3
+ 系列管理
4
+ </h1>
5
+ </section>
6
+ <!-- Main content -->
7
+ <section class="content">
8
+ <div class="row">
9
+ <div class="col-xs-12">
10
+ <div class="box">
11
+ <div class="box-header">
12
+ <h3 class="box-title">系列管理</h3>
13
+ </div>
14
+ <!-- /.box-header -->
15
+ <div class="box-body table-responsive no-padding">
16
+ <%= link_to '添加系列', new_report_series_path, class: "btn" %>
17
+ <table class="table table-hover">
18
+ <tr>
19
+ <th>ID</th>
20
+ <th>系列名</th>
21
+ <th>Sql列名</th>
22
+ <th colspan="2"></th>
23
+ </tr>
24
+ <% @series.each do |series| %>
25
+ <tr>
26
+ <td><%= series.id %></td>
27
+ <td><%= series.name %></td>
28
+ <td><%= series.sql_key %></td>
29
+ <td><%= link_to '修改', edit_report_series_path(@report, series) %></td>
30
+ <td><%= link_to '删除', report_series_path(@report, series), method: :delete, data: {confirm: '你确定要删除么?'} %></td>
31
+ </tr>
32
+ <% end %>
33
+ </table>
34
+ </div>
35
+ <!-- /.box-body -->
36
+ </div>
37
+ <!-- /.box -->
38
+ </div>
39
+ </div>
40
+ </section>
@@ -0,0 +1 @@
1
+ <%= render 'form' %>
@@ -0,0 +1,75 @@
1
+ <div id="main" style="height: 400px;"></div>
2
+ <script type="application/javascript" src="/report/js/echarts.min.js"></script>
3
+ <script type="text/javascript">
4
+ var myChart = echarts.init(document.getElementById('main'));
5
+ var option = {
6
+ title : {
7
+ text: '某站点用户访问来源',
8
+ x:'center'
9
+ },
10
+ tooltip : {
11
+ trigger: 'item'
12
+ },
13
+ legend: {
14
+ orient : 'vertical',
15
+ x : 'left',
16
+ data: [],
17
+ textStyle:{
18
+ color: '#000000'
19
+ }
20
+ },
21
+ toolbox: {
22
+ show : true,
23
+ feature : {
24
+ mark : {show: true},
25
+ dataView : {show: true, readOnly: true},
26
+ magicType : {
27
+ show: true,
28
+ type: ['pie'],
29
+ option: {
30
+ funnel: {
31
+ x: '25%',
32
+ width: '50%',
33
+ funnelAlign: 'left'
34
+ }
35
+ }
36
+ },
37
+ restore : {show: true},
38
+ saveAsImage : {show: true}
39
+ }
40
+ },
41
+ calculable : true,
42
+ series : []
43
+ }
44
+
45
+ var result = <%= raw @data[:charts].to_json %>;
46
+ for(var i=0; i<result.length; i++){
47
+ var data = result[i].data;
48
+ var series = {
49
+ type: "pie",
50
+ radius: '55%',
51
+ center: ['50%', '60%'],
52
+ data: [],
53
+ itemStyle: {
54
+ emphasis: {
55
+ shadowBlur: 10,
56
+ shadowOffsetX: 0,
57
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
58
+ }
59
+ }
60
+ }
61
+ for(var j=0; j<data.length; j++){
62
+ option.legend.data.push(data[j].category_name);
63
+ series.data.push({value: data[j].value, name: data[j].category_name});
64
+ }
65
+ option.series.push(series);
66
+ }
67
+
68
+ myChart.setOption(option);
69
+
70
+ function eConsole(param) {
71
+ console.log(param);
72
+ }
73
+
74
+ myChart.on("click", eConsole);
75
+ </script>
@@ -0,0 +1,76 @@
1
+ <div id="main" style="height: 400px;"></div>
2
+ <script type="application/javascript" src="/report/js/echarts.min.js"></script>
3
+ <script type="text/javascript">
4
+ var myChart = echarts.init(document.getElementById('main'));
5
+ var option = {
6
+ tooltip : {
7
+ trigger: 'axis',
8
+ axisPointer : { // 坐标轴指示器,坐标轴触发有效
9
+ type : 'shadow' // 默认为直线,可选为:'line' | 'shadow'
10
+ }
11
+ },
12
+ toolbox: {
13
+ show : true,
14
+ feature : {
15
+ mark : {show: true},
16
+ dataView : {show: true, readOnly: false},
17
+ magicType: {show: true, type: ['line', 'bar']},
18
+ restore : {show: true},
19
+ saveAsImage : {show: true}
20
+ }
21
+ },
22
+ calculable : true,
23
+ legend: {
24
+ data: []
25
+ },
26
+ grid: {
27
+ left: '3%',
28
+ right: '4%',
29
+ bottom: '3%',
30
+ containLabel: true
31
+ },
32
+ xAxis: [
33
+ {
34
+ type : 'category',
35
+ data : []
36
+ }
37
+ ],
38
+ yAxis: [
39
+ {
40
+ type : 'value'
41
+ }
42
+ ],
43
+ series : []
44
+ }
45
+
46
+ var result = <%= raw @data[:charts].to_json %>;
47
+ for(var i=0; i<result.length; i++){
48
+ option.legend.data.push(result[i].series_name);
49
+ var data = result[i].data;
50
+ var series = {
51
+ name: result[i].series_name,
52
+ type: "bar", //"line"
53
+ label: {
54
+ normal: {
55
+ show: true,
56
+ position: 'top'
57
+ }
58
+ },
59
+ data: [],
60
+ markLine: {data: [{type: 'average', name: '平均值'}]}
61
+ }
62
+ for(var j=0; j<data.length; j++){
63
+ option.xAxis[0].data.push(data[j].category_name);
64
+ series.data.push(data[j].value);
65
+ }
66
+ option.series.push(series);
67
+ }
68
+
69
+ myChart.setOption(option);
70
+
71
+ function eConsole(param) {
72
+ console.log(param);
73
+ }
74
+
75
+ myChart.on("click", eConsole);
76
+ </script>
@@ -0,0 +1,9 @@
1
+ <table>
2
+ <% @data[:texts].each do |cols| %>
3
+ <tr>
4
+ <% cols.each do |c| %>
5
+ <td><%= c %></td>
6
+ <% end %>
7
+ </tr>
8
+ <% end %>
9
+ </table>
@@ -0,0 +1,15 @@
1
+ class CreateConnects < ActiveRecord::Migration
2
+ def change
3
+ create_table :connects do |t|
4
+ t.string :name
5
+ t.string :adapter
6
+ t.string :database
7
+ t.string :username
8
+ t.string :password
9
+ t.string :host
10
+ t.string :port
11
+
12
+ t.timestamps null: false
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ class CreateReports < ActiveRecord::Migration
2
+ def change
3
+ create_table :reports do |t|
4
+ t.string :name
5
+ t.text :sql_code
6
+ t.boolean :is_sql_category
7
+ t.string :category_name
8
+ t.references :connect, index: true, foreign_key: true
9
+ t.string :template
10
+ t.string :url
11
+
12
+ t.timestamps null: false
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ class CreateRequirements < ActiveRecord::Migration
2
+ def change
3
+ create_table :requirements do |t|
4
+ t.references :report, index: true, foreign_key: true
5
+ t.string :name
6
+ t.string :sql_key
7
+ t.string :sql_default
8
+ t.string :sql_replace
9
+ t.text :sql_str
10
+ t.integer :sql_type
11
+ t.integer :form_type
12
+
13
+ t.timestamps null: false
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ class CreateDictionaries < ActiveRecord::Migration
2
+ def change
3
+ create_table :dictionaries do |t|
4
+ t.string :resource_type
5
+ t.integer :resource_id
6
+ t.string :key
7
+ t.string :value
8
+
9
+ t.timestamps null: false
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ class CreateSeries < ActiveRecord::Migration
2
+ def change
3
+ create_table :series do |t|
4
+ t.references :report, index: true, foreign_key: true
5
+ t.string :name
6
+ t.string :sql_key
7
+
8
+ t.timestamps null: false
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ require 'rails'
2
+
3
+ module Report
4
+ module Generators
5
+ class InstallGenerator < Rails::Generators::Base
6
+ desc "install report."
7
+
8
+ def report_initializer_file
9
+ filePath = File.expand_path(File.dirname(File.dirname(__FILE__)))
10
+ currPath = File.expand_path("../../", filePath)
11
+ FileUtils.cp_r "#{currPath}/db/migrate", "db/"
12
+ FileUtils.cp_r "#{currPath}/app/controllers", "app/"
13
+ FileUtils.cp_r "#{currPath}/app/models", "app/"
14
+ FileUtils.cp_r "#{currPath}/app/views", "app/"
15
+ FileUtils.cp_r "#{currPath}/app/views", "app/"
16
+ FileUtils.cp_r "#{currPath}/public/report", "public/"
17
+ puts "完成report模块构建"
18
+ route("resources :connects")
19
+ route("resources :dictionaries")
20
+ route("resources :reports do resources :series and resources :requirements end")
21
+ puts "report routes created!"
22
+ end
23
+
24
+ end
25
+ end
26
+ end