paginated 1.0.7 → 1.0.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc3ad78511419953d52e6f0f45794b7ff5b11730cb5556dbecc64f9785d8a195
4
- data.tar.gz: 136abe2c808ba73b848c8ecf68b8033d573c9c3dd87e351fab13be3fd16a6659
3
+ metadata.gz: 198ac3104064417c27a8177a6000b4344999b26715857a79b05c67f112f8a6b3
4
+ data.tar.gz: 4e8b69b3de828f3a3295a7bfb638dd0c851ecb4e20f7d36d0cea406f1a7def46
5
5
  SHA512:
6
- metadata.gz: 6764684cb5a12b29b6ebd146bc7a5e8e77705b2d237c4dd60c553db1aa4461e5f9332fc56d30679bf97c3daf51e3f817a5bd60ea5a9c2523c5ae40cab112f656
7
- data.tar.gz: 6074be3b096999fe2379345aa17e6d69441af45ae471d453c32be5125e1d98b5eb6c7c3033324d8500e32680e6e66817dc303779c4e0ab23504efceb09de5ea3
6
+ metadata.gz: 51c867ec559e36bbadda8cf1f1d5658e840878a5a8d6d1670926e373457502e247698489a99841ce2f74637f6f25cd15b520bb00216cf98077d8f4a0b2b99c9f
7
+ data.tar.gz: 0a18ebb83509c2c3be91f6ce1d793548f954b9b692db560239d40a118340cf6908d8704ba8dc89c8244313f9e67ce37d6ef4458c22bd0ff596ab7d63ac3a40d0
data/README.md CHANGED
@@ -20,32 +20,42 @@ bundle
20
20
 
21
21
  Использование с помощью вызова метода-хелпера `paginated` и передачи в него необходимых опций.
22
22
 
23
+
24
+ Например:
25
+
26
+ ```
27
+ paginated model: User,
28
+ entity: UserEntity,
29
+ search: %w[email name|ilike role|custom.for_role]
30
+ ```
31
+
23
32
  Опции (с примерами):
24
33
 
25
- `model: 'User'` - название модели, записи которой нужно обработать.
34
+ `model: User` - модель, записи которой нужно обработать.
26
35
 
27
- `entity: 'UserEntity'` - название класса Grape Entity, который обработает каждую запись (передается вместо `fields`).
36
+ `entity: UserEntity` - класс Grape Entity, который обработает каждую запись (передается вместо `fields`).
28
37
 
29
- `fields: %i[...]` - список полей, которые должны присутствовать в списке записей (передается вместо `serializer`).
38
+ `scopes: proc {...}` - блок кода для применения
39
+
40
+ `fields: %i[...]` - список полей, которые должны присутствовать в списке записей (передается вместо `entity`).
30
41
 
31
42
  `search: %w[...]` - список полей, по которым должна осуществляться фильтрация (поиск).
32
43
 
33
- Например:
44
+ `spreadsheet: '[...]'` - список полей/колонок для формирования эл. таблицы, JSON в виде строки. Пример:
34
45
 
35
46
  ```
36
- paginated(
37
- model: 'User',
38
- fields: %i[
39
- email
40
- name
41
- ],
42
- search: %w[
43
- email
44
- name|ilike
45
- role|custom.for_role
46
- ]
47
- )
47
+ [
48
+ {
49
+ "column": "id",
50
+ "title": "ID"
51
+ },
52
+ {
53
+ "column": "name",
54
+ "title": "Название"
55
+ }
56
+ ]
48
57
  ```
58
+ При передаче `speadsheet` происходит формирование эл. таблицы в виде XLSX файла.
49
59
 
50
60
  ## Параметры HTTP запроса
51
61
 
@@ -24,6 +24,13 @@ module Grape
24
24
  end
25
25
 
26
26
  # требуемый список полей эл. таблицы
27
+ # формат:
28
+ # [
29
+ # {
30
+ # "column": "id",
31
+ # "title": "ID"
32
+ # }
33
+ # ]
27
34
  if params[:spreadsheet]
28
35
  opts[:spreadsheet_columns] = JSON.parse(params[:spreadsheet])
29
36
  end
@@ -34,12 +34,12 @@ module Spreadsheet
34
34
  worksheet.auto_width = true
35
35
 
36
36
  # заголовки
37
- worksheet.append_row(@spreadsheet_columns.values, bold)
37
+ worksheet.append_row(spreadsheet_titles, bold)
38
38
 
39
39
  # содержимое
40
- columns = @spreadsheet_columns.keys
40
+ cols = spreadsheet_columns
41
41
  records.each do |record|
42
- values = columns.map { |col| record.send(col) }
42
+ values = cols.map { |col| record.send(col) }
43
43
  worksheet.append_row(values)
44
44
  end
45
45
 
@@ -50,4 +50,12 @@ module Spreadsheet
50
50
  filepath
51
51
  end
52
52
 
53
+ def spreadsheet_titles
54
+ @spreadsheet_columns.map { |i| i['title'] }
55
+ end
56
+
57
+ def spreadsheet_columns
58
+ @spreadsheet_columns.map { |i| i['column'] }
59
+ end
60
+
53
61
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paginated
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Павел Бабин
@@ -93,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 2.5.0
96
+ version: 3.0.0
97
97
  required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - ">="