usefull_table 1.0.4 → 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.
data/CHANGELOG.md CHANGED
@@ -7,9 +7,23 @@ ToDo
7
7
  - Add :if => Proc.new to condition column presence
8
8
 
9
9
  BugToFix
10
- - : link :name=> "pippo", body_type => icon, :url => "my_url" do not render default icons if not passed in yml
10
+ - link :name=> "pippo", body_type => icon, :url => "my_url" do not render default icons if not passed in yml
11
+ - Export: currency column must not be renderered as string
12
+ - Export: unable to find local view if namespace are used. If I call export from /production/orders/index.html
13
+ contrllers.paths has only /orders/index.xlsx.maker
14
+
15
+ 1.0.8 (September 5, 2013)
16
+ - Fixed Header Link localization, now localize association correctly
17
+
18
+ 1.0.7 (March 30, 2013)
19
+ - Fixed data_type => Date, Time, DateTime crash with blank/empty values
20
+
21
+ 1.0.6 (October 11, 2012)
22
+ - Added Percentage support to :data_field
23
+
24
+ 1.0.5
25
+ - If Currency column is nil, must output 0 currency formatted
11
26
 
12
- BugToFix
13
27
  1.0.2 (July 13, 2012)
14
28
  - Update to Rails 3.0.14
15
29
 
data/Gemfile CHANGED
@@ -3,8 +3,10 @@ source "http://rubygems.org"
3
3
  gem "rails", "~>3.0.14"
4
4
 
5
5
  group :development, :test do
6
- gem "acts_as_monitor", :path => "/home/www/gems/acts_as_monitor"
7
- gem "acts_as_xls", :path => "/home/www/gems/acts_as_xls"
6
+ #gem "acts_as_monitor", :path => "/home/www/gems/acts_as_monitor"
7
+ #gem "acts_as_xls", :path => "/home/www/gems/acts_as_xls"
8
+ gem "acts_as_monitor"
9
+ gem "acts_as_xls"
8
10
  gem "meta_search"
9
11
  gem "will_paginate"
10
12
  gem "ruby-debug"
data/README.rdoc CHANGED
@@ -1,6 +1,7 @@
1
1
  =UsefullTable
2
2
  table_for generate a full-optionals table, with excel export, columns ordering, links, inline editing and monitoring (ActsAsMonitor https://github.com/skylord73/acts_as_monitor)
3
- but don't warry because a rich set of defaults, make its use very simple!
3
+ but don't worry because a rich set of defaults, make its use very simple!
4
+
4
5
 
5
6
  for a working sample please refer to test/dummy
6
7
 
@@ -125,6 +126,7 @@ Render column value
125
126
  - :Time
126
127
  - :DateTime
127
128
  - :Currency
129
+ - :Percentage #transform float number in percentage with :precision => 0 ( 0.1 => 10%)
128
130
  - :Bool #Transform value in boolean
129
131
  - :Bool_reverse #Transform vale in boolean and reverse the vale
130
132
 
@@ -137,7 +139,8 @@ Render column value
137
139
  - true #enable inline editing for the column, works also with nested fields (no controller add-on required)
138
140
 
139
141
  ==label
140
- Render static label
142
+ - Render static label
143
+ - <% t.label Proc.new {|item| item.id * 3}, :label => "Id * 3" %>
141
144
 
142
145
  ===Usage
143
146
  <% t.label object %> #render object.inspect
@@ -230,4 +233,3 @@ Many thanks to :
230
233
  - WillPaginate
231
234
  - Spreadsheet
232
235
  - Axlsx
233
-
@@ -1,6 +1,6 @@
1
1
  module UsefullTable
2
2
  class TableController < ::ApplicationController
3
-
3
+
4
4
  def create
5
5
  usefull_table = HashWithIndifferentAccess.new(ActiveSupport::JSON.decode(params[:usefull_table]))
6
6
  #Rails::logger.info("MonitorsController back=#{usefull_table[:paths].inspect}")
@@ -12,13 +12,13 @@ module UsefullTable
12
12
  end
13
13
  @params = usefull_table[:params]
14
14
  end
15
-
15
+
16
16
  respond_to do |format|
17
17
  format.html
18
18
  format.xlsx { render :xlsx => "create", :template => select_path(usefull_table[:paths],"xlsx.maker") }
19
19
  end
20
20
  end
21
-
21
+
22
22
  def update
23
23
  #usefull_table = HashWithIndifferentAccess.new(ActiveSupport::JSON.decode(params[:usefull_table]))
24
24
  Rails::logger.info("TableController#update params=#{params.inspect}")
@@ -28,7 +28,6 @@ module UsefullTable
28
28
  render :text => CGI::escapeHTML(@item.send(params[:attribute_name]).to_s)
29
29
  end
30
30
  end
31
-
32
31
 
33
32
  end
34
33
  end
@@ -1,7 +1,7 @@
1
1
  module UsefullTableHelper
2
2
  #=UsefullTable
3
3
  #table_for generate a full-optionals table, with excel export, columns ordering, links, inline edit and monitoring (ActsAsMonitor gem)
4
- #but don't warry because of a rich set of defaults, make its use very simple
4
+ #but don't worry because of a rich set of defaults makes it very simple to use.
5
5
  #
6
6
  #==Setup
7
7
  #Add this line to your application's Gemfile:
@@ -55,7 +55,11 @@ module UsefullTableHelper
55
55
  # options[:export][:filter] = *true* | false _note:_ false if @search not present
56
56
  # options[:export][:human] = *true* | false
57
57
  # options[:export][:worksheet] = *object.class.name.gsub(/::/,"#")* _note:_ class name with namespace separator #
58
- # options[:export][:url] = custom url
58
+ # options[:export][:url] = custom url
59
+ # options[:export][:search] |= options[:export][:url] ? false : true
60
+ # If you have a custom url and force :search = true, you have to manage the deserialization of params[:usefull_table]
61
+ # see app/controllers/usefull_table/table_controller for a pratical example.
62
+ # the option is used to manage the filter params in custom url files
59
63
  #===Table
60
64
  # options[:table][:div_html] = *{:class => "usefull_table"}*
61
65
  # options[:table][:header_html] = *{:class => "first_row"}*
@@ -119,8 +123,8 @@ module UsefullTableHelper
119
123
  out << stylesheet_link_tag('usefull_table.css')
120
124
  out << content_tag(:div, options[:html]) do
121
125
  ext = ''
122
- ext << usefull_table_paginator_for(object, options[:paginator])
123
126
  ext << usefull_table_export_for(object,search,builder, options[:export])
127
+ ext << usefull_table_paginator_for(object, options[:paginator])
124
128
  ext << usefull_table_for(builder, object, search, options[:table])
125
129
  ext << usefull_table_paginator_for(object, options[:paginator])
126
130
  ext.html_safe
@@ -137,8 +141,12 @@ module UsefullTableHelper
137
141
  #
138
142
  #You can build a new table passing a block (see ::table_for
139
143
  def export_for(object, params = nil, &block)
140
- builder = UsefullTable::TableBuilder.new(object, nil, nil, self, :params => params, &block)
141
- builder.to_a
144
+ unless object.blank?
145
+ builder = UsefullTable::TableBuilder.new(object, nil, nil, self, :params => params, &block)
146
+ builder.to_a
147
+ else
148
+ []
149
+ end
142
150
  end
143
151
 
144
152
  #Draw inline edit field
@@ -236,6 +244,8 @@ module UsefullTableHelper
236
244
  end
237
245
  end
238
246
 
247
+ #Return the first valid path af an xlsx.maker
248
+ #if nil default is used.
239
249
  def select_path(paths, extension)
240
250
  Rails::logger.info("select_path @path=#{paths.inspect}\n\n")
241
251
  paths.delete_if {|path| !File.exists?(path)}
@@ -28,15 +28,4 @@ it:
28
28
 
29
29
  date:
30
30
  formats:
31
- usefull_table_date: "%d/%m/%Y"
32
-
33
- number:
34
- currency:
35
- format:
36
- format: "%n %u"
37
- unit: "€"
38
- separator: ","
39
- delimiter: "."
40
- precision: 2
41
- significant: false
42
- strip_insignificant_zeros: false
31
+ usefull_table_date: "%d/%m/%Y"
@@ -1,14 +1,21 @@
1
1
  /*Export*/
2
- div.usefull_table_export input[type='submit']{
3
- background: orange;
2
+
3
+ div.usefull_table_export {
4
+ background: gold;
4
5
  border-width: 1px;
5
6
  margin-top: 3px;
6
- margin-bottom: 3px;
7
+ margin-bottom: 3px;
8
+ top:35px;
9
+ right:300px
7
10
  }
8
11
 
12
+ div.usefull_table_export input[type='submit']{
13
+ background: orange;
14
+ }
15
+
9
16
  /*Paginator */
10
17
  div.usefull_table_paginator {
11
- width: 100%;
18
+ width: 99%;
12
19
  background: white;
13
20
  cursor: default;
14
21
  border: 2px solid #dddddd;
@@ -71,31 +78,43 @@ div.usefull_table_paginator {
71
78
  overflow: hidden; }
72
79
 
73
80
  /* Table*/
81
+ div.usefull_table {width:100%;overflow:auto;}
74
82
  div.usefull_table table {
75
83
  border-collapse:collapse;
76
84
  border-spacing:0;
77
85
  margin-bottom:1.4em;
78
86
  width:100%;}
87
+
88
+ div.usefull_table tbody {
89
+ width:100%;}
79
90
  div.usefull_table tbody tr.first_row {
80
- background:#C3D934;}
91
+ background:#C3D934;
92
+ font-weight:bold;}
81
93
  div.usefull_table tbody tr.odd {
82
94
  background-color: #FFFFFF;}
83
95
  div.usefull_table tbody tr.even {
84
96
  background-color: #E5ECF9;}
85
97
  div.usefull_table td, .usefull_table th {
98
+ text-align: center;
86
99
  padding:2px 4px;
87
- text-align:left;
88
100
  margin:0;
89
101
  vertical-align:middle;
90
102
  float:none !important;
91
- max-width:500px;
92
- border-collapse: collapse;}
93
- div.usefull_table th {
94
- font-weight:bold;
95
- border:0 none;}
103
+ max-width:400px;
104
+ border-collapse: collapse;
105
+ }
106
+ .min30{
107
+ min-width:30px !important;
108
+ }
109
+ .min75{
110
+ min-width:75px !important;
111
+ }
112
+
113
+ /*div.usefull_table th {
114
+ border:0 none;}*/
96
115
  div.usefull_table td {
97
116
  border-bottom:1px solid red;
98
117
  text-overflow:ellipsis;
99
118
  overflow:hidden;
100
119
  white-space:nowrap;
101
- font-weight:normal;}
120
+ font-weight:normal;}
@@ -10,6 +10,4 @@
10
10
  <% end -%>
11
11
  <%% end %>
12
12
 
13
-
14
-
15
13
  <%%= link_to 'New <%= human_name %>', new_<%= singular_table_name %>_path %>
@@ -9,11 +9,13 @@ module UsefullTable
9
9
  #[ {column1}, {column2} ...]
10
10
  #where {column} is an hash with the following options:
11
11
  #* {
12
- #* :nome => column name (ActiveRecord) int the form :column or "collection.column"
12
+ #* :nome => column name (ActiveRecord) in the form :column or "collection.column"
13
13
  #* :type => :column | :link
14
- #* :label => "wath you want" | column name if not specified
14
+ #* :label => "what you want" | column name if not specified
15
15
  #* :header_type => :sort | :plain | :human | :nil
16
- #* :body_type => :value (column value) | :plain (wathever you write as column name)
16
+ #* :body_type => :value (column value) | :plain (whatever you write as column name)
17
+ #* :td_html => html <td> tag attributes
18
+ #* }
17
19
  class TableBuilder
18
20
  DATE = [:date, :datetime]
19
21
  LINK = [:show, :edit, :destroy, :download, :link]
@@ -106,7 +108,9 @@ module UsefullTable
106
108
  #
107
109
  # :url => "static_path" or Proc #Proc expose the object instance of the current row
108
110
  #
109
- # :inline => true (default false) enable inline edit
111
+ # :inline => true (default false) enable inline edit
112
+ #
113
+ # :if => evaluate a Proc to show colum value or not
110
114
  #
111
115
  def col(attribute, *args)
112
116
  options = args.extract_options!
@@ -116,6 +120,8 @@ module UsefullTable
116
120
  options[:header_type] ||= options[:label].nil? ? :sort : :plain
117
121
  options[:body_type] ||= options[:url].blank? ? :value : :link
118
122
  options[:label] ||= attribute
123
+ options[:td_html] ||= ''
124
+ options[:wrap] ||= false
119
125
  @data << options
120
126
  end
121
127
 
@@ -245,7 +251,8 @@ module UsefullTable
245
251
  num = 1
246
252
  data.delete_if { |element| element[:method_name] == :link || element[:body].kind_of?(Proc)}
247
253
  data.each do |element|
248
- element[:url] = "/" if element[:url].present?
254
+ element[:url] = "/" if element[:url].present?
255
+ element.delete(:if)
249
256
  end if data.present?
250
257
  #Rails::logger.info("TableBuilder#_sanitize_data(fine) data=#{data.inspect}")
251
258
  data
@@ -266,10 +273,10 @@ module UsefullTable
266
273
  @options[:paginator] ||= {}
267
274
  @options[:paginator][:visible] = true if @options[:paginator][:visible].nil?
268
275
  @options[:paginator][:visible] = false if !@object.respond_to? :total_pages
269
- @options[:paginator][:class] = "usefull_table_paginator"
276
+ @options[:paginator][:class] = "usefull_table_paginator span-24"
270
277
 
271
278
  #Container
272
- @options[:html] ||= {:class => "usefull_table_container"}
279
+ @options[:html] ||= {:class => "usefull_table_container span-24"}
273
280
 
274
281
  #Excel
275
282
  @options[:export] ||= {}
@@ -279,13 +286,13 @@ module UsefullTable
279
286
  @options[:export][:human] = true if @options[:export][:human].nil?
280
287
  @options[:export][:worksheet] ||= @object.first.class.name.gsub(/::/,"#")
281
288
  #remove search options if custom url is passed
282
- @options[:export][:search] = @options[:export][:url] ? false : true
289
+ @options[:export][:search] |= @options[:export][:url] ? false : true
283
290
  @options[:export][:url] ||= @template.url_for(:action => "create", :controller => "usefull_table/table") + ".xlsx"
284
- @options[:export][:class] = "usefull_table_export"
291
+ @options[:export][:class] = "usefull_table_export span-24"
285
292
 
286
293
  #Table
287
294
  @options[:table] ||= {}
288
- @options[:table][:div_html] ||= {:class => "usefull_table"}
295
+ @options[:table][:div_html] ||= {:class => "usefull_table span-24"}
289
296
  @options[:table][:header_html] ||= {:class => "first_row"}
290
297
  #Ususally column_type is :sort, but is search is not present I cannot render a sort_link...
291
298
  @options[:table][:header_type] = :human if @search.nil?
@@ -320,7 +327,7 @@ module UsefullTable
320
327
  @data.each do |element|
321
328
  b = body(obj,element)
322
329
  row << b[:plain]
323
- @template.concat @template.content_tag(:td, b[:html])
330
+ @template.concat @template.content_tag(:td, b[:html],b[:td_html])
324
331
  end
325
332
  end
326
333
  @excel << row.compact
@@ -335,13 +342,21 @@ module UsefullTable
335
342
  case attribute[:header_type]
336
343
  when :sort then
337
344
  value = nestize(attribute)
338
- out_html = @template.sort_link(@search, value)
345
+ title = localize_title(attribute)
346
+ # out_html = @template.sort_link(@search, value)
347
+
348
+ # Set column Header default sorting to 'desc' (at the first click).
349
+ # If in the controller you specified a default filter for a column which already sets
350
+ # the default order to "desc", then the first click will sort by ascending order this time,
351
+ # only for that column/field.
352
+ out_html = @template.sort_link(@search, value, title, :default_order => :desc)
339
353
  out = value
340
354
  when :plain then
341
355
  out_html = out = attribute[:label] = localize(attribute[:label])
342
356
  when :human then
343
357
  #UserSession.log("TableHelper#h: object.first.class.human_attribute_name(#{attribute[:label]})")
344
358
  out_html = out = @object.first.class.human_attribute_name(attribute[:label].to_s.gsub(/\./,"_"))
359
+ #out_html = out = @object.first.class.human_attribute_name(attribute[:label])
345
360
  when :nil then
346
361
  out_html = out = ""
347
362
  else
@@ -357,7 +372,8 @@ module UsefullTable
357
372
  def body(obj, attribute)
358
373
  #Rails::logger.info("TableBuilder#body")
359
374
  out = ""
360
- out_html = ""
375
+ out_html = ""
376
+ if_value = attribute[:if].kind_of?(Proc) ? attribute[:if].call(obj) : true
361
377
  case attribute[:type]
362
378
  when :link then
363
379
  out_html = attribute_link(obj, attribute)
@@ -391,10 +407,22 @@ module UsefullTable
391
407
  end
392
408
  else
393
409
  out_html = out = I18n.t(:body_error, :scope => :usefull_table, :default => "Body Error")
394
- end
395
- {:html => out_html.to_s.html_safe, :plain => out}
410
+ end if if_value == true
411
+ {:html => out_html.to_s.html_safe, :plain => out, :td_html => attribute[:td_html]}
396
412
  end
397
413
 
414
+ #Localize attribute through associations
415
+ #association.association1.attribute => association1.klass.attribute
416
+ def localize_title(attribute)
417
+ associations = attribute[:name].to_s.split(".")
418
+ klass = @object.respond_to?(:klass) ? @object.klass : @object.class
419
+ while associations.size > 1
420
+ klass = klass.reflect_on_association(associations.shift.to_sym).klass
421
+ end
422
+ #ass= associations.shift
423
+ #klass = klass.reflect_on_association(ass).klass
424
+ klass.human_attribute_name(associations)
425
+ end
398
426
 
399
427
  #Localize if Symbol, print if String
400
428
  def localize(value)
@@ -418,13 +446,18 @@ module UsefullTable
418
446
  true_values = [1, true, "vero", "true", "yes", "si", "s"]
419
447
  case type
420
448
  when :Date then
421
- @template.l(attribute_value(obj,attribute[:name]), :format => :usefull_table_date)
449
+ #@template.l(attribute_value(obj,attribute[:name]), :format => :usefull_table_date)
450
+ l(attribute_value(obj,attribute[:name]), :format => :usefull_table_date)
422
451
  when :Time then
423
- @template.l(attribute_value(obj,attribute[:name]), :format => :usefull_table_time )
452
+ #@template.l(attribute_value(obj,attribute[:name]), :format => :usefull_table_time )
453
+ l(attribute_value(obj,attribute[:name]), :format => :usefull_table_time )
424
454
  when :DateTime then
425
- @template.l(attribute_value(obj,attribute[:name]), :format => :usefull_table_datetime)
455
+ #@template.l(attribute_value(obj,attribute[:name]), :format => :usefull_table_datetime)
456
+ l(attribute_value(obj,attribute[:name]), :format => :usefull_table_datetime)
426
457
  when :Currency then
427
- @template.number_to_currency(attribute_value(obj,attribute[:name]))
458
+ @template.number_to_currency(currency_attribute_value(obj,attribute[:name]))
459
+ when :Percentage then
460
+ @template.number_to_percentage(percentage_attribute_value(obj,attribute[:name]), :precision => 0)
428
461
  when :Bool then
429
462
  true_values.include?(attribute_value(obj,attribute[:name])) ? true : false
430
463
  when :Bool_reverse then
@@ -434,6 +467,11 @@ module UsefullTable
434
467
  end
435
468
  end
436
469
 
470
+ #Localize Times, Dates, etc.. and return "" if blank?
471
+ def l(value, *args)
472
+ value.blank? ? "" : @template.l(value, *args)
473
+ end
474
+
437
475
  #Return attribute value if defined blank otherwise
438
476
  def attribute_value(obj, attribute_name)
439
477
  #Rails::logger.info("TableBuilder#attribute_value obj=#{obj.inspect}, attribute=#{attribute_name.inspect}")
@@ -444,6 +482,17 @@ module UsefullTable
444
482
  end
445
483
  end
446
484
 
485
+ #return attribute value if defined, 0.0 otherwise
486
+ def currency_attribute_value(obj, attribute_name)
487
+ attribute_value(obj, attribute_name).blank? ? 0.0 : attribute_value(obj, attribute_name)
488
+ end
489
+
490
+ #return attribute value if defined, 0 otherwise
491
+ def percentage_attribute_value(obj, attribute_name)
492
+ attribute_value(obj, attribute_name).blank? ? 0.0 : attribute_value(obj, attribute_name) * 100
493
+ end
494
+
495
+
447
496
  #Render in_place_editor
448
497
  #
449
498
  #get Class and method name and send them to helper for rendering.
@@ -475,7 +524,7 @@ module UsefullTable
475
524
  #Render a red/green label
476
525
  def attribute_bool(value)
477
526
  name = value ? :ok : :ko
478
- @template.content_tag(:span, @template.image_tag(I18n.t(name, :scope => "usefull_table.icons", :defualt => "usefull_table_#{name.to_s}.png")), :align => :center )
527
+ @template.content_tag(:span, @template.image_tag(I18n.t(name, :scope => "usefull_table.icons", :default => "usefull_table_#{name.to_s}.png")), :align => :center )
479
528
  end
480
529
 
481
530
 
@@ -496,7 +545,7 @@ module UsefullTable
496
545
  icon_name = attribute[:body_type] == :icon ? @template.image_tag(I18n.t(attribute_name.to_s.underscore, :scope => "usefull_table.icons", :defualt => "usefull_table_#{attribute_name.to_s.underscore}.png") ): localize(attribute_name)
497
546
  @template.link_to(icon_name, url, attribute[:link_options])
498
547
  end
499
-
548
+
500
549
  #Return attribute Type
501
550
  #works evenif the attribute is nested : document.activity.data_prevista => :Date
502
551
  #Time object in Rails is a DateTime object, so it is renamed
@@ -1,3 +1,3 @@
1
1
  module UsefullTable
2
- VERSION = "1.0.4"
2
+ VERSION = "1.0.8"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usefull_table
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 4
10
- version: 1.0.4
9
+ - 8
10
+ version: 1.0.8
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andrea Bignozzi
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-07-13 00:00:00 Z
18
+ date: 2013-10-04 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement
@@ -29,12 +29,28 @@ dependencies:
29
29
  - 0
30
30
  - 14
31
31
  version: 3.0.14
32
- type: :runtime
33
- requirement: *id001
34
32
  prerelease: false
33
+ type: :runtime
35
34
  name: rails
35
+ requirement: *id001
36
36
  - !ruby/object:Gem::Dependency
37
37
  version_requirements: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - "="
41
+ - !ruby/object:Gem::Version
42
+ hash: 23
43
+ segments:
44
+ - 1
45
+ - 3
46
+ - 6
47
+ version: 1.3.6
48
+ prerelease: false
49
+ type: :runtime
50
+ name: axlsx
51
+ requirement: *id002
52
+ - !ruby/object:Gem::Dependency
53
+ version_requirements: &id003 !ruby/object:Gem::Requirement
38
54
  none: false
39
55
  requirements:
40
56
  - - ">="
@@ -43,10 +59,10 @@ dependencies:
43
59
  segments:
44
60
  - 0
45
61
  version: "0"
46
- type: :runtime
47
- requirement: *id002
48
62
  prerelease: false
63
+ type: :runtime
49
64
  name: acts_as_xls
65
+ requirement: *id003
50
66
  description: Table Helper with Excel export, inline editing and monitoring funxtions
51
67
  email:
52
68
  - skylord73@gmail.com
@@ -57,27 +73,27 @@ extensions: []
57
73
  extra_rdoc_files: []
58
74
 
59
75
  files:
60
- - app/views/usefull_table/table/create.xlsx.maker
61
- - app/helpers/usefull_table_helper.rb
62
76
  - app/controllers/usefull_table/table_controller.rb
63
- - lib/usefull_table.rb
77
+ - app/helpers/usefull_table_helper.rb
78
+ - app/views/usefull_table/table/create.xlsx.maker
64
79
  - lib/generators/usefull_table/install/install_generator.rb
65
- - lib/generators/usefull_table/install/templates/public/images/usefull_table_show.png
80
+ - lib/generators/usefull_table/install/templates/config/locales/usefull_table.it.yml
66
81
  - lib/generators/usefull_table/install/templates/public/images/usefull_table_destroy.png
82
+ - lib/generators/usefull_table/install/templates/public/images/usefull_table_download.png
67
83
  - lib/generators/usefull_table/install/templates/public/images/usefull_table_edit.png
68
- - lib/generators/usefull_table/install/templates/public/images/usefull_table_true.png
69
84
  - lib/generators/usefull_table/install/templates/public/images/usefull_table_false.png
70
- - lib/generators/usefull_table/install/templates/public/images/usefull_table_download.png
85
+ - lib/generators/usefull_table/install/templates/public/images/usefull_table_show.png
86
+ - lib/generators/usefull_table/install/templates/public/images/usefull_table_true.png
71
87
  - lib/generators/usefull_table/install/templates/public/stylesheets/usefull_table.css
72
- - lib/generators/usefull_table/install/templates/config/locales/usefull_table.it.yml
73
- - lib/generators/usefull_table/scaffold/templates/lib/templates/rails/scaffold_controller/controller.rb
74
- - lib/generators/usefull_table/scaffold/templates/lib/templates/erb/scaffold/show.html.erb
75
- - lib/generators/usefull_table/scaffold/templates/lib/templates/erb/scaffold/index.html.erb
76
88
  - lib/generators/usefull_table/scaffold/scaffold_generator.rb
89
+ - lib/generators/usefull_table/scaffold/templates/lib/templates/erb/scaffold/index.html.erb
90
+ - lib/generators/usefull_table/scaffold/templates/lib/templates/erb/scaffold/show.html.erb
91
+ - lib/generators/usefull_table/scaffold/templates/lib/templates/rails/scaffold_controller/controller.rb
77
92
  - lib/usefull_table/engine.rb
78
- - lib/usefull_table/table_builder.rb
79
93
  - lib/usefull_table/exceptions.rb
94
+ - lib/usefull_table/table_builder.rb
80
95
  - lib/usefull_table/version.rb
96
+ - lib/usefull_table.rb
81
97
  - config/routes.rb
82
98
  - MIT-LICENSE
83
99
  - Rakefile