Class: Gloo::WebSvr::TableRenderer
- Inherits:
-
Object
- Object
- Gloo::WebSvr::TableRenderer
- Defined in:
- lib/gloo/web_svr/table_renderer.rb
Constant Summary collapse
- TABLE =
'table'.freeze
- THEAD =
'thead'.freeze
- HEAD_CELL =
'head_cell'.freeze
- ROW =
'row'.freeze
- CELL =
'cell'.freeze
Instance Method Summary collapse
-
#data_to_single_row_table(params) ⇒ Object
Show in single-row (form) format.
-
#data_to_table(params) ⇒ Object
Render the query result set to an HTML table.
-
#data_to_table_rows(params) ⇒ Object
Show in normal, multi-row format.
-
#initialize(engine) ⇒ TableRenderer
constructor
Set up the web server.
-
#render_cell(row, col, cols) ⇒ Object
Render a cell using the cell renderer and the given context data (the row’s values).
Constructor Details
#initialize(engine) ⇒ TableRenderer
Set up the web server.
24 25 26 27 |
# File 'lib/gloo/web_svr/table_renderer.rb', line 24 def initialize( engine ) @engine = engine @log = @engine.log end |
Instance Method Details
#data_to_single_row_table(params) ⇒ Object
Show in single-row (form) format.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/gloo/web_svr/table_renderer.rb', line 60 def data_to_single_row_table( params ) styles = params[ :styles ] str = "<table class='#{styles[ TABLE ]}'> <tbody>" row = params[ :rows ].first params[ :columns ].each do |head| next unless head[ :visible ] cell = row[ head[ :data_index ] ] if head[ :cell_renderer ] cell_value = render_cell( row, head, params[ :columns ] ) else cell_value = cell end str += "<tr class='#{styles[ ROW ]}'>" str += "<th style='#{styles[ HEAD_CELL ]}'>#{head[ :title ]}</th>" str += "<td style='#{styles[ CELL ]}'>#{cell_value}</td>" str += "</tr>" end str += "</tbody></table>" return str end |
#data_to_table(params) ⇒ Object
Render the query result set to an HTML table.
params = {
head: head,
cols: result[0],
rows: rows,
styles: self.styles,
cell_renderers: self.cell_renderers
}
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/gloo/web_svr/table_renderer.rb', line 45 def data_to_table params data = params[ :rows ] if data.nil? || ( data.length == 0 ) return "<p>No data found.</p>" elsif data.length == 1 return data_to_single_row_table( params ) else return data_to_table_rows( params ) end end |
#data_to_table_rows(params) ⇒ Object
Show in normal, multi-row format.
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/gloo/web_svr/table_renderer.rb', line 88 def data_to_table_rows( params ) styles = params[ :styles ] # headers = params[ :head ] str = "<table class='#{styles[ TABLE ]}'>" str << "<thead class='#{styles[ THEAD ]}'><tr>" params[ :columns ].each do |head| next unless head[ :visible ] str += "<th class='#{styles[ HEAD_CELL ]}'>#{head[ :title ]}</th>" end str << "</tr></thead><tbody>" params[ :rows ].each do |row| str += "<tr class='#{styles[ ROW ]}'>" # row.each_with_index do |cell, i| params[ :columns ].each do |head| next unless head[ :visible ] cell = row[ head[ :data_index ] ] this_col_name = head[ :name ] if head[ :cell_renderer ] cell_value = render_cell( row, head, params[ :columns ] ) else cell_value = cell end str += "<td style='#{styles[ CELL ]}'>#{cell_value}</td>" end str += "</tr>" end str += "</tbody></table>" return str end |
#render_cell(row, col, cols) ⇒ Object
Render a cell using the cell renderer and the given context data (the row’s values).
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/gloo/web_svr/table_renderer.rb', line 129 def render_cell row, col, cols params = {} cols.each_with_index do |c, i| params[ c[ :name ] ] = row[ c[ :data_index ] ] end content = col[ :cell_renderer ] content = @engine.running_app.obj..render content, params # renderer = ERB.new( col[ :cell_renderer ] ) # content = renderer.result_with_hash( params ) return content end |