kanaui 0.6.0 → 0.6.1

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.
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