simple_drilldown 0.9.1 → 0.9.6

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
  SHA256:
3
- metadata.gz: b38f18e3e6bd96a64ec6dfee0ad36d067d76a2a2069d468efc29f9a8d222e9d5
4
- data.tar.gz: f17ea328823a47247fa81317541ce6712fb6e97695292d09723670e13267cd69
3
+ metadata.gz: 3144b3e6cb99f07f654f2045836172d74c29bca1016787fcc9de9dd4bbdff211
4
+ data.tar.gz: d18da3c55b9ee565dadd892f14d4feae817094c7f100ada2d4aaebd975e80a1a
5
5
  SHA512:
6
- metadata.gz: ea2e3464984b2e37263c525313230e0dfdcfb2b068ae16af9c5ab59102a82f119ddd00509f9e05be5ac99ebccfb89796fb71d662448be7ddd2c1ccbe8d514a56
7
- data.tar.gz: 7897b10ac69bb8e5b85c094650b81e3467be21ef18e74866d897d52d7992af751b7436526a1dd7e705fd3895f67797e1afa330ed165d1154b22232ceb95b144c
6
+ metadata.gz: af25dfcb777c5d1f01d854a456a3b7ce954e9715244d71bb6dd69681df9a15f81e1b73853e59c3bb4abe1eee6bdd33a09be9393bfd35e8eb8d2227a1b3d4788a
7
+ data.tar.gz: b3f6706f4024d14b5d248083ca922374b2710ec012bed7f7af4cb65a8e854a735473793097210391ac0c52ecdb02a78898211e29b1e0ac106036b53c98378723
@@ -19,7 +19,6 @@ th.header {
19
19
  td {
20
20
  border: 1px solid #dfded2;
21
21
  padding: 2px;
22
- font-size: 10px;
23
22
  }
24
23
 
25
24
  td.numeric {
@@ -2,14 +2,14 @@
2
2
  data =
3
3
  case @dimensions.size
4
4
  when 0
5
- { @result[:value] => @result[:count] }
5
+ { @result[:value] => @result[@search.select_value] }
6
6
  when 1
7
- @result[:rows].map { |r| [@dimensions[0][:label_method] ? @dimensions[0][:label_method].call(r[:value]) : r[:value], r[:count]] }
7
+ @result[:rows].map { |r| [@dimensions[0][:label_method] ? @dimensions[0][:label_method].call(r[:value]) : r[:value], r[@search.select_value]] }
8
8
  when 2
9
9
  @result[:rows].map do |r|
10
10
  {
11
11
  name: r[:value],
12
- data: r[:rows].map { |r2| [r2[:value], r2[:count]] }
12
+ data: r[:rows].map { |r2| [r2[:value], r2[@search.select_value]] }
13
13
  }
14
14
  end
15
15
  when 3
@@ -56,6 +56,22 @@
56
56
  <%= form.radio_button 'display_type', SimpleDrilldown::Search::DisplayType::NONE, { :onChange => 'form.submit()' } %>
57
57
  <%= form.label :display_type_none, t(:none) %>
58
58
 
59
+ <% if controller.c_summary_fields.present? && @search.display_type != SimpleDrilldown::Search::DisplayType::NONE %>
60
+ <div class="text-center">
61
+ <label style="margin-bottom:0;margin-right:1em" for="search_select_value">Value: </label>
62
+ <div class="form-check form-check-inline">
63
+ <%= form.radio_button :select_value, SimpleDrilldown::Search::SelectValue::COUNT, class: "form-check-input", onChange: 'form.submit()' %>
64
+ <label class="form-check-label mr-3" for="search_select_value_count"><%= t(:count) %></label>
65
+ </div>
66
+ <% controller.c_summary_fields.each do |field| %>
67
+ <div class="form-check form-check-inline">
68
+ <%= form.radio_button :select_value, field, class: "form-check-input", onChange: 'form.submit()' %>
69
+ <label class="form-check-label mr-3" for="search_select_value_<%= field %>"><%= t(:field, default: field.to_s.titleize) %></label>
70
+ </div>
71
+ <% end %>
72
+ </div>
73
+ <% end %>
74
+
59
75
  <%= form.check_box :order_by_value, { :onChange => 'form.submit()' } %>
60
76
  <%= form.label :order_by_value, t(:order_by_value) %>
61
77
 
@@ -68,10 +84,10 @@
68
84
  <%= javascript_tag do %>
69
85
  $('#chart-1').on('click', function(e){
70
86
  chart = Chartkick.charts['chart-1'].getChartObject();
71
- firstPoint = chart.getElementsAtEvent(e)[0]
87
+ firstPoint = chart.getElementsAtEventForMode(e, 'nearest', { intersect: true }, false)[0]
72
88
  if (firstPoint) {
73
- label = chart.data.labels[firstPoint._index];
74
- value = chart.data.datasets[firstPoint._datasetIndex].data[firstPoint._index];
89
+ label = chart.data.labels[firstPoint.index];
90
+ value = chart.data.datasets[firstPoint.datasetIndex].data[firstPoint._index];
75
91
  console.log("Label: " + label + ", Value: " + value);
76
92
  new_location = window.location.toString();
77
93
  new_location = new_location.replace(/#.*$/, '');
@@ -3,7 +3,7 @@
3
3
  def excel_header_row(sheet)
4
4
  padding_cells = @dimensions.empty? ? 1 : @dimensions.size
5
5
  row = (1...(padding_cells - 1)).map { |_n| nil }
6
- @search.fields.each_with_index { |field, _i| row << t(field) }
6
+ @search.fields.each_with_index { |field, _i| row << t(field, default: field.titleize) }
7
7
  sheet.add_row row
8
8
  end
9
9
 
@@ -14,7 +14,7 @@
14
14
  </div>
15
15
  <% else %>
16
16
  <div class="form-group">
17
- <%= form.label "filter[#{dimension_name}]", t(dimension_name, default: :"activerecord.models.#{dimension_name}") %>
17
+ <%= form.label "filter[#{dimension_name}]", t(dimension_name, default: [:"activerecord.models.#{dimension_name}", dimension_name.titleize]) %>
18
18
  <%= select :search, :filter,
19
19
  choices,
20
20
  { :selected => @search.filter[dimension_name] },
@@ -2,7 +2,7 @@
2
2
  <tr>
3
3
  <td colspan="<%= controller.c_summary_fields.size + 1 %>">
4
4
  <table id="drilldown-records-<%= result[:value] %>" class="table table-condensed table-bordered" style="padding-bottom: 10px;">
5
- <%= render :partial => '/drilldown/row_header' %>
5
+ <%= render '/drilldown/row_header', records: result[:records] %>
6
6
  <tbody>
7
7
  <% result[:records].each do |t| %>
8
8
  <%= render :partial => '/drilldown/row', :locals => { :transaction => t, :previous_transaction => nil, :errors => [], :error_row => false, :meter1_errors => false } %>
@@ -1,8 +1,10 @@
1
1
  <thead>
2
2
  <tr>
3
3
  <% @search.fields.each do |field| %>
4
- <th><%=t field, default: :"attributes.#{field}" %></th>
4
+ <th><%= t field, default: :"attributes.#{field}" %></th>
5
5
  <% end %>
6
- <th></th>
6
+ <th>
7
+ <%= render 'drilldown/export_links', records: records %>
8
+ </th>
7
9
  </tr>
8
10
  </thead>
@@ -1,3 +1,4 @@
1
+ <% row_class = dimension > 0 && @dimensions[dimension - 1]&.[](:row_class)&.call(result[:value]) %>
1
2
  <% if new_row -%>
2
3
  <tr class="<%= cycle("odd", "even", :name => "dim#{dimension}") %>">
3
4
  <% ((dimension + 1)..(@dimensions.size)).each { |i| cycle("odd", "even", :name => "dim#{i}") if current_cycle("dim#{i}") != current_cycle("dim#{dimension}") } -%>
@@ -14,5 +15,13 @@
14
15
  (<%= 100 * result[:count] / parent_result[:count] %>%)
15
16
  <% end %>
16
17
  </td>
18
+ <% controller.c_summary_fields.each do |summary_field| %>
19
+ <td class="<%=row_class%>" align="right">
20
+ <%= result[summary_field] %>
21
+ <% if @search.percent && parent_result && parent_result[summary_field] > 0 %>
22
+ (<%= 100 * result[summary_field] / parent_result[summary_field] %>%)
23
+ <% end %>
24
+ </td>
25
+ <% end %>
17
26
  </tr>
18
27
  <% end %>
@@ -1,4 +1,4 @@
1
- <table id="drilldown-summary-table" class="table table-condensed table-bordered">
1
+ <table id="drilldown-summary-table" class="table table-sm table-bordered">
2
2
  <thead>
3
3
  <tr>
4
4
  <% @dimensions.each do |d| %>
@@ -43,7 +43,7 @@
43
43
  <div class="row">
44
44
  <div class="col-md-12" valign="top">
45
45
  <div style="float: right; clear: both;">
46
- <%= render '/drilldown/export_links' %>
46
+ <%= render '/drilldown/export_links', records: @result[:records] %>
47
47
  </div>
48
48
  <%= render '/drilldown/summary_table' %>
49
49
  </div>
@@ -12,6 +12,15 @@ class <%= class_name %>DrilldownController < SimpleDrilldown::Controller
12
12
  # How should we count the reords?
13
13
  # select 'count(*) as count'
14
14
 
15
+ # Multiple select values:
16
+ # select <<~SQL
17
+ # COUNT(*) as count,
18
+ # sum(hours) as hours,
19
+ # sum(billable_hours) as billable_hours
20
+ # SQL
21
+ # summary_fields :hours, :billable_hours
22
+ # default_select_value :billable_hours
23
+
15
24
  # When selecting records, what relations should be included for optimization?
16
25
  # Other relations can be included for specific dimensions and fields.
17
26
  # base_includes :user, :comments # TODO(uwe): Read relations from schema?
@@ -58,7 +58,7 @@ module SimpleDrilldown
58
58
  end
59
59
 
60
60
  def default_select_value(default_select_value)
61
- self.c_default_select_value = default_select_value
61
+ self.c_default_select_value = default_select_value.to_sym
62
62
  end
63
63
 
64
64
  def target_class(target_class)
@@ -327,16 +327,7 @@ module SimpleDrilldown
327
327
  includes.flatten!
328
328
  includes.keep_if(&:present?).uniq!
329
329
  if @search.order_by_value && @dimensions.size <= 1
330
- order = case @search.select_value
331
- when Search::SelectValue::VOLUME
332
- 'volume DESC'
333
- when Search::SelectValue::VOLUME_COMPENSATED
334
- 'volume_compensated DESC'
335
- when Search::SelectValue::COUNT
336
- 'count DESC'
337
- else
338
- 'count DESC'
339
- end
330
+ order = "#{c_summary_fields.find { |f| f == @search.select_value } || 'count'} DESC"
340
331
  else
341
332
  order = (1..@dimensions.size).map { |i| "value#{i}" }.join(',')
342
333
  order = nil if order.empty?
@@ -89,7 +89,8 @@ module SimpleDrilldown
89
89
  private
90
90
 
91
91
  def caption_txt
92
- "#{controller.c_target_class} #{I18n.t(@search.select_value.downcase)}" +
92
+ "#{controller.c_target_class} #{I18n.t(@search.select_value.downcase,
93
+ default: @search.select_value.to_s.titleize)}" +
93
94
  (@dimensions && @dimensions.any? ? " by #{@dimensions.map { |d| d[:pretty_name] }.join(' and ')}" : '')
94
95
  end
95
96
  end
@@ -14,9 +14,7 @@ module SimpleDrilldown
14
14
  end
15
15
 
16
16
  module SelectValue
17
- COUNT = 'COUNT'
18
- VOLUME = 'VOLUME'
19
- VOLUME_COMPENSATED = 'VOLUME_COMPENSATED'
17
+ COUNT = :count
20
18
  end
21
19
 
22
20
  attr_reader :dimensions, :display_type, :fields, :filter, :list_change_times, :order_by_value,
@@ -62,7 +60,7 @@ module SimpleDrilldown
62
60
  @display_type = DisplayType::BAR if @dimensions.size >= 2 && @display_type == DisplayType::PIE
63
61
 
64
62
  @order_by_value = attributes && (attributes[:order_by_value] == '1')
65
- @select_value = attributes&.dig(:select_value).present? ? attributes[:select_value] : @default_select_value
63
+ @select_value = attributes&.dig(:select_value).presence&.to_sym || @default_select_value
66
64
  @list = attributes&.[](:list) == '1'
67
65
  @percent = attributes&.[](:percent) == '1'
68
66
  @list_change_times = attributes&.[](:list_change_times) == '1'
@@ -1,3 +1,3 @@
1
1
  module SimpleDrilldown
2
- VERSION = '0.9.1'
2
+ VERSION = '0.9.6'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_drilldown
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uwe Kubosch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-20 00:00:00.000000000 Z
11
+ date: 2021-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: caxlsx_rails