simple_drilldown 0.10.2 → 0.12.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 +4 -4
- data/README.md +6 -2
- data/app/views/drilldown/_chart.html.erb +2 -2
- data/app/views/drilldown/index.html.erb +3 -2
- data/lib/generators/{drilldown_controller → simple_drilldown/controller}/USAGE +1 -1
- data/lib/generators/simple_drilldown/controller/controller_generator.rb +13 -0
- data/lib/generators/{drilldown_controller → simple_drilldown/controller}/templates/drilldown_controller.rb.erb +2 -1
- data/lib/generators/{drilldown_controller → simple_drilldown/controller}/templates/drilldown_controller_test.rb.erb +0 -0
- data/lib/generators/simple_drilldown/views/USAGE +9 -0
- data/lib/generators/simple_drilldown/views/views_generator.rb +11 -0
- data/lib/simple_drilldown/controller.rb +7 -7
- data/lib/simple_drilldown/helper.rb +7 -3
- data/lib/simple_drilldown/version.rb +1 -1
- metadata +13 -11
- data/lib/generators/drilldown_controller/drilldown_controller_generator.rb +0 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 88e7498fba4f1e8b9d25a98861c8ceb5d6b38c7b986c31e8850edf513e832ad9
|
|
4
|
+
data.tar.gz: 6fc5db5c12c5e81833343ffdace9c3e94711393b33b1c8ae43c8c6b0d36c212c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: be393d70922fcbed0111f2f2160477db1b4020bce4ba7643617564bdd13fd22416088857e1c61fda841a36f453b909e5e17d1215b6fafc5658c0ae3207f11fa4
|
|
7
|
+
data.tar.gz: ea0f6996e1bad25de17e3e671b32cc9c0b90bb368fbdf48f8576e417413f37b4c8db147c27026bf5804530462b2ae3ecb84fc7b047da77f7573065ea09efbbf3
|
data/README.md
CHANGED
|
@@ -66,7 +66,7 @@ end
|
|
|
66
66
|
Create a new controller to focus on posts. Each drilldown controller focuses on
|
|
67
67
|
one main entity.
|
|
68
68
|
|
|
69
|
-
bin/rails g
|
|
69
|
+
bin/rails g simple_drilldown:controller User
|
|
70
70
|
|
|
71
71
|
```ruby
|
|
72
72
|
class PostsDrilldownController < DrilldownController
|
|
@@ -115,8 +115,12 @@ results.
|
|
|
115
115
|
|
|
116
116
|
### Views
|
|
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/drilldown` directory.
|
|
121
|
+
If you would like a local copy of the views for overriding you can use the generator.
|
|
122
|
+
|
|
123
|
+
bin/rails g simple_drilldown:views
|
|
120
124
|
|
|
121
125
|
|
|
122
126
|
## Excel export
|
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
options << [@dimensions[i][:pretty_name], @dimensions[i][:url_param_name]] if @dimensions[i]
|
|
42
42
|
options += @remaining_dimensions.keys.map { |name| [controller.c_dimension_defs[name][:pretty_name], name] } %>
|
|
43
43
|
<%= t(i == 0 ? :group_by : :then_by) %>:
|
|
44
|
-
<%= form.select 'dimensions', options, { :selected => @search.dimensions && @search.dimensions[i] },
|
|
44
|
+
<%= form.select 'dimensions', options.sort, { :selected => @search.dimensions && @search.dimensions[i] },
|
|
45
45
|
{ onChange: 'form.submit()', name: 'search[dimensions][]', id: "search_dimensions_#{i}" } %>
|
|
46
46
|
<% end %>
|
|
47
47
|
|
|
48
48
|
<br/>
|
|
49
|
-
<%= t :chart_type
|
|
49
|
+
<%= t :chart_type %>:
|
|
50
50
|
<%= form.radio_button 'display_type', SimpleDrilldown::Search::DisplayType::BAR, { :onChange => 'form.submit()' } %>
|
|
51
51
|
<%= form.label :display_type_bar, t(:bar) %>
|
|
52
52
|
<%= form.radio_button 'display_type', SimpleDrilldown::Search::DisplayType::PIE, { :disabled => @search.dimensions.size >= 2, :onChange => 'form.submit()' } %>
|
|
@@ -17,8 +17,9 @@
|
|
|
17
17
|
<div class="col-md-3" valign="top">
|
|
18
18
|
<ul class="nav nav-tabs">
|
|
19
19
|
<li class="nav-item">
|
|
20
|
-
<a id="filter-tab" class="nav-link active" data-target="#filter" data-toggle="tab"><%= t :filter %></a></li>
|
|
21
|
-
<li
|
|
20
|
+
<a id="filter-tab" class="nav-link active" data-target="#filter" data-toggle="tab" data-bs-toggle="tab" data-bs-target="#filter"><%= t :filter %></a></li>
|
|
21
|
+
<li class="nav-item">
|
|
22
|
+
<a id="fields-tab" class="nav-link" data-target="#fields" data-toggle="tab" data-bs-toggle="tab" data-bs-target="#fields"><%= t :fields %></a>
|
|
22
23
|
</li>
|
|
23
24
|
</ul>
|
|
24
25
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SimpleDrilldown
|
|
4
|
+
class ControllerGenerator < Rails::Generators::NamedBase
|
|
5
|
+
source_root File.expand_path('templates', __dir__)
|
|
6
|
+
|
|
7
|
+
def copy_drilldown_controller_file
|
|
8
|
+
template 'drilldown_controller.rb.erb', "app/controllers/#{file_name}_drilldown_controller.rb"
|
|
9
|
+
template 'drilldown_controller_test.rb.erb', "test/controllers/#{file_name}_drilldown_controller_test.rb"
|
|
10
|
+
route "draw_drilldown :#{singular_name}"
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -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
|
|
|
File without changes
|
|
@@ -135,7 +135,9 @@ module SimpleDrilldown
|
|
|
135
135
|
interval: interval,
|
|
136
136
|
label_method: label_method,
|
|
137
137
|
legal_values: legal_values,
|
|
138
|
-
pretty_name: I18n.t(
|
|
138
|
+
pretty_name: I18n.t(:"drilldown.dimension.#{name}",
|
|
139
|
+
default: [:"drilldown.#{name}", :"activerecord.models.#{name}", name.to_sym,
|
|
140
|
+
name.to_s.titleize]),
|
|
139
141
|
queries: queries,
|
|
140
142
|
reverse: reverse,
|
|
141
143
|
select_expression:
|
|
@@ -268,7 +270,7 @@ module SimpleDrilldown
|
|
|
268
270
|
sql = +"LEFT JOIN #{include_table} #{include_alias} ON #{include_alias}.#{fk_col} = #{model_table}.id"
|
|
269
271
|
sql << " AND #{include_alias}.deleted_at IS NULL" if ass.klass.paranoid?
|
|
270
272
|
if ass.scope && (base_ass_order = ScopeHolder.new(ass.scope).to_s)
|
|
271
|
-
/^(?<ass_order
|
|
273
|
+
/^(?<ass_order>.*?)(?<ass_order_desc>\s+DESC)?$/i =~ base_ass_order
|
|
272
274
|
ass_order_prefixed = ass_order.dup
|
|
273
275
|
ActiveRecord::Base.connection.columns(include_table).map(&:name).each do |cname|
|
|
274
276
|
ass_order_prefixed.gsub!(/\b#{cname}\b/, "#{include_alias}.#{cname}")
|
|
@@ -381,11 +383,9 @@ module SimpleDrilldown
|
|
|
381
383
|
group = nil if group.empty?
|
|
382
384
|
|
|
383
385
|
joins = self.class.make_join([], c_target_class.name.underscore.to_sym, includes)
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
.order(order)
|
|
388
|
-
.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
|
|
389
389
|
if rows.empty?
|
|
390
390
|
@result = { value: 'All', count: 0, row_count: 0, nodes: 0, rows: [] }
|
|
391
391
|
c_summary_fields.each { |f| @result[f] = 0 }
|
|
@@ -89,9 +89,13 @@ module SimpleDrilldown
|
|
|
89
89
|
private
|
|
90
90
|
|
|
91
91
|
def caption_txt
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
class_txt = controller.c_target_class &&
|
|
93
|
+
I18n.t(controller.c_target_class.name.pluralize.to_sym,
|
|
94
|
+
default: [controller.c_target_class.name.downcase.pluralize.to_sym,
|
|
95
|
+
controller.c_target_class.name.pluralize])
|
|
96
|
+
value_txt = I18n.t(@search.select_value.downcase, default: @search.select_value.to_s.titleize)
|
|
97
|
+
dimensions_txt = " by #{@dimensions.map { |d| d[:pretty_name] }.join(' and ')}" if @dimensions&.any?
|
|
98
|
+
"#{class_txt} #{value_txt}#{dimensions_txt}"
|
|
95
99
|
end
|
|
96
100
|
end
|
|
97
101
|
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.
|
|
4
|
+
version: 0.12.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Uwe Kubosch
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-06-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: caxlsx_rails
|
|
@@ -44,20 +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: '
|
|
60
|
+
version: '8'
|
|
61
61
|
- !ruby/object:Gem::Dependency
|
|
62
62
|
name: rubocop
|
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -137,10 +137,12 @@ files:
|
|
|
137
137
|
- config/locales/en.yml
|
|
138
138
|
- config/locales/nb.yml
|
|
139
139
|
- config/routes.rb
|
|
140
|
-
- lib/generators/
|
|
141
|
-
- lib/generators/
|
|
142
|
-
- lib/generators/
|
|
143
|
-
- lib/generators/
|
|
140
|
+
- lib/generators/simple_drilldown/controller/USAGE
|
|
141
|
+
- lib/generators/simple_drilldown/controller/controller_generator.rb
|
|
142
|
+
- lib/generators/simple_drilldown/controller/templates/drilldown_controller.rb.erb
|
|
143
|
+
- lib/generators/simple_drilldown/controller/templates/drilldown_controller_test.rb.erb
|
|
144
|
+
- lib/generators/simple_drilldown/views/USAGE
|
|
145
|
+
- lib/generators/simple_drilldown/views/views_generator.rb
|
|
144
146
|
- lib/simple_drilldown.rb
|
|
145
147
|
- lib/simple_drilldown/changes.rb
|
|
146
148
|
- lib/simple_drilldown/controller.rb
|
|
@@ -170,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
170
172
|
- !ruby/object:Gem::Version
|
|
171
173
|
version: '0'
|
|
172
174
|
requirements: []
|
|
173
|
-
rubygems_version: 3.
|
|
175
|
+
rubygems_version: 3.3.7
|
|
174
176
|
signing_key:
|
|
175
177
|
specification_version: 4
|
|
176
178
|
summary: Simple data warehouse and drilldown.
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
class DrilldownControllerGenerator < Rails::Generators::NamedBase
|
|
4
|
-
source_root File.expand_path('templates', __dir__)
|
|
5
|
-
|
|
6
|
-
def copy_drilldown_controller_file
|
|
7
|
-
template 'drilldown_controller.rb.erb', "app/controllers/#{file_name}_drilldown_controller.rb"
|
|
8
|
-
template 'drilldown_controller_test.rb.erb', "test/controllers/#{file_name}_drilldown_controller_test.rb"
|
|
9
|
-
route "draw_drilldown :#{singular_name}"
|
|
10
|
-
end
|
|
11
|
-
end
|