active_scaffold_export 3.5.0 → 3.6.0

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: 1016caf84c2b926ee4130076ce502c5a85a429713b3aa60972de0108448ba4bb
4
- data.tar.gz: 9fdc1b88b8b132ecb3ce0aed47c55d59b957e25b83eeceb0ad76859fbd600000
3
+ metadata.gz: 1b39cbb961c15eaa44301788a0fde3bdd54615acc8547d8c74604a5629f1768d
4
+ data.tar.gz: 62806e6733c7562294d7ef265be602e085e3bae56d0a6d4738e4336a21c340dd
5
5
  SHA512:
6
- metadata.gz: 24749e90d1ede408c8ce20e5655f3c3382b75ecab798205f548e3a381f4deda7414385757de2fe3a85360561de6c795acb0689b316536052d5870100ebebddb1
7
- data.tar.gz: 66b565ed253e044606779faed2e05d7f29e567f58c26ffa5111cb01996af9dc3b47802dd907a8eb24b4ec7a39d4454c23eb2653520372a928ca5bb37a0b83184
6
+ metadata.gz: 864b39ba6cb5855e0437b34dd211fb87e0317cc493c6e887ba7a6e523d1f48040e5e476cbeddf646a84de54846dcf43aa74879354f091d60758cbdd5180da756
7
+ data.tar.gz: 67f530f45b91f63eaa04bd31ad88022edf86e709caaf232bb96c57ab1f5f613e746ac08dc42a013b3dce3169a40c37ba78cbdc5062604751790f8abfc0a409f9
@@ -12,7 +12,7 @@
12
12
  csv << fcsv_options[:headers] unless params[:skip_header] == 'true'
13
13
  @records.each do |record|
14
14
  csv << @export_columns.collect { |column|
15
- get_export_column_value(record, column)
15
+ get_export_column_value(record, column, :csv)
16
16
  }
17
17
  end
18
18
  end
@@ -53,41 +53,42 @@ module ActiveScaffold::Actions
53
53
  Mime::Type.register "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", :xlsx
54
54
  end
55
55
 
56
- respond_to do |format|
57
- format.csv do
58
- response.headers['Content-type'] = 'text/csv'
59
- # start streaming output
60
- self.response_body = Enumerator.new do |y|
61
- find_items_for_export do |records|
62
- @records = records
63
- str = render_to_string :partial => 'export', :layout => false, :formats => [:csv]
64
- y << str
65
- params[:skip_header] = 'true' # skip header on the next run
66
- end
67
- end
56
+ respond_to_action(:export)
57
+ end
58
+
59
+ protected
60
+
61
+ def export_respond_to_csv
62
+ response.headers['Content-type'] = 'text/csv'
63
+ # start streaming output
64
+ self.response_body = Enumerator.new do |y|
65
+ find_items_for_export do |records|
66
+ @records = records
67
+ str = render_to_string :partial => 'export', :layout => false, :formats => [:csv]
68
+ y << str
69
+ params[:skip_header] = 'true' # skip header on the next run
68
70
  end
69
- format.xlsx do
70
- response.headers['Content-type'] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
71
- p = Axlsx::Package.new
72
- header = p.workbook.styles.add_style sz: 11, b: true,:bg_color => "69B5EF", :fg_color => "FF", alignment: { horizontal: :center }
73
- p.workbook.add_worksheet(name: active_scaffold_config.label) do |sheet|
74
- sheet.add_row(@export_columns.collect { |column| view_context.format_export_column_header_name(column) }, style: header) unless params[:skip_header]
75
- find_items_for_export do |records|
76
- records.each do |record|
77
- sheet.add_row @export_columns.collect { |column| view_context.get_export_column_value(record, column, false) }
78
- end
79
- end
80
- end
81
- stream = p.to_stream # when adding rows to sheet, they won't pass to this stream if declared before. axlsx issue?
82
- self.response_body = Enumerator.new do |y|
83
- y << stream.read
71
+ end
72
+ end
73
+
74
+ def export_respond_to_xlsx
75
+ response.headers['Content-type'] = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
76
+ pkg = Axlsx::Package.new
77
+ header = pkg.workbook.styles.add_style sz: 11, b: true,:bg_color => "69B5EF", :fg_color => "FF", alignment: { horizontal: :center }
78
+ pkg.workbook.add_worksheet(name: active_scaffold_config.label) do |sheet|
79
+ sheet.add_row(@export_columns.collect { |column| view_context.format_export_column_header_name(column) }, style: header) unless params[:skip_header]
80
+ find_items_for_export do |records|
81
+ records.each do |record|
82
+ sheet.add_row @export_columns.collect { |column| view_context.get_export_column_value(record, column, :xlsx) }
84
83
  end
85
84
  end
86
-
85
+ end
86
+ stream = pkg.to_stream # when adding rows to sheet, they won't pass to this stream if declared before. axlsx issue?
87
+ self.response_body = Enumerator.new do |y|
88
+ y << stream.read
87
89
  end
88
90
  end
89
91
 
90
- protected
91
92
  def export_columns
92
93
  return @export_columns if defined? @export_columns
93
94
  @export_columns = active_scaffold_config.export.columns.reject { |col| params[:export_columns][col.to_sym].nil? }
@@ -154,5 +155,9 @@ module ActiveScaffold::Actions
154
155
  export_authorized?
155
156
  end
156
157
 
158
+ def export_formats
159
+ active_scaffold_config.export.formats
160
+ end
161
+
157
162
  end
158
163
  end
@@ -4,6 +4,7 @@ module ActiveScaffold::Config
4
4
 
5
5
  def initialize(core_config)
6
6
  @core = core_config
7
+ @formats = [:csv, :xlsx]
7
8
  end
8
9
 
9
10
  # global level configuration
@@ -9,14 +9,14 @@ module ActiveScaffold
9
9
  # format_export_column(raw_value)
10
10
  # format_singular_association_export_column(association_record)
11
11
  # format_plural_association_export_column(association_records)
12
- def get_export_column_value(record, column, csv = true)
13
- if export_column_override? column
14
- send(export_column_override(column), record)
12
+ def get_export_column_value(record, column, format)
13
+ if (method = export_column_override(column))
14
+ send(method, record)
15
15
  else
16
16
  raw_value = record.send(column.name)
17
17
 
18
18
  if column.association.nil? or column_empty?(raw_value)
19
- csv ? format_export_column(raw_value) : raw_value # xlsx needs original data type
19
+ format_export_column(raw_value, format)
20
20
  elsif column.association
21
21
  if column.association.collection?
22
22
  format_plural_association_export_column(raw_value)
@@ -28,19 +28,16 @@ module ActiveScaffold
28
28
  end
29
29
 
30
30
  def export_column_override(column)
31
- "#{column.name.to_s.gsub('?', '')}_export_column" # parse out any question marks (see issue 227)
31
+ override_helper column, 'export_column'
32
32
  end
33
33
 
34
- def export_column_override?(column)
35
- respond_to?(export_column_override(column))
36
- end
37
-
38
- def format_export_column(raw_value)
39
- format_value_for_csv(raw_value)
34
+ def format_export_column(raw_value, format)
35
+ method = "format_value_for_#{format}"
36
+ respond_to?(method) ? send(method, raw_value) : raw_value
40
37
  end
41
38
 
42
39
  def format_value_for_csv(column_value)
43
- value = if column_empty?(column_value)
40
+ if column_empty?(column_value)
44
41
  active_scaffold_config.list.empty_field_text
45
42
  elsif column_value.is_a?(Time) || column_value.is_a?(Date)
46
43
  l(column_value, :format => :default)
@@ -14,7 +14,4 @@ ActiveScaffold::Config::Core.class_eval do
14
14
  :export_force_quotes, :export_default_full_download,
15
15
  :export_default_delimiter, :export_default_skip_header,
16
16
  :export_default_file_format, :export_xlsx_avaliable
17
-
18
- ActiveScaffold::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:show_export] = :get
19
- ActiveScaffold::Routing::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:export] = :post
20
17
  end
@@ -1,8 +1,14 @@
1
1
  module ActiveScaffoldExport
2
- #do not use module Rails... cause Rails.logger will fail
3
- # not sure if it is a must though...
4
- #module Rails
5
- class Engine < ::Rails::Engine
2
+ class Engine < ::Rails::Engine
3
+ initializer 'active_scaffold_export.routes' do
4
+ ActiveSupport.on_load :active_scaffold_routing do
5
+ self::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:show_export] = :get
6
+ self::ACTIVE_SCAFFOLD_CORE_ROUTING[:collection][:export] = :post
7
+ end
6
8
  end
7
- #end
9
+
10
+ initializer 'active_scaffold_sortable.extensions' do
11
+ require "active_scaffold_export/config/core.rb"
12
+ end
13
+ end
8
14
  end
@@ -1,7 +1,7 @@
1
1
  module ActiveScaffoldExport
2
2
  module Version
3
3
  MAJOR = 3
4
- MINOR = 5
4
+ MINOR = 6
5
5
  PATCH = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
@@ -4,9 +4,6 @@ ActiveScaffold rescue throw "should have included ActiveScaffold plug in first.
4
4
  require 'active_scaffold_export/engine'
5
5
  require 'active_scaffold_export/version'
6
6
 
7
- # Load our overrides
8
- require "active_scaffold_export/config/core.rb"
9
-
10
7
  module ActiveScaffoldExport
11
8
  def self.root
12
9
  File.dirname(__FILE__) + "/.."
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_scaffold_export
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0
4
+ version: 3.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Volker Hochstein
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-04-05 00:00:00.000000000 Z
13
+ date: 2024-04-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: active_scaffold
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: 3.6.0.pre
21
+ version: 3.7.1
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
- version: 3.6.0.pre
28
+ version: 3.7.1
29
29
  description: Exporting Records with ActiveScaffold
30
30
  email: activescaffold@googlegroups.com
31
31
  executables: []