kanaui 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 44408c840e86c3b09c99de32d8562b6f6cb11f8b
4
- data.tar.gz: b4c65299ff506937976f193d337701969e0cba65
3
+ metadata.gz: 83f3deb64dae6bfd29c937bf3c0fa39467a47925
4
+ data.tar.gz: 7a82c9c19b911572595e3c1dc874b4dde73f2c4a
5
5
  SHA512:
6
- metadata.gz: a1fd5e4063dea83305ead4baa1e6b60d9c532d86a4518067c2a2995709fab84df428c266f0a2d5a96222f5729bc8d3f7336d9036046b8d222fc2e4bd0dcb6e7f
7
- data.tar.gz: b62394e70ab37f0d418930846d288e8da1fec047dc9ad37a35cdaa0b5be8c9d6801aa54a84073e7c3d9ed8c131379e76265dc72ea2a972eb1f41e566559931ee
6
+ metadata.gz: 5e50d5433acd9f4653acca541e1cf9d10d9ef15af5e99d60974ee7dfe14090c867ca6dd3aa1b1176545392299f6f8246b8f332480cb92e39c68ca1c107bb3def
7
+ data.tar.gz: 5cab648078055b63104d1dc82dafb7a859e4cc1532737c8f40652304b4923e3f055994bb8823736723c4166836991311d03ee877998c6e9b10d1a67896218f20
@@ -12,6 +12,7 @@
12
12
  //= require twitter/bootstrap
13
13
  //= require dataTables/jquery.dataTables
14
14
  //= require dataTables/bootstrap/3/jquery.dataTables.bootstrap
15
+ //= require dataTables/extras/dataTables.colVis
15
16
  //= require d3
16
17
  //= require bootstrap-datepicker
17
18
  //= require jquery.spin
@@ -40,16 +40,87 @@ ReportsDataTables.prototype.buildTable = function(data, wrapper) {
40
40
  }
41
41
 
42
42
  var aoColumns = [];
43
+ var columnsVisible = [];
43
44
  for (var i in data['header']) {
44
- aoColumns.push({ "sTitle": data['header'][i] })
45
+ var isVisible = isColumnVisible(data['header'][i]);
46
+ aoColumns.push({ "sTitle": data['header'][i], "name": data['header'][i], "visible": isVisible })
47
+ if (isVisible) {
48
+ columnsVisible.push(data['header'][i]);
49
+ }
45
50
  }
46
51
 
47
52
  dataTable.dataTable({
48
53
  "aaData": aaData,
49
- "aoColumns": aoColumns
54
+ "aoColumns": aoColumns,
55
+ "sDom": 'C<"clear">lfrtip'
50
56
  });
57
+
58
+ dataTable.on( 'column-visibility.dt', function ( e, settings, column, state ) {
59
+ setColumnVisible(settings.aoColumns[column].name, state);
60
+ });
61
+
62
+ $("#copy-url").click(function(e){
63
+ var pathPlusParams = $(this).data("reports-path");
64
+ var sPageURL = decodeURIComponent(pathPlusParams.substring(1)).split('?');
65
+ var params = sPageURL[1].split('&');
66
+
67
+ var columnsVisible = $("#visible-table-columns").val();
68
+ var placeholder = $("#url-placeholder");
69
+
70
+ var urlToShare = window.location.origin + "/" + sPageURL[0] + "?";
71
+ for (var i in params) {
72
+ var keyValue = params[i].split('=');
73
+ if (keyValue[0] == 'columns') {
74
+ continue;
75
+ }
76
+ urlToShare += "&" + params[i];
77
+ }
78
+
79
+ placeholder.val(urlToShare + "&columns=" + columnsVisible);
80
+ placeholder.removeClass("hidden");
81
+ placeholder.select();
82
+
83
+ document.execCommand("Copy");
84
+ placeholder.addClass("hidden");
85
+ alert("URL copied into the clipboard!")
86
+ });
87
+
88
+ $("#visible-table-columns").val(columnsVisible.join());
51
89
  }
52
90
 
53
91
  ReportsDataTables.prototype.buildCSVURL = function(position) {
54
92
  return this.reports.buildDataURL(position, 'csv');
55
93
  }
94
+ function setColumnVisible(column, isVisible) {
95
+ var columnsVisible = $("#visible-table-columns").val();
96
+ if (columnsVisible == undefined || columnsVisible == null || columnsVisible.length == 0) {
97
+ columnsVisible = [];
98
+ } else {
99
+ columnsVisible = (columnsVisible).split(",");
100
+ }
101
+
102
+ var columnIndex = columnsVisible.indexOf(column);
103
+ if (isVisible && columnIndex == -1) {
104
+ columnsVisible.push(column);
105
+ } else if (!isVisible && columnIndex != -1) {
106
+ columnsVisible.splice(columnIndex, 1);
107
+ }
108
+
109
+ $("#visible-table-columns").val(columnsVisible.join());
110
+ }
111
+
112
+ function isColumnVisible(column) {
113
+ var columnsVisible = $("#visible-table-columns").val();
114
+ if ((columnsVisible == undefined || columnsVisible == null || columnsVisible.length == 0) && column != 'tenant_record_id') {
115
+ return true;
116
+ }
117
+ columnsVisible = (columnsVisible).split(",");
118
+
119
+ for (var i in columnsVisible) {
120
+ if (columnsVisible[i] == column) {
121
+ return true;
122
+ }
123
+ }
124
+
125
+ return false;
126
+ }
@@ -6,6 +6,7 @@
6
6
  *= require bootstrap-datepicker3
7
7
  *= require dataTables/jquery.dataTables
8
8
  *= require dataTables/bootstrap/3/jquery.dataTables.bootstrap
9
+ *= require dataTables/extras/dataTables.colVis
9
10
  *= require font-awesome
10
11
  *= require bootstrap_and_overrides
11
12
  *= require kanaui/kanaui
@@ -1,6 +1,3 @@
1
- #date-picker {
2
- margin-bottom: 20px;
3
- }
4
1
 
5
2
  .axis path,
6
3
  .axis line {
@@ -92,3 +89,61 @@
92
89
  .grid path{
93
90
  stroke-width: 0;
94
91
  }
92
+
93
+ button.ColVis_Button, button.ColVis_Button:hover {
94
+ background: inherit;
95
+ box-shadow: unset;
96
+ text-transform: none;
97
+ color: #333 !important;
98
+ border-color: #adadad;
99
+ }
100
+
101
+ ul.ColVis_collection {
102
+ background-color: #f3f3f3;
103
+ }
104
+
105
+ ul.ColVis_collection li, ul.ColVis_collection li:hover{
106
+ border: none;
107
+ box-shadow: unset;
108
+ background: transparent;
109
+ }
110
+
111
+ button.ColVis_Button:hover, ul.ColVis_collection li:hover {
112
+ background-color: #e6e6e6;
113
+ border-color: #adadad;
114
+ }
115
+
116
+ .dataTables_wrapper .dataTables_paginate .paginate_button {
117
+ padding: 0.25em 0.5em;
118
+ }
119
+
120
+ .flex-panel {
121
+ display: -webkit-flex;
122
+ display: flex;
123
+ -webkit-flex-direction: row;
124
+ flex-direction: row;
125
+ }
126
+
127
+ .flex-inner-left-panel {
128
+ -ms-flex: 1 .5 0%;
129
+ -webkit-flex: 1 .5 0%;
130
+ flex: 1 .5 0%;
131
+ }
132
+
133
+ .flex-inner-left-panel ul li {
134
+ white-space: nowrap;
135
+ }
136
+
137
+ .flex-inner-right-panel {
138
+ -ms-flex: .5 1 70%;
139
+ -webkit-flex: .5 1 70%;
140
+ flex: .5 1 70%;
141
+ }
142
+
143
+ #date-picker .form-group {
144
+ height: 34px;
145
+ }
146
+
147
+ #table-tools {
148
+ padding-bottom: 10px;
149
+ }
@@ -20,6 +20,9 @@ module Kanaui
20
20
 
21
21
  query = build_slice_and_dice_query
22
22
 
23
+ # get columns visibility from query parameters to be used by tables
24
+ @visible_columns = params[:columns]
25
+
23
26
  # Redirect also in case the dates have been updated to avoid any confusion in the view
24
27
  if query.present? || params[:start_date].blank? || params[:end_date].blank?
25
28
  # TODO Make metrics configurable
@@ -1,142 +1,156 @@
1
- <div class="row">
2
- <!-- MENU -->
3
- <div class="col-md-3 col-sm-12 col-lg-4 reports-options">
4
- <div class="row">
5
- <% if params[:name] && @report['reportType'] == 'TIMELINE' %>
6
- <div id="date-picker" class="col-md-12">
7
- <h4>End date</h4>
8
- <%= form_tag kanaui_engine.dashboard_index_path, :method => :get do %>
9
- <input name="name" type="hidden" value="<%= @raw_name %>">
10
- <input name="smooth" type="hidden" value="<%= params[:smooth] %>">
11
- <input name="sql_only" type="hidden" value="<%= params[:sql_only] %>">
12
- <input name="format" type="hidden" value="<%= params[:format] %>">
13
- <input name="delta_days" type="hidden" value="<%= (@end_date.to_date - @start_date.to_date).to_i %>">
1
+ <div class="flex-panel">
2
+ <!-- MENU -->
3
+ <div class="reports-options flex-inner-left-panel">
4
+ <div class="row">
5
+ <% if params[:name] && @report['reportType'] == 'TIMELINE' %>
6
+ <div id="date-picker" class="col-md-12">
7
+ <h4>End date</h4>
8
+ <%= form_tag kanaui_engine.dashboard_index_path, :html => {:class => 'form-horizontal'}, :method => :get do %>
9
+ <input name="name" type="hidden" value="<%= @raw_name %>">
10
+ <input name="smooth" type="hidden" value="<%= params[:smooth] %>">
11
+ <input name="sql_only" type="hidden" value="<%= params[:sql_only] %>">
12
+ <input name="format" type="hidden" value="<%= params[:format] %>">
13
+ <input name="delta_days" type="hidden" value="<%= (@end_date.to_date - @start_date.to_date).to_i %>">
14
14
 
15
- <div class="form-group">
16
- <div class="col-md-5">
17
- <input class="form-control" name="end_date" type="text" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-today-highlight="true" value="<%= @end_date %>">
15
+ <div class="form-group">
16
+ <div class="col-md-12">
17
+ <input class="form-control" name="end_date" type="text" data-provide="datepicker" data-date-format="yyyy-mm-dd" data-date-today-highlight="true" value="<%= @end_date %>">
18
+ </div>
18
19
  </div>
19
- </div>
20
- <div class="form-group">
21
- <%= submit_tag 'Refresh', :class => 'btn btn-default' %>
22
- </div>
23
- <% end %>
24
- </div>
25
- <% end %>
26
- <div class="col-md-12 col-sm-8">
27
- <h4><%= link_to 'Available Reports', kanaui_engine.url_for(:controller => :reports) %></h4>
28
- <ul class="nav nav-tabs nav-stacked">
29
- <% if Rails.env.development? %>
30
- <li class="nav-element">
31
- <%= link_to "Fake pie", kanaui_engine.dashboard_index_path(:fake => 1, :name => 'fake_pie', :type => 'pie') %>
32
- </li>
33
- <li class="nav-element">
34
- <%= link_to "Fake line", kanaui_engine.dashboard_index_path(:fake => 1, :name => 'fake_line', :type => 'line') %>
20
+ <div class="form-group">
21
+ <div class="col-sm-12">
22
+ <%= submit_tag 'Refresh', :class => 'btn btn-default' %>
23
+ </div>
24
+ </div>
25
+ <% end %>
26
+ </div>
27
+ <% end %>
28
+ <div class="col-md-12 col-sm-8">
29
+ <h4><%= link_to 'Available Reports', kanaui_engine.url_for(:controller => :reports) %></h4>
30
+ <ul class="nav nav-tabs nav-stacked">
31
+ <% if Rails.env.development? %>
32
+ <li class="nav-element">
33
+ <%= link_to "Fake pie", kanaui_engine.dashboard_index_path(:fake => 1, :name => 'fake_pie', :type => 'pie') %>
34
+ </li>
35
+ <li class="nav-element">
36
+ <%= link_to "Fake line", kanaui_engine.dashboard_index_path(:fake => 1, :name => 'fake_line', :type => 'line') %>
37
+ </li>
38
+ <% end %>
39
+ <% @reports.each do |r| %>
40
+ <% link = kanaui_engine.dashboard_index_path(params.to_h.merge(:name => r['reportName'])) %>
41
+ <li class="nav-element <%= params[:name] == r['reportName'] ? 'current' : '' %>">
42
+ <%= link_to r['reportPrettyName'], link, :class => "truncate-text", title: r['reportName'].titleize %>
35
43
  </li>
36
44
  <% end %>
37
- <% @reports.each do |r| %>
38
- <% link = kanaui_engine.dashboard_index_path(params.to_h.merge(:name => r['reportName'])) %>
39
- <li class="nav-element <%= params[:name] == r['reportName'] ? 'current' : '' %>">
40
- <%= link_to r['reportPrettyName'], link, :class => "truncate-text", title: r['reportName'].titleize %>
41
- </li>
42
- <% end %>
43
- </ul>
45
+ </ul>
46
+ </div>
44
47
  </div>
45
48
  </div>
46
- </div>
47
49
 
48
- <!-- DASHBOARD -->
49
- <div class="col-md-9 col-sm-12 col-lg-8">
50
- <div class="row">
51
- <% if params[:name] %>
52
- <h2 class="chart-title">
53
- <%= @raw_name.titleize %>
54
- </h2>
55
- <div id="loading-spinner"></div>
56
- <div id="chartAnchor" data-reports-path="<%= kanaui_engine.reports_path(params.to_h) %>"></div>
57
- <div id="date-controls" style="display: none;">
58
- <ul class="nav nav-pills nav-justified">
59
- <% @available_start_dates.each do |key, value| %>
60
- <li><%= link_to key, kanaui_engine.dashboard_index_path(params.to_h.merge(:start_date => value)) %></li>
50
+ <!-- DASHBOARD -->
51
+ <div class="flex-inner-right-panel">
52
+ <div class="row">
53
+ <div class="col-sm-12">
54
+ <% if params[:name] %>
55
+ <h2 class="chart-title">
56
+ <%= @raw_name.titleize %>
57
+ </h2>
58
+ <% if @report['reportType'] == 'TABLE' %>
59
+ <input type="hidden" id="visible-table-columns" value="<%= @visible_columns %>">
60
+
61
+ <div id="table-tools" class="row">
62
+ <div class="col-sm-2">
63
+ <a class="btn btn-default" id="copy-url" data-reports-path="<%= kanaui_engine.dashboard_index_path(params.to_h) %>">Copy URL</a>
64
+ <input id="url-placeholder" class="form-control hidden">
65
+ </div>
66
+ </div>
61
67
  <% end %>
62
- </ul>
63
- </div>
64
- <hr>
65
- <div class="pull-right">
66
- <%= link_to 'Download raw data', kanaui_engine.reports_path(params.to_h.merge(:format => 'csv')), class: 'btn btn-default' %>
67
- </div>
68
- <a class="btn btn-default" role="button" data-toggle="collapse" href="#advanced-controls" aria-expanded="false" aria-controls="advanced-controls">
69
- Advanced controls
70
- </a>
71
- <div class="collapse" id="advanced-controls">
72
- <div class="well">
73
- <ul>
74
- <% if @report['reportType'] == 'TIMELINE' %>
75
- <% at_least_two_months = params[:start_date].blank? || params[:end_date].blank? || (params[:end_date].to_date.beginning_of_month - 1.month > params[:start_date].to_date) %>
76
- <% at_least_two_weeks = params[:start_date].blank? || params[:end_date].blank? || (params[:end_date].to_date.beginning_of_week - 1.week > params[:start_date].to_date) %>
77
- <% if params[:smooth] != 'AVERAGE_WEEKLY' && at_least_two_weeks %>
78
- <li><%= link_to 'Weekly average', kanaui_engine.dashboard_index_path(params.to_h.merge(:smooth => 'AVERAGE_WEEKLY')) %></li>
79
- <% end %>
80
- <% if params[:smooth] != 'AVERAGE_MONTHLY' && at_least_two_months %>
81
- <li><%= link_to 'Monthly average', kanaui_engine.dashboard_index_path(params.to_h.merge(:smooth => 'AVERAGE_MONTHLY')) %></li>
82
- <% end %>
83
- <% if params[:smooth] != 'SUM_WEEKLY' && at_least_two_weeks %>
84
- <li><%= link_to 'Weekly sum', kanaui_engine.dashboard_index_path(params.to_h.merge(:smooth => 'SUM_WEEKLY')) %></li>
68
+ <div id="loading-spinner"></div>
69
+ <div id="chartAnchor" data-reports-path="<%= kanaui_engine.reports_path(params.to_h) %>"></div>
70
+ <div id="date-controls" style="display: none;">
71
+ <ul class="nav nav-pills nav-justified">
72
+ <% @available_start_dates.each do |key, value| %>
73
+ <li><%= link_to key, kanaui_engine.dashboard_index_path(params.to_h.merge(:start_date => value)) %></li>
85
74
  <% end %>
86
- <% if params[:smooth] != 'SUM_MONTHLY' && at_least_two_months %>
87
- <li><%= link_to 'Monthly sum', kanaui_engine.dashboard_index_path(params.to_h.merge(:smooth => 'SUM_MONTHLY')) %></li>
88
- <% end %>
89
- <% end %>
90
- <% filter_fields = ((@report['schema'] || {})['fields'] || []).select { |field| !field['distinctValues'].blank? && field['dataType'] =~ /char/ } # To ignore tenant_record_id %>
91
- <% unless filter_fields.empty? %>
92
- <li>Slicing & Dicing:
93
- <%= form_tag kanaui_engine.dashboard_index_path(params.to_h), :method => :get, :class => 'form-horizontal' do %>
94
- <input name="start_date" type="hidden" value="<%= @start_date %>">
95
- <input name="end_date" type="hidden" value="<%= @end_date %>">
96
- <input name="name" type="hidden" value="<%= @raw_name %>">
97
- <input name="smooth" type="hidden" value="<%= params[:smooth] %>">
98
- <input name="sql_only" type="hidden" value="<%= params[:sql_only] %>">
99
- <input name="format" type="hidden" value="<%= params[:format] %>">
75
+ </ul>
76
+ </div>
77
+ <hr>
78
+ <div class="pull-right">
79
+ <%= link_to 'Download raw data', kanaui_engine.reports_path(params.to_h.merge(:format => 'csv')), class: 'btn btn-default' %>
80
+ </div>
81
+ <a class="btn btn-default" role="button" data-toggle="collapse" href="#advanced-controls" aria-expanded="false" aria-controls="advanced-controls">
82
+ Advanced controls
83
+ </a>
84
+ <div class="collapse" id="advanced-controls">
85
+ <div class="well">
86
+ <ul>
87
+ <% if @report['reportType'] == 'TIMELINE' %>
88
+ <% at_least_two_months = params[:start_date].blank? || params[:end_date].blank? || (params[:end_date].to_date.beginning_of_month - 1.month > params[:start_date].to_date) %>
89
+ <% at_least_two_weeks = params[:start_date].blank? || params[:end_date].blank? || (params[:end_date].to_date.beginning_of_week - 1.week > params[:start_date].to_date) %>
90
+ <% if params[:smooth] != 'AVERAGE_WEEKLY' && at_least_two_weeks %>
91
+ <li><%= link_to 'Weekly average', kanaui_engine.dashboard_index_path(params.to_h.merge(:smooth => 'AVERAGE_WEEKLY')) %></li>
92
+ <% end %>
93
+ <% if params[:smooth] != 'AVERAGE_MONTHLY' && at_least_two_months %>
94
+ <li><%= link_to 'Monthly average', kanaui_engine.dashboard_index_path(params.to_h.merge(:smooth => 'AVERAGE_MONTHLY')) %></li>
95
+ <% end %>
96
+ <% if params[:smooth] != 'SUM_WEEKLY' && at_least_two_weeks %>
97
+ <li><%= link_to 'Weekly sum', kanaui_engine.dashboard_index_path(params.to_h.merge(:smooth => 'SUM_WEEKLY')) %></li>
98
+ <% end %>
99
+ <% if params[:smooth] != 'SUM_MONTHLY' && at_least_two_months %>
100
+ <li><%= link_to 'Monthly sum', kanaui_engine.dashboard_index_path(params.to_h.merge(:smooth => 'SUM_MONTHLY')) %></li>
101
+ <% end %>
102
+ <% end %>
103
+ <% filter_fields = ((@report['schema'] || {})['fields'] || []).select { |field| !field['distinctValues'].blank? && field['dataType'] =~ /char/ } # To ignore tenant_record_id %>
104
+ <% unless filter_fields.empty? %>
105
+ <li>Slicing & Dicing:
106
+ <%= form_tag kanaui_engine.dashboard_index_path(params.to_h), :method => :get, :class => 'form-horizontal' do %>
107
+ <input name="start_date" type="hidden" value="<%= @start_date %>">
108
+ <input name="end_date" type="hidden" value="<%= @end_date %>">
109
+ <input name="name" type="hidden" value="<%= @raw_name %>">
110
+ <input name="smooth" type="hidden" value="<%= params[:smooth] %>">
111
+ <input name="sql_only" type="hidden" value="<%= params[:sql_only] %>">
112
+ <input name="format" type="hidden" value="<%= params[:format] %>">
100
113
 
101
- <fieldset class="form-group">
102
- <legend>Filters</legend>
103
- <% filter_fields.each do |field| %>
104
- <div class="form-group">
105
- <%= label_tag "filter_#{field['name']}", field['name'], :class => 'col-sm-2 control-label' %>
106
- <div class="col-sm-10">
107
- <%= select_tag "filter_#{field['name']}", options_for_select(field['distinctValues']), :multiple => true, :class => 'form-control' %>
108
- </div>
109
- </div>
110
- <% end %>
111
- </fieldset>
112
- <fieldset class="form-group">
113
- <legend>Dimensions to plot</legend>
114
- <% filter_fields.each do |field| %>
115
- <div class="form-group">
116
- <%= label_tag "group_#{field['name']}", field['name'], :class => 'col-sm-2 control-label' %>
117
- <div class="col-sm-10">
118
- <%= select_tag "group_#{field['name']}", options_for_select(field['distinctValues']), :multiple => true, :class => 'form-control' %>
119
- </div>
120
- </div>
121
- <% end %>
122
- </fieldset>
114
+ <fieldset class="form-group">
115
+ <legend>Filters</legend>
116
+ <% filter_fields.each do |field| %>
117
+ <div class="form-group">
118
+ <%= label_tag "filter_#{field['name']}", field['name'], :class => 'col-sm-2 control-label' %>
119
+ <div class="col-sm-10">
120
+ <%= select_tag "filter_#{field['name']}", options_for_select(field['distinctValues']), :multiple => true, :class => 'form-control' %>
121
+ </div>
122
+ </div>
123
+ <% end %>
124
+ </fieldset>
125
+ <fieldset class="form-group">
126
+ <legend>Dimensions to plot</legend>
127
+ <% filter_fields.each do |field| %>
128
+ <div class="form-group">
129
+ <%= label_tag "group_#{field['name']}", field['name'], :class => 'col-sm-2 control-label' %>
130
+ <div class="col-sm-10">
131
+ <%= select_tag "group_#{field['name']}", options_for_select(field['distinctValues']), :multiple => true, :class => 'form-control' %>
132
+ </div>
133
+ </div>
134
+ <% end %>
135
+ </fieldset>
123
136
 
124
- <div class="form-group">
125
- <div class="col-sm-offset-2 col-sm-10">
126
- <%= submit_tag 'Refresh', :class => 'btn btn-default' %>
127
- </div>
128
- </div>
129
- <% end %>
130
- </li>
131
- <li>Current Analytics query:&nbsp;<%= link_to '<i class="fa fa-question-circle"></i>'.html_safe, 'http://docs.killbill.io/latest/userguide_analytics.html#_dashboard_api', :target => '_blank' %>
132
- <pre><%= params[:name] -%></pre>
133
- </li>
134
- <% end %>
135
- <li><%= link_to 'SQL query', kanaui_engine.reports_path(params.to_h.merge(:sql_only => true)) %></li>
136
- </ul>
137
- </div>
137
+ <div class="form-group">
138
+ <div class="col-sm-offset-2 col-sm-10">
139
+ <%= submit_tag 'Refresh', :class => 'btn btn-default' %>
140
+ </div>
141
+ </div>
142
+ <% end %>
143
+ </li>
144
+ <li>Current Analytics query:&nbsp;<%= link_to '<i class="fa fa-question-circle"></i>'.html_safe, 'http://docs.killbill.io/latest/userguide_analytics.html#_dashboard_api', :target => '_blank' %>
145
+ <pre><%= params[:name] -%></pre>
146
+ </li>
147
+ <% end %>
148
+ <li><%= link_to 'SQL query', kanaui_engine.reports_path(params.to_h.merge(:sql_only => true)) %></li>
149
+ </ul>
150
+ </div>
151
+ </div>
152
+ <% end %>
138
153
  </div>
139
- <% end %>
154
+ </div>
140
155
  </div>
141
156
  </div>
142
- </div>
@@ -1,3 +1,3 @@
1
1
  module Kanaui
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
@@ -0,0 +1,11 @@
1
+ ----------------------
2
+ KanauiTest: test_truth
3
+ ----------------------
4
+ -----------------------------------------------
5
+ NavigationTest: test_can_see_the_dashboard_page
6
+ -----------------------------------------------
7
+ Started GET "/kanaui" for 127.0.0.1 at 2018-04-12 15:30:51 +0000
8
+ Processing by Kanaui::DashboardController#index as HTML
9
+ Request method='GET', uri='http://127.0.0.1:8080/plugins/killbill-analytics/reports'
10
+ accept='application/json', user-agent='killbill/2.2.2; ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]', accept-encoding='gzip;q=1.0,deflate;q=0.6,identity;q=0.3', x-killbill-apikey='bob', x-killbill-apisecret='lazar', authorization='Basic [FILTERED]'
11
+ Completed 500 Internal Server Error in 1ms
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kanaui
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kill Bill core team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-22 00:00:00.000000000 Z
11
+ date: 2018-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -136,20 +136,6 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '1.6'
139
- - !ruby/object:Gem::Dependency
140
- name: killbill-client
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '1.0'
146
- type: :runtime
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '1.0'
153
139
  - !ruby/object:Gem::Dependency
154
140
  name: rake
155
141
  requirement: !ruby/object:Gem::Requirement
@@ -281,6 +267,7 @@ files:
281
267
  - test/dummy/config/locales/en.yml
282
268
  - test/dummy/config/routes.rb
283
269
  - test/dummy/config/secrets.yml
270
+ - test/dummy/log/test.log
284
271
  - test/dummy/public/404.html
285
272
  - test/dummy/public/422.html
286
273
  - test/dummy/public/500.html
@@ -322,6 +309,7 @@ test_files:
322
309
  - test/unit/helpers/kanaui/tests_helper_test.rb
323
310
  - test/test_helper.rb
324
311
  - test/integration/navigation_test.rb
312
+ - test/dummy/log/test.log
325
313
  - test/dummy/public/404.html
326
314
  - test/dummy/public/422.html
327
315
  - test/dummy/public/500.html