easy_data_tables 0.3.0 → 0.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: 5627113db6291d15f2cd3c24e60d9f8fbdc4fd010fcb98fb78a41d4f583a353f
4
- data.tar.gz: be1c52504a7902993e9468e0a410354314e83789e0e306e3973c2f94f2fb215d
3
+ metadata.gz: 9834be732ee7e650cfdb78dd7fa98b56f27c47d52c337fd651e1395e74ed7bf2
4
+ data.tar.gz: 7fc26a6bc4c9bc6a207f966bb66f0693ca2a87347a16c17af304e80c4b72e9c9
5
5
  SHA512:
6
- metadata.gz: f8094df890508f7c882f8dda0908e4bc613fc55c7a0d803d2401c15630aec548c2dca733fb64eda4580d968037ee231b9c227de4a66a75dc490b0d11b6326544
7
- data.tar.gz: 4627da4b54eeadf845010a3965db6d00096f3afa5466ff2e5c344730b4d5a0a4a2efd65fdd870e688157d977af85cb6ddd21ab4c85379c2f7ddb970e093f11c0
6
+ metadata.gz: 804d0b118271e64ae2716bdbfaebdf79ab984153c6640888fc47baa1623211913727f631b31248a0530fa196e6c8342aa5a8f6d109dd9a22c9435665239a872c
7
+ data.tar.gz: 7ec14bdf6fc87f3f2ca391d16ac87ab9830f5cb95ab3ce3f8ca460d59d9ea391a5a8d79618896df7621036b58390f6803bedc8de0aa2487f7dd1654890615690
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- easy_data_tables (0.3.0)
4
+ easy_data_tables (0.3.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -26,6 +26,7 @@ Or install it yourself as:
26
26
 
27
27
  You will have a method available once you install this gem: `easy_data_table(columns, rows, grouping)` in order to expose it, you need to add `helper EasyDataTables::Engine.helpers` to your app's ApplicationController. You can call this helper method in any view and it will output a table with the data you provide.
28
28
 
29
+ ### Style
29
30
  In order to access the style of the application add:
30
31
  `@import "easy_data_tables/application";`
31
32
 
@@ -40,24 +41,29 @@ Columns are an array of hashes. There are three types of columns: 'normal', 'cus
40
41
  Normal column hashes accept the following keys:
41
42
 
42
43
  - **label**: string, default: '' => will inform the label of the column on the table
43
- - **type**: string, default: 'Integer', options: 'Integer', 'Currency', 'Percentage' => will inform the formating of the column
44
+ - **type**: string, default: 'Integer', options: 'Integer', 'Currency', 'Percentage', 'Date' => will inform the formating of the column
44
45
  - **default**: any, default: 0 => Will inform the default when a value is not found
45
46
  - **collection**: ActiveRecord::Relation, **required** => The data of the column (e.g. User.where(active: true)- -
46
47
  - **agregate_function**: Array of symbols OR symbol, **required** => aggregate function to run (e.g. [:average, :expense] OR :count)
47
48
  - **column_type**: string => will inform the type of column to use
49
+ - **date_format**: symbol, default: :default => Will inform the formating of the date
50
+
51
+ Custom column hashes accept the following keys:
48
52
 
49
- Custom column hashes accept the following keys:
50
53
  - **label**: string, default: '' => will inform the label of the column on the table
51
54
  - **values**: Hash, keys must coincide with the rows of the table, values are the content that will appear in each cell
52
55
  - **column_type**: string => must be '**custom**'
53
56
 
57
+ NB: A rendered template can be used here for each column (for example to have a form per column)
58
+
54
59
  Cobmbined column hashes accept the following keys:
55
60
 
56
61
  - **label**: string, default: '' => will inform the label of the column on the table
57
- - **type**: string, default: 'Integer', options: 'Integer', 'Currency', 'Percentage' => will inform the formating of the column
62
+ - **type**: string, default: 'Integer', options: 'Integer', 'Currency', 'Percentage', 'Date' => will inform the formating of the column
58
63
  - **columns**: Array, **required** => Will inform the columns to combine (e.g. ['expenditure', 'user_count'])
59
64
  - **method**: string, options: 'rate', 'substract', **required** => how to combine the columns to produce the data cell value
60
65
  - **column_type**: string, **must be set to 'combined'** => will inform the type of column to use
66
+ - **date_format**: symbol, default: :default => Will inform the formating of the date
61
67
 
62
68
  ### Rows
63
69
 
@@ -97,6 +103,11 @@ easy_data_table(
97
103
  columns: ['active_user_count', 'user_count'],
98
104
  method: 'rate',
99
105
  label: 'active_user_rate'
106
+ },
107
+ {
108
+ column_type: 'custom',
109
+ values: {"Premium" => '30 eur', 'Freemium' => '0 eur', 'Premium++' => '60 eur'}
110
+ label: 'monthly_cost'
100
111
  }
101
112
  ],
102
113
  User.all.pluck(:status).uniq,
@@ -106,11 +117,11 @@ easy_data_table(
106
117
  ```
107
118
  will generate a table that looks like this:
108
119
 
109
- | | User count | Active user count | Active user expense | Active User Rate |
110
- |------------|------------|-------------------|---------------------|------------------|
111
- | Premium | 10 | 8 | 90 $ | 80 % |
112
- | Freemium | 5 | 3 | 0 $ | 60 % |
113
- | Premium ++ | 3 | 1 | 150 $ | 33.33 % |
120
+ | | User count | Active user count | Active user expense | Active User Rate | Monthly Cost |
121
+ |------------|------------|-------------------|---------------------|------------------|---------------|
122
+ | Premium | 10 | 8 | 90 $ | 80 % | 30 eur |
123
+ | Freemium | 5 | 3 | 0 $ | 60 % | 0 eur |
124
+ | Premium ++ | 3 | 1 | 150 $ | 33.33 % | 60 eur |
114
125
 
115
126
  The table has the classes : "table" and "datatable"
116
127
 
@@ -128,6 +139,8 @@ en:
128
139
  active_user_expense_title: Sum of the expenses for the active users of each status
129
140
  active_user_rate: Active User Rate
130
141
  active_user_rate_title: % of active users over total users per status
142
+ monthly_cost: Monthly Cost
143
+ monthly_cost_title: Monthly Cost
131
144
  download_links:
132
145
  download_formated_csv: Download Formated CSV
133
146
  download_unformated_csv: Download Unformated CSV
@@ -163,5 +176,8 @@ The gem is available as open source under the terms of the [MIT License](https:/
163
176
  ### v 0.2.0
164
177
  - added possibility of downloading the table as a csv (both formated and unformated)
165
178
 
166
- ### v 0.2.0
167
- - added possibility of creating custom tables
179
+ ### v 0.3.0
180
+ - added possibility of creating custom columns
181
+
182
+ ### v 0.3.1
183
+ - added possibility of formating date columns
@@ -13,26 +13,40 @@ module EasyDataTables
13
13
  @collection = args[:collection]
14
14
  @grouping = args[:grouping]
15
15
  @agregate_function = args[:agregate_function]
16
+ @date_format = args[:date_format] || :default
16
17
  @values = construct_values
17
18
  end
18
19
 
19
20
  def formated_data_at(row)
20
- case @type
21
- when 'Integer'
22
- helpers.number_with_delimiter(data_at(row))
23
- when 'Percentage'
24
- helpers.number_to_percentage(data_at(row), precision: 2)
25
- when 'Currency'
26
- helpers.number_to_currency(data_at(row))
27
- else
28
- data_at(row)
29
- end
21
+ send(@type.downcase, row)
30
22
  end
31
23
 
32
24
  def data_at(row)
33
25
  @values[row]
34
26
  end
35
27
 
28
+ protected
29
+
30
+ def integer(row)
31
+ helpers.number_with_delimiter(data_at(row))
32
+ end
33
+
34
+ def percentage(row)
35
+ helpers.number_to_percentage(data_at(row), precision: 2)
36
+ end
37
+
38
+ def currency(row)
39
+ helpers.number_to_currency(data_at(row))
40
+ end
41
+
42
+ def date(row)
43
+ begin
44
+ I18n.l(data_at(row), format: @date_format)
45
+ rescue I18n::ArgumentError
46
+ data_at(row)
47
+ end
48
+ end
49
+
36
50
  private
37
51
 
38
52
  def construct_values
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EasyDataTables
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_data_tables
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pablo Curell
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-04 00:00:00.000000000 Z
11
+ date: 2021-06-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Create fast tables based on the models of your db
14
14
  email: