grape-listing 1.1.2.1 → 1.1.3.1

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: eeef22bceb680d605aec7a5f8e6e2b2a7f025c76d532528379edc8b9ca9a18bc
4
- data.tar.gz: 5836c64839d39ff0376cea000ead78da7735a07ed9c0301b219ced83b1fd783a
3
+ metadata.gz: df43f38058e07a439caa2da68253d606fe76835de2a4de02e427ea16d5cc7952
4
+ data.tar.gz: 97fe79b8e410b1925837f5f26d1c458d53ae18205b46d00bb7664f8a0e5ad634
5
5
  SHA512:
6
- metadata.gz: 2c72f1641ffeb36e8bcd3ae1b17ddbeed9e03a792aad7a4596486f17d50de4326b089a7edcc8b1c547bc01068d9235c2d2bf78b2c11b9129fe6a7e6d560c7168
7
- data.tar.gz: 37ee5594dfd0aa6ab07bd6e40bfa4ba372b594bb6183e13e5cf6deb79a7f969e43f89550314967daed2ac2cfb89997ced018917a1f696d2661110ebd4ea46b6f
6
+ metadata.gz: 697c2a08f77c8f16e33c0d11813536ed0e4e18e143a13e8e32d1e9d08d3f4ac29b335c71ad179a8c1fe90a0265b3bf22061560f4063b420bda5550f59449e70a
7
+ data.tar.gz: b85cd8a772356e7446a57770e71969578386f68c205c52ef410feb7d2b99ac1ae9f28d27e1ddcdf7ed6caa7a383eeff70a0ed099070c59bc33480871ae4311ce
data/README.md CHANGED
@@ -21,7 +21,6 @@ bundle
21
21
 
22
22
  Использование с помощью вызова метода-хелпера `listing` и передачи в него необходимых опций.
23
23
 
24
-
25
24
  Например:
26
25
 
27
26
  ```
@@ -69,9 +68,9 @@ end
69
68
 
70
69
  ### Формирование эл. таблиц
71
70
 
72
- При передаче параметра `spreadsheet=true` происходит формирование эл. таблицы в виде XLSX файла с учетом всех остальных переданных параметров. Параметр `columns` при этом является обязательным.
71
+ При передаче параметра `spreadsheet=true` происходит формирование эл. таблицы в виде XLSX файла с учетом всех остальных переданных параметров.
73
72
 
74
- Заголовки эл. таблицы будут взяты из описаний полей таблицы БД с соответствующими названиями. Значения будут сформированы путем обработки переданного списка колонок как методов.
73
+ Заголовки эл. таблицы будут взяты из описаний полей таблицы БД с соответствующими названиями или описаний полей Grape Entity.
75
74
 
76
75
  ## Конфигурация
77
76
 
data/lib/grape_listing.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'extensions/object'
2
1
  require 'grape/dsl'
3
2
  require 'grape_listing/configuration'
4
3
  require 'grape_listing_service'
@@ -17,7 +17,7 @@ module GrapeListing
17
17
 
18
18
  def paginate
19
19
  # коллекция записей ActiveRecord для применения аггрегирования
20
- list = @objects || @model.unscoped.merge(@scopes)
20
+ list = @objects || @model.merge(@scopes)
21
21
 
22
22
  # применение сортировки и пагинации к коллекции записей
23
23
  @objects = list.offset(@offset).merge(sort_proc).limit(@limit)
@@ -6,7 +6,7 @@ module GrapeListing
6
6
  def search
7
7
  @search_fields&.each do |field|
8
8
  # коллекция записей для дальнейшей фильтрации
9
- list = @objects || @model.unscoped.merge(@scopes)
9
+ list = @objects || @model.merge(@scopes)
10
10
 
11
11
  # оператор и значение для поиска
12
12
  operator, value = search_operands(field)
@@ -4,13 +4,11 @@ module GrapeListing
4
4
  module Spreadsheet
5
5
 
6
6
  def spreadsheet
7
- @spreadsheet_cols = @params['columns'].map(&:to_sym)
8
-
9
7
  # поиск и фильтрация
10
8
  search
11
9
 
12
10
  # коллекция записей ActiveRecord для формирования эл. таблицы
13
- records = @objects || @model.unscoped.merge(@scopes)
11
+ records = @objects || @model.merge(@scopes)
14
12
 
15
13
  # ограничение записей
16
14
  records = records.order(:id).offset(@offset).limit(@limit)
@@ -46,7 +44,7 @@ module GrapeListing
46
44
 
47
45
  # содержимое
48
46
  objects.each do |object|
49
- values = object.slice(*@spreadsheet_cols).values
47
+ values = object.slice(*spreadsheet_cols).values
50
48
  worksheet.append_row(values)
51
49
  end
52
50
 
@@ -57,14 +55,31 @@ module GrapeListing
57
55
  filepath
58
56
  end
59
57
 
58
+ def grape_entity_columns
59
+ @grape_entity.root_exposures.map do |exposure|
60
+ unless exposure.key == :deleted_at
61
+ exposure.key
62
+ end
63
+ end.compact
64
+ end
65
+
66
+ def spreadsheet_cols
67
+ @spreadsheet_cols ||=
68
+ if @params['columns'].to_a.any?
69
+ grape_entity_columns & @params['columns'].map(&:to_sym)
70
+ else
71
+ grape_entity_columns
72
+ end
73
+ end
74
+
60
75
  def spreadsheet_titles
61
76
  values = []
62
77
  entity_doc = @grape_entity.documentation
63
- model_cols = @model.columns.to_h { |i| [i.name.to_sym, i] }
78
+ model_cols = @model.columns_hash
64
79
 
65
- @spreadsheet_cols.each do |column|
80
+ spreadsheet_cols.each do |column|
66
81
  # поиск описания среди комментариев к таблице БД
67
- db_col = model_cols[column]
82
+ db_col = model_cols[column.to_s]
68
83
  if db_col&.comment&.present?
69
84
  values << db_col.comment
70
85
  next
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-listing
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2.1
4
+ version: 1.1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Павел Бабин
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-11 00:00:00.000000000 Z
11
+ date: 2024-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -101,7 +101,6 @@ extensions: []
101
101
  extra_rdoc_files: []
102
102
  files:
103
103
  - README.md
104
- - lib/extensions/object.rb
105
104
  - lib/grape-listing.rb
106
105
  - lib/grape/dsl.rb
107
106
  - lib/grape_listing.rb
@@ -133,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
132
  - !ruby/object:Gem::Version
134
133
  version: '0'
135
134
  requirements: []
136
- rubygems_version: 3.4.10
135
+ rubygems_version: 3.0.6
137
136
  signing_key:
138
137
  specification_version: 4
139
138
  summary: Формирование списков записей для API на базе Grape
@@ -1,7 +0,0 @@
1
- class Object
2
-
3
- def send_chain(arr)
4
- Array(arr).inject(self) { |o, a| o.send(*a) }
5
- end
6
-
7
- end