lib/voom/presenters/helpers/rails/model_table.rb in voom-presenters-0.1.13 vs lib/voom/presenters/helpers/rails/model_table.rb in voom-presenters-0.2.0
- old
+ new
@@ -3,39 +3,47 @@
module Helpers
module Rails
module ModelTable
# Build a a table from a Rails model
def table_for(query_,
- empty_icon: nil,
+ empty_icon: 'far fa-folder-open fa-rotate-180',
except: [:id, :created_at, :updated_at],
+ timezone: nil, # The timezone to covnert _at and _on values
selectable: false, &block)
row1 = query_.first
if row1
__columns__ = row1.class.columns
table selectable: selectable do
_table_header_(__columns__, except)
query_.each do |item_|
row do
- _table_row_(__columns__, block, except, item_)
+ _table_row_(__columns__, block, except, item_, timezone: timezone)
end
end
end
else
- body "You have no #{query_.arel_table.name.pluralize}", level: 2
- icon empty_icon, size: '10rem' if empty_icon
+ icon empty_icon, size: '6rem' if empty_icon
+ body "You have no #{query_.arel_table.name.pluralize.humanize}"
end
end
private
- def _table_row_(__columns__, block, except, item_)
+ def _table_row_(__columns__, block, except, item_, timezone: nil)
__columns__.each do |col|
next if except.include?(col.name.to_sym)
- column item_.send(col.name.to_sym) do
+ value = format_value(col.name,item_.send(col.name.to_sym), timezone: timezone)
+ column value do
self.instance_exec(item_, col.name.to_sym, &block) if block
end
end
+ end
+
+ def format_value(col_name, value, timezone:)
+ return format_time_long(value, timezone: timezone) if timezone &&
+ col_name.ends_with?('_at') || col_name.ends_with?('_on')
+ value
end
def _table_header_(__columns__, except)
header do
__columns__.each do |col|
\ No newline at end of file