simple_drilldown 0.11.0 → 0.13.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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/app/views/{drilldown → layouts/simple_drilldown}/print.html.erb +0 -0
- data/app/views/{drilldown → simple_drilldown}/_chart.html.erb +1 -1
- data/app/views/{drilldown → simple_drilldown}/_excel_record_list_xlsx.xlsx.axlsx +0 -0
- data/app/views/{drilldown → simple_drilldown}/_excel_row_header.builder +0 -0
- data/app/views/{drilldown → simple_drilldown}/_excel_styles.builder +0 -0
- data/app/views/{drilldown → simple_drilldown}/_excel_summary_row.builder +1 -1
- data/app/views/{drilldown → simple_drilldown}/_excel_summary_row_xlsx.xlsx.axlsx +0 -0
- data/app/views/{drilldown → simple_drilldown}/_excel_summary_total_row.builder +0 -0
- data/app/views/{drilldown → simple_drilldown}/_excel_summary_total_row_xlsx.xlsx.axlsx +0 -0
- data/app/views/{drilldown → simple_drilldown}/_export_links.html.erb +0 -0
- data/app/views/{drilldown → simple_drilldown}/_field.html.erb +0 -0
- data/app/views/{drilldown → simple_drilldown}/_fields.html.erb +0 -0
- data/app/views/{drilldown → simple_drilldown}/_filter.html.erb +1 -1
- data/app/views/{drilldown → simple_drilldown}/_record_list.html.erb +2 -2
- data/app/views/{drilldown → simple_drilldown}/_row.html.erb +0 -0
- data/app/views/{drilldown → simple_drilldown}/_row_header.html.erb +1 -1
- data/app/views/{drilldown → simple_drilldown}/_summary_row.html.erb +0 -0
- data/app/views/{drilldown → simple_drilldown}/_summary_table.html.erb +0 -0
- data/app/views/{drilldown → simple_drilldown}/_summary_total_row.html.erb +0 -0
- data/app/views/{drilldown → simple_drilldown}/_tab_buttons.html.erb +0 -0
- data/app/views/{drilldown → simple_drilldown}/data_0.builder +0 -0
- data/app/views/{drilldown → simple_drilldown}/data_1.builder +0 -0
- data/app/views/{drilldown → simple_drilldown}/data_2.builder +0 -0
- data/app/views/{drilldown → simple_drilldown}/data_3.builder +0 -0
- data/app/views/{drilldown → simple_drilldown}/excel_export.builder +1 -1
- data/app/views/{drilldown → simple_drilldown}/excel_export_records.builder +1 -1
- data/app/views/{drilldown → simple_drilldown}/excel_export_xlsx.xlsx.axlsx +3 -3
- data/app/views/{drilldown → simple_drilldown}/html_export.html.erb +1 -1
- data/app/views/{drilldown → simple_drilldown}/index.html.erb +5 -5
- data/lib/generators/simple_drilldown/controller/templates/drilldown_controller.rb.erb +2 -1
- data/lib/simple_drilldown/controller.rb +28 -31
- data/lib/simple_drilldown/engine.rb +1 -1
- data/lib/simple_drilldown/helper.rb +11 -11
- data/lib/simple_drilldown/search.rb +2 -2
- data/lib/simple_drilldown/version.rb +3 -1
- metadata +38 -65
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6f8406ee9ef7580adc175f3995a79bcb428f954e4d84012ad0a0180b6cf7996
|
4
|
+
data.tar.gz: cfd5b6a19277aac5e11443a0c7429bc741991e2da00c1915ddff1b6554df75c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 930779fb380dcff0933a71df90bfa3d55f7ca43103f68d30e89d380f6dc68ac5cb6ae6accd32d98bba445179e6498b0143b4d235e98aa0649b94ed20c5b04de6
|
7
|
+
data.tar.gz: c54be58a2c0c072e70884b73ce88daceb8c3e6508f921c06eaa67011a93d52ebc9624b462e47c393397ee285325b8f8a05eb8cdfee5dc6eb8247054c939e4605
|
data/README.md
CHANGED
@@ -117,7 +117,7 @@ results.
|
|
117
117
|
|
118
118
|
This gem includes views for the drilldown visualization using Bootstrap.
|
119
119
|
|
120
|
-
You can override any views by creating them in your `app/views/
|
120
|
+
You can override any views by creating them in your `app/views/simple_drilldown` directory.
|
121
121
|
If you would like a local copy of the views for overriding you can use the generator.
|
122
122
|
|
123
123
|
bin/rails g simple_drilldown:views
|
data/Rakefile
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -8,7 +8,7 @@ xml.Row do
|
|
8
8
|
xml.Data value_label(@dimensions.size - headers.size + i - 1, h[:value]), 'ss:Type' => 'String'
|
9
9
|
end
|
10
10
|
end
|
11
|
-
if dimension
|
11
|
+
if dimension.positive?
|
12
12
|
xml.Cell('ss:StyleID' => 'Outer',
|
13
13
|
'ss:Index' => dimension.to_s) do
|
14
14
|
xml.Data value_label(dimension - 1, result[:value]),
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -5,6 +5,6 @@
|
|
5
5
|
|
6
6
|
<% controller.c_dimension_defs.each do |dimension_name, dimension| %>
|
7
7
|
<% choices = [[t(:all), nil]] + (dimension[:legal_values] && dimension[:legal_values].call(@search).map { |o| o.is_a?(Array) ? [o[0].to_s, o[1].to_s] : o.to_s } || []) %>
|
8
|
-
<%= render partial: '
|
8
|
+
<%= render partial: 'simple_drilldown/field', locals: { choices: choices || [],
|
9
9
|
form: form, dimension_name: dimension_name } %>
|
10
10
|
<% end %>
|
@@ -2,10 +2,10 @@
|
|
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 '/
|
5
|
+
<%= render '/simple_drilldown/row_header', records: result[:records] %>
|
6
6
|
<tbody>
|
7
7
|
<% result[:records].each do |t| %>
|
8
|
-
<%= render :partial => '/
|
8
|
+
<%= render :partial => '/simple_drilldown/row', :locals => { :transaction => t, :previous_transaction => nil, :errors => [], :error_row => false, :meter1_errors => false } %>
|
9
9
|
<% end %>
|
10
10
|
</tbody>
|
11
11
|
</table>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -10,7 +10,7 @@ xml.Workbook(
|
|
10
10
|
'xmlns:ss' => 'urn:schemas-microsoft-com:office:spreadsheet',
|
11
11
|
'xmlns:html' => 'http://www.w3.org/TR/REC-html40'
|
12
12
|
) do
|
13
|
-
xml << render('/
|
13
|
+
xml << render('/simple_drilldown/excel_styles')
|
14
14
|
|
15
15
|
xml.Worksheet 'ss:Name' => 'Transaction Summary' do
|
16
16
|
xml.Table do
|
@@ -10,7 +10,7 @@ xml.Workbook(
|
|
10
10
|
'xmlns:ss' => 'urn:schemas-microsoft-com:office:spreadsheet',
|
11
11
|
'xmlns:html' => 'http://www.w3.org/TR/REC-html40'
|
12
12
|
) do
|
13
|
-
xml << render(partial: '/
|
13
|
+
xml << render(partial: '/simple_drilldown/excel_styles')
|
14
14
|
|
15
15
|
xml.Worksheet 'ss:Name' => 'Drilldown' do
|
16
16
|
xml.Table do
|
@@ -20,19 +20,19 @@ def excel_summary_row_xlsx(sheet, result, parent_result = nil, dimension = 0, he
|
|
20
20
|
excel_summary_row_xlsx(sheet, r, result, dimension + 1, sub_headers)
|
21
21
|
end
|
22
22
|
else
|
23
|
-
render(partial: '/
|
23
|
+
render(partial: '/simple_drilldown/excel_summary_row_xlsx',
|
24
24
|
locals: { sheet: sheet, result: result, parent_result: parent_result, headers: headers.dup,
|
25
25
|
dimension: dimension })
|
26
26
|
|
27
27
|
if @search.list
|
28
|
-
render(partial: '/
|
28
|
+
render(partial: '/simple_drilldown/excel_record_list_xlsx',
|
29
29
|
locals: { sheet: sheet, result: result })
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
33
|
return if dimension >= @dimensions.size
|
34
34
|
|
35
|
-
render(partial: '/
|
35
|
+
render(partial: '/simple_drilldown/excel_summary_total_row_xlsx', locals: {
|
36
36
|
sheet: sheet, result: result, headers: headers.dup, dimension: dimension
|
37
37
|
})
|
38
38
|
end
|
@@ -26,10 +26,10 @@
|
|
26
26
|
<!-- Tab panes -->
|
27
27
|
<div class="tab-content">
|
28
28
|
<div class="tab-pane active" id="filter">
|
29
|
-
<%= render '/
|
29
|
+
<%= render '/simple_drilldown/filter', form: form %>
|
30
30
|
</div>
|
31
31
|
<div class="tab-pane" id="fields">
|
32
|
-
<%= render '/
|
32
|
+
<%= render '/simple_drilldown/fields', form: form %>
|
33
33
|
</div>
|
34
34
|
</div>
|
35
35
|
|
@@ -37,16 +37,16 @@
|
|
37
37
|
<div class="col-md-9">
|
38
38
|
<div class="row" valign="top">
|
39
39
|
<div class="col-md-12">
|
40
|
-
<%= render '/
|
40
|
+
<%= render '/simple_drilldown/chart', form: form %>
|
41
41
|
</div>
|
42
42
|
</div>
|
43
43
|
|
44
44
|
<div class="row">
|
45
45
|
<div class="col-md-12" valign="top">
|
46
46
|
<div style="float: right; clear: both;">
|
47
|
-
<%= render '/
|
47
|
+
<%= render '/simple_drilldown/export_links', records: @result[:records] %>
|
48
48
|
</div>
|
49
|
-
<%= render '/
|
49
|
+
<%= render '/simple_drilldown/summary_table' %>
|
50
50
|
</div>
|
51
51
|
</div>
|
52
52
|
</div>
|
@@ -26,7 +26,7 @@ class <%= class_name %>DrilldownController < SimpleDrilldown::Controller
|
|
26
26
|
# base_includes :user, :comments # TODO(uwe): Read relations from schema?
|
27
27
|
|
28
28
|
# What fields should be displayed as default when listing actual <%= class_name %> records.
|
29
|
-
default_fields %w[created_at updated_at] # TODO(uwe): Read fields from schema?
|
29
|
+
default_fields %w[id created_at updated_at] # TODO(uwe): Read fields from schema?
|
30
30
|
|
31
31
|
# When listing records, what relations should be included for optimization?
|
32
32
|
# list_includes :user, :comments # TODO(uwe): Read relations from schema?
|
@@ -35,6 +35,7 @@ class <%= class_name %>DrilldownController < SimpleDrilldown::Controller
|
|
35
35
|
list_order '<%= plural_name %>.created_at'
|
36
36
|
|
37
37
|
# Field definitions when listing records
|
38
|
+
field :id
|
38
39
|
field :created_at
|
39
40
|
field :updated_at
|
40
41
|
|
@@ -135,8 +135,8 @@ module SimpleDrilldown
|
|
135
135
|
interval: interval,
|
136
136
|
label_method: label_method,
|
137
137
|
legal_values: legal_values,
|
138
|
-
pretty_name: I18n.t(:"
|
139
|
-
default: [:"
|
138
|
+
pretty_name: I18n.t(:"simple_drilldown.dimension.#{name}",
|
139
|
+
default: [:"simple_drilldown.#{name}", :"activerecord.models.#{name}", name.to_sym,
|
140
140
|
name.to_s.titleize]),
|
141
141
|
queries: queries,
|
142
142
|
reverse: reverse,
|
@@ -147,7 +147,7 @@ module SimpleDrilldown
|
|
147
147
|
}
|
148
148
|
end
|
149
149
|
|
150
|
-
def legal_values_for(field, preserve_filter
|
150
|
+
def legal_values_for(field, preserve_filter: false)
|
151
151
|
lambda do |search|
|
152
152
|
filter = search.filter.dup
|
153
153
|
filter.delete(field.to_s) unless preserve_filter
|
@@ -270,7 +270,7 @@ module SimpleDrilldown
|
|
270
270
|
sql = +"LEFT JOIN #{include_table} #{include_alias} ON #{include_alias}.#{fk_col} = #{model_table}.id"
|
271
271
|
sql << " AND #{include_alias}.deleted_at IS NULL" if ass.klass.paranoid?
|
272
272
|
if ass.scope && (base_ass_order = ScopeHolder.new(ass.scope).to_s)
|
273
|
-
/^(?<ass_order
|
273
|
+
/^(?<ass_order>.*?)(?<ass_order_desc>\s+DESC)?$/i =~ base_ass_order
|
274
274
|
ass_order_prefixed = ass_order.dup
|
275
275
|
ActiveRecord::Base.connection.columns(include_table).map(&:name).each do |cname|
|
276
276
|
ass_order_prefixed.gsub!(/\b#{cname}\b/, "#{include_alias}.#{cname}")
|
@@ -349,7 +349,7 @@ module SimpleDrilldown
|
|
349
349
|
|
350
350
|
# ?dimension[0]=supplier&dimension[1]=transaction_type&
|
351
351
|
# filter[year]=2009&filter[supplier][0]=Shell&filter[supplier][1]=Statoil
|
352
|
-
def index(do_render
|
352
|
+
def index(do_render: true)
|
353
353
|
@search = new_search_object
|
354
354
|
|
355
355
|
@transaction_fields = (@search.fields + (c_fields.keys.map(&:to_s) - @search.fields))
|
@@ -383,11 +383,9 @@ module SimpleDrilldown
|
|
383
383
|
group = nil if group.empty?
|
384
384
|
|
385
385
|
joins = self.class.make_join([], c_target_class.name.underscore.to_sym, includes)
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
.order(order)
|
390
|
-
.to_a
|
386
|
+
row_query = c_target_class.unscoped.where(c_base_condition).select(select)
|
387
|
+
row_query = row_query.where(conditions) if conditions
|
388
|
+
rows = row_query.joins(joins).group(group).order(order).to_a
|
391
389
|
if rows.empty?
|
392
390
|
@result = { value: 'All', count: 0, row_count: 0, nodes: 0, rows: [] }
|
393
391
|
c_summary_fields.each { |f| @result[f] = 0 }
|
@@ -410,7 +408,7 @@ module SimpleDrilldown
|
|
410
408
|
end
|
411
409
|
|
412
410
|
populate_list(conditions, includes, @result, []) if @search.list
|
413
|
-
render template: '/
|
411
|
+
render template: '/simple_drilldown/index' if do_render
|
414
412
|
end
|
415
413
|
|
416
414
|
def choices
|
@@ -428,23 +426,23 @@ module SimpleDrilldown
|
|
428
426
|
end
|
429
427
|
|
430
428
|
def html_export
|
431
|
-
index(false)
|
432
|
-
render template: '/
|
429
|
+
index(do_render: false)
|
430
|
+
render template: '/simple_drilldown/html_export', layout: 'simple_drilldown/print'
|
433
431
|
end
|
434
432
|
|
435
433
|
def excel_export
|
436
|
-
index(false)
|
434
|
+
index(do_render: false)
|
437
435
|
respond_to do |format|
|
438
436
|
format.xlsx do
|
439
|
-
render xlsx: c_target_class.table_name, template: '
|
437
|
+
render xlsx: c_target_class.table_name, template: 'simple_drilldown/excel_export_xlsx'
|
440
438
|
end
|
441
439
|
format.xml do
|
442
440
|
set_excel_headers
|
443
441
|
if params.dig(:search, :list) == '1'
|
444
442
|
@records = get_records(@result)
|
445
|
-
render template: '
|
443
|
+
render template: 'simple_drilldown/excel_export_records', layout: false
|
446
444
|
else
|
447
|
-
render template: '
|
445
|
+
render template: 'simple_drilldown/excel_export', layout: false
|
448
446
|
end
|
449
447
|
end
|
450
448
|
end
|
@@ -460,7 +458,7 @@ module SimpleDrilldown
|
|
460
458
|
|
461
459
|
def set_excel_headers
|
462
460
|
headers['Content-Type'] = 'application/vnd.ms-excel'
|
463
|
-
headers['Content-Disposition'] = %
|
461
|
+
headers['Content-Disposition'] = %(attachment; filename="#{c_target_class.table_name}.xml")
|
464
462
|
headers['Cache-Control'] = ''
|
465
463
|
end
|
466
464
|
|
@@ -479,18 +477,16 @@ module SimpleDrilldown
|
|
479
477
|
removed_rows = 0
|
480
478
|
prev_row = nil
|
481
479
|
rows.each do |r|
|
482
|
-
if prev_row
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
prev_row[f] += r[f]
|
487
|
-
end
|
488
|
-
prev_row[:row_count] = [prev_row[:row_count], r[:row_count]].max
|
489
|
-
prev_row[:nodes] = [prev_row[:nodes], r[:nodes]].max
|
490
|
-
prev_row[:rows] += r[:rows] if prev_row[:rows] || r[:rows]
|
491
|
-
r[:value] = nil
|
492
|
-
removed_rows += r[:nodes]
|
480
|
+
if prev_row && (prev_row[:value] == r[:value])
|
481
|
+
prev_row[:count] += r[:count]
|
482
|
+
c_summary_fields.each do |f|
|
483
|
+
prev_row[f] += r[f]
|
493
484
|
end
|
485
|
+
prev_row[:row_count] = [prev_row[:row_count], r[:row_count]].max
|
486
|
+
prev_row[:nodes] = [prev_row[:nodes], r[:nodes]].max
|
487
|
+
prev_row[:rows] += r[:rows] if prev_row[:rows] || r[:rows]
|
488
|
+
r[:value] = nil
|
489
|
+
removed_rows += r[:nodes]
|
494
490
|
end
|
495
491
|
prev_row = r unless r[:value].nil?
|
496
492
|
end
|
@@ -507,7 +503,8 @@ module SimpleDrilldown
|
|
507
503
|
# Empty summary rows are needed to plot zero points in the charts
|
508
504
|
def add_zero_results(result_rows, dimension)
|
509
505
|
legal_values =
|
510
|
-
self.class.legal_values_for(@dimensions[dimension][:url_param_name],
|
506
|
+
self.class.legal_values_for(@dimensions[dimension][:url_param_name],
|
507
|
+
preserve_filter: true).call(@search).map { |lv| lv[1] }
|
511
508
|
legal_values.reverse! if @dimensions[dimension][:reverse]
|
512
509
|
current_values = result_rows.map { |r| r[:value] }.compact
|
513
510
|
empty_values = legal_values - current_values
|
@@ -603,7 +600,7 @@ module SimpleDrilldown
|
|
603
600
|
@dimensions.each do |d|
|
604
601
|
list_conditions_string << "#{' AND ' unless list_conditions_string.empty?}#{d[:select_expression]} = ?"
|
605
602
|
end
|
606
|
-
[list_conditions_string, *(conditions[1
|
603
|
+
[list_conditions_string, *(conditions[1..] + values)]
|
607
604
|
end
|
608
605
|
|
609
606
|
def get_records(tree)
|
@@ -9,7 +9,7 @@ module SimpleDrilldown
|
|
9
9
|
config.autoload_paths << File.dirname(__dir__)
|
10
10
|
|
11
11
|
initializer 'simple_drilldown.assets.precompile' do |app|
|
12
|
-
app.config.assets
|
12
|
+
app.config.try(:assets)&.precompile&.concat(%w[simple_drilldown/application.css chartkick.js])
|
13
13
|
end
|
14
14
|
|
15
15
|
ActionDispatch::Routing::Mapper.include SimpleDrilldown::Routing
|
@@ -23,8 +23,8 @@ module SimpleDrilldown
|
|
23
23
|
@search.title || @filter_text.blank? ? '' : "for #{@filter_text}"
|
24
24
|
end
|
25
25
|
|
26
|
-
def summary_row(result, parent_result = nil, dimension = 0, headers = [], new_row
|
27
|
-
html = render(partial: '/
|
26
|
+
def summary_row(result, parent_result = nil, dimension = 0, headers = [], new_row: true)
|
27
|
+
html = render(partial: '/simple_drilldown/summary_row', locals: {
|
28
28
|
result: result, parent_result: parent_result, new_row: new_row, dimension: dimension,
|
29
29
|
headers: headers, with_results: !result[:rows]
|
30
30
|
})
|
@@ -35,13 +35,13 @@ module SimpleDrilldown
|
|
35
35
|
}]
|
36
36
|
significant_rows = result[:rows].reject { |r| r[:row_count].zero? }
|
37
37
|
significant_rows.each_with_index do |r, i|
|
38
|
-
html << summary_row(r, result, dimension + 1, sub_headers, i.positive?)
|
38
|
+
html << summary_row(r, result, dimension + 1, sub_headers, new_row: i.positive?)
|
39
39
|
end
|
40
40
|
elsif @search.list
|
41
|
-
html << render(partial: '/
|
41
|
+
html << render(partial: '/simple_drilldown/record_list', locals: { result: result, dimension: dimension })
|
42
42
|
end
|
43
43
|
if dimension < @dimensions.size
|
44
|
-
html << render(partial: '/
|
44
|
+
html << render(partial: '/simple_drilldown/summary_total_row',
|
45
45
|
locals: {
|
46
46
|
result: result, parent_result: parent_result, headers: headers.dup, dimension: dimension
|
47
47
|
})
|
@@ -71,15 +71,15 @@ module SimpleDrilldown
|
|
71
71
|
xml << excel_summary_row(r, result, dimension + 1, sub_headers)
|
72
72
|
end
|
73
73
|
else
|
74
|
-
xml << render(partial: '/
|
74
|
+
xml << render(partial: '/simple_drilldown/excel_summary_row',
|
75
75
|
locals: { result: result, parent_result: parent_result, headers: headers.dup,
|
76
76
|
dimension: dimension })
|
77
77
|
|
78
|
-
xml << render(partial: '/
|
78
|
+
xml << render(partial: '/simple_drilldown/excel_record_list', locals: { result: result }) if @search.list
|
79
79
|
end
|
80
80
|
|
81
81
|
if dimension < @dimensions.size
|
82
|
-
xml << render(partial: '/
|
82
|
+
xml << render(partial: '/simple_drilldown/excel_summary_total_row', locals: {
|
83
83
|
result: result, headers: headers.dup, dimension: dimension
|
84
84
|
})
|
85
85
|
end
|
@@ -90,9 +90,9 @@ module SimpleDrilldown
|
|
90
90
|
|
91
91
|
def caption_txt
|
92
92
|
class_txt = controller.c_target_class &&
|
93
|
-
I18n.t(controller.c_target_class.name.
|
94
|
-
default: [controller.c_target_class.name.
|
95
|
-
controller.c_target_class.name.
|
93
|
+
I18n.t(controller.c_target_class.name.underscore.to_sym,
|
94
|
+
default: [controller.c_target_class.name.underscore.to_sym,
|
95
|
+
controller.c_target_class.name.titleize])
|
96
96
|
value_txt = I18n.t(@search.select_value.downcase, default: @search.select_value.to_s.titleize)
|
97
97
|
dimensions_txt = " by #{@dimensions.map { |d| d[:pretty_name] }.join(' and ')}" if @dimensions&.any?
|
98
98
|
"#{class_txt} #{value_txt}#{dimensions_txt}"
|
@@ -86,8 +86,8 @@ module SimpleDrilldown
|
|
86
86
|
list_change_times: list_change_times ? '1' : '0',
|
87
87
|
filter: filter,
|
88
88
|
dimensions: dimensions,
|
89
|
-
display_type: display_type
|
90
|
-
}
|
89
|
+
display_type: display_type
|
90
|
+
}
|
91
91
|
}
|
92
92
|
o[:search][:fields] = fields unless fields == @default_fields
|
93
93
|
o
|
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.
|
4
|
+
version: 0.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Uwe Kubosch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: caxlsx_rails
|
@@ -44,48 +44,20 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '6.1'
|
48
48
|
- - "<"
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version: '
|
50
|
+
version: '8'
|
51
51
|
type: :runtime
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
55
|
- - ">="
|
56
56
|
- !ruby/object:Gem::Version
|
57
|
-
version: '
|
57
|
+
version: '6.1'
|
58
58
|
- - "<"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: rubocop
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '1.1'
|
68
|
-
type: :development
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - "~>"
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: '1.1'
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: sqlite3
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
|
-
requirements:
|
79
|
-
- - ">="
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '0'
|
82
|
-
type: :development
|
83
|
-
prerelease: false
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
85
|
-
requirements:
|
86
|
-
- - ">="
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: '0'
|
60
|
+
version: '8'
|
89
61
|
description: simple_drilldown offers a simple way to define axis to filter and group
|
90
62
|
records for analysis.
|
91
63
|
email:
|
@@ -104,36 +76,36 @@ files:
|
|
104
76
|
- app/jobs/simple_drilldown/application_job.rb
|
105
77
|
- app/mailers/simple_drilldown/application_mailer.rb
|
106
78
|
- app/models/simple_drilldown/application_record.rb
|
107
|
-
- app/views/drilldown/_chart.html.erb
|
108
|
-
- app/views/drilldown/_excel_record_list_xlsx.xlsx.axlsx
|
109
|
-
- app/views/drilldown/_excel_row_header.builder
|
110
|
-
- app/views/drilldown/_excel_styles.builder
|
111
|
-
- app/views/drilldown/_excel_summary_row.builder
|
112
|
-
- app/views/drilldown/_excel_summary_row_xlsx.xlsx.axlsx
|
113
|
-
- app/views/drilldown/_excel_summary_total_row.builder
|
114
|
-
- app/views/drilldown/_excel_summary_total_row_xlsx.xlsx.axlsx
|
115
|
-
- app/views/drilldown/_export_links.html.erb
|
116
|
-
- app/views/drilldown/_field.html.erb
|
117
|
-
- app/views/drilldown/_fields.html.erb
|
118
|
-
- app/views/drilldown/_filter.html.erb
|
119
|
-
- app/views/drilldown/_record_list.html.erb
|
120
|
-
- app/views/drilldown/_row.html.erb
|
121
|
-
- app/views/drilldown/_row_header.html.erb
|
122
|
-
- app/views/drilldown/_summary_row.html.erb
|
123
|
-
- app/views/drilldown/_summary_table.html.erb
|
124
|
-
- app/views/drilldown/_summary_total_row.html.erb
|
125
|
-
- app/views/drilldown/_tab_buttons.html.erb
|
126
|
-
- app/views/drilldown/data_0.builder
|
127
|
-
- app/views/drilldown/data_1.builder
|
128
|
-
- app/views/drilldown/data_2.builder
|
129
|
-
- app/views/drilldown/data_3.builder
|
130
|
-
- app/views/drilldown/excel_export.builder
|
131
|
-
- app/views/drilldown/excel_export_records.builder
|
132
|
-
- app/views/drilldown/excel_export_xlsx.xlsx.axlsx
|
133
|
-
- app/views/drilldown/html_export.html.erb
|
134
|
-
- app/views/drilldown/index.html.erb
|
135
|
-
- app/views/drilldown/print.html.erb
|
136
79
|
- app/views/layouts/simple_drilldown/application.html.erb
|
80
|
+
- app/views/layouts/simple_drilldown/print.html.erb
|
81
|
+
- app/views/simple_drilldown/_chart.html.erb
|
82
|
+
- app/views/simple_drilldown/_excel_record_list_xlsx.xlsx.axlsx
|
83
|
+
- app/views/simple_drilldown/_excel_row_header.builder
|
84
|
+
- app/views/simple_drilldown/_excel_styles.builder
|
85
|
+
- app/views/simple_drilldown/_excel_summary_row.builder
|
86
|
+
- app/views/simple_drilldown/_excel_summary_row_xlsx.xlsx.axlsx
|
87
|
+
- app/views/simple_drilldown/_excel_summary_total_row.builder
|
88
|
+
- app/views/simple_drilldown/_excel_summary_total_row_xlsx.xlsx.axlsx
|
89
|
+
- app/views/simple_drilldown/_export_links.html.erb
|
90
|
+
- app/views/simple_drilldown/_field.html.erb
|
91
|
+
- app/views/simple_drilldown/_fields.html.erb
|
92
|
+
- app/views/simple_drilldown/_filter.html.erb
|
93
|
+
- app/views/simple_drilldown/_record_list.html.erb
|
94
|
+
- app/views/simple_drilldown/_row.html.erb
|
95
|
+
- app/views/simple_drilldown/_row_header.html.erb
|
96
|
+
- app/views/simple_drilldown/_summary_row.html.erb
|
97
|
+
- app/views/simple_drilldown/_summary_table.html.erb
|
98
|
+
- app/views/simple_drilldown/_summary_total_row.html.erb
|
99
|
+
- app/views/simple_drilldown/_tab_buttons.html.erb
|
100
|
+
- app/views/simple_drilldown/data_0.builder
|
101
|
+
- app/views/simple_drilldown/data_1.builder
|
102
|
+
- app/views/simple_drilldown/data_2.builder
|
103
|
+
- app/views/simple_drilldown/data_3.builder
|
104
|
+
- app/views/simple_drilldown/excel_export.builder
|
105
|
+
- app/views/simple_drilldown/excel_export_records.builder
|
106
|
+
- app/views/simple_drilldown/excel_export_xlsx.xlsx.axlsx
|
107
|
+
- app/views/simple_drilldown/html_export.html.erb
|
108
|
+
- app/views/simple_drilldown/index.html.erb
|
137
109
|
- config/locales/en.yml
|
138
110
|
- config/locales/nb.yml
|
139
111
|
- config/routes.rb
|
@@ -157,6 +129,7 @@ licenses:
|
|
157
129
|
- MIT
|
158
130
|
metadata:
|
159
131
|
allowed_push_host: https://rubygems.org/
|
132
|
+
rubygems_mfa_required: 'true'
|
160
133
|
post_install_message:
|
161
134
|
rdoc_options: []
|
162
135
|
require_paths:
|
@@ -165,14 +138,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
165
138
|
requirements:
|
166
139
|
- - ">="
|
167
140
|
- !ruby/object:Gem::Version
|
168
|
-
version: '2.
|
141
|
+
version: '2.6'
|
169
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
143
|
requirements:
|
171
144
|
- - ">="
|
172
145
|
- !ruby/object:Gem::Version
|
173
146
|
version: '0'
|
174
147
|
requirements: []
|
175
|
-
rubygems_version: 3.3.
|
148
|
+
rubygems_version: 3.3.7
|
176
149
|
signing_key:
|
177
150
|
specification_version: 4
|
178
151
|
summary: Simple data warehouse and drilldown.
|