webmcp
annotate framework/env/ui_deprecated/list.lua @ 29:0b7e87f2dc91
add trace.debug_traceback() function
It inserts a traceback into the trace debug log. Usefull on development of unknown code.
It inserts a traceback into the trace debug log. Usefull on development of unknown code.
| author | Daniel Poelzleithner <poelzi@poelzi.org> | 
|---|---|
| date | Mon Sep 20 15:29:23 2010 +0200 (2010-09-20) | 
| parents | 9fdfb27f8e67 | 
| children | 
| rev | line source | 
|---|---|
| jbe/bsw@0 | 1 -- | 
| jbe/bsw@0 | 2 -- Creates a list view of a collection | 
| jbe/bsw@0 | 3 -- | 
| jbe/bsw@0 | 4 -- Example: | 
| jbe/bsw@0 | 5 -- | 
| jbe/bsw@0 | 6 -- ui_deprecated.list({ | 
| jbe/bsw@0 | 7 -- label = 'Point table', | 
| jbe/bsw@0 | 8 -- collection = mycollection, | 
| jbe/bsw@0 | 9 -- type = 'table' -- 'table', 'ulli' | 
| jbe/bsw@0 | 10 -- cols = { | 
| jbe/bsw@0 | 11 -- { | 
| jbe/bsw@0 | 12 -- label = _'Id', | 
| jbe/bsw@0 | 13 -- field = 'id', | 
| jbe/bsw@0 | 14 -- width = 100, | 
| jbe/bsw@0 | 15 -- link = { module = 'mymodule', view = 'show' }, | 
| jbe/bsw@0 | 16 -- sort = true, | 
| jbe/bsw@0 | 17 -- }, | 
| jbe/bsw@0 | 18 -- { | 
| jbe/bsw@0 | 19 -- label = _'Name', | 
| jbe/bsw@0 | 20 -- field = 'name', | 
| jbe/bsw@0 | 21 -- width = 200, | 
| jbe/bsw@0 | 22 -- link = { module = 'mymodule', view = 'show' }, | 
| jbe/bsw@0 | 23 -- sort = true, | 
| jbe/bsw@0 | 24 -- }, | 
| jbe/bsw@0 | 25 -- { | 
| jbe/bsw@0 | 26 -- label = _'Points', | 
| jbe/bsw@0 | 27 -- func = function(record) | 
| jbe/bsw@0 | 28 -- return record.points_a + record.points_b + record.points_c | 
| jbe/bsw@0 | 29 -- end, | 
| jbe/bsw@0 | 30 -- width = 300 | 
| jbe/bsw@0 | 31 -- } | 
| jbe/bsw@0 | 32 -- } | 
| jbe/bsw@0 | 33 -- }) | 
| jbe/bsw@0 | 34 -- | 
| jbe/bsw@0 | 35 | 
| jbe/bsw@0 | 36 function ui_deprecated.list(args) | 
| jbe/bsw@0 | 37 local args = args | 
| jbe/bsw@0 | 38 args.type = args.type or 'table' | 
| jbe/bsw@0 | 39 if args.label then | 
| jbe/bsw@0 | 40 slot.put('<div class="ui_list_label">' .. encode.html(args.label) .. '</div>\n') | 
| jbe/bsw@0 | 41 end | 
| jbe/bsw@0 | 42 if not args or not args.collection or not args.cols then | 
| jbe/bsw@0 | 43 error('No args for ui_deprecated.list_end') | 
| jbe/bsw@0 | 44 end | 
| jbe/bsw@0 | 45 if args.type == 'table' then | 
| jbe/bsw@0 | 46 slot.put('<table class="ui_list">') | 
| jbe/bsw@0 | 47 slot.put('<tr class="ui_list_head">') | 
| jbe/bsw@0 | 48 elseif args.type == 'ulli' then | 
| jbe/bsw@0 | 49 slot.put('<ul class="ui_list">') | 
| jbe/bsw@0 | 50 slot.put('<li class="ui_list_head">') | 
| jbe/bsw@0 | 51 end | 
| jbe/bsw@0 | 52 if args.type == 'table' then | 
| jbe/bsw@0 | 53 elseif args.type == 'ulli' then | 
| jbe/bsw@0 | 54 end | 
| jbe/bsw@0 | 55 for j, col in ipairs(args.cols) do | 
| jbe/bsw@0 | 56 class_string = '' | 
| jbe/bsw@0 | 57 if col.align then | 
| jbe/bsw@0 | 58 class_string = ' class="' .. col.align .. '"' | 
| jbe/bsw@0 | 59 end | 
| jbe/bsw@0 | 60 if args.type == 'table' then | 
| jbe/bsw@0 | 61 slot.put('<th style="width: ' .. col.width .. ';"' .. class_string ..'>') | 
| jbe/bsw@0 | 62 slot.put(ui_deprecated.box({ name = 'ui_list_col_value', content = encode.html(col.label) }) ) | 
| jbe/bsw@0 | 63 slot.put('</th>') | 
| jbe/bsw@0 | 64 elseif args.type == 'ulli' then | 
| jbe/bsw@0 | 65 slot.put('<div style="width: ' .. col.width .. ';"' .. class_string ..'>') | 
| jbe/bsw@0 | 66 slot.put(ui_deprecated.box({ name = 'ui_list_col_value', content = encode.html(col.label) }) ) | 
| jbe/bsw@0 | 67 slot.put('</div>') | 
| jbe/bsw@0 | 68 end | 
| jbe/bsw@0 | 69 end | 
| jbe/bsw@0 | 70 if args.type == 'table' then | 
| jbe/bsw@0 | 71 slot.put('</tr>') | 
| jbe/bsw@0 | 72 elseif args.type == 'ulli' then | 
| jbe/bsw@0 | 73 slot.put('<br style="clear: left;" />') | 
| jbe/bsw@0 | 74 slot.put('</li>') | 
| jbe/bsw@0 | 75 end | 
| jbe/bsw@0 | 76 for i, obj in ipairs(args.collection) do | 
| jbe/bsw@0 | 77 if args.type == 'table' then | 
| jbe/bsw@0 | 78 slot.put('<tr>') | 
| jbe/bsw@0 | 79 elseif args.type == 'ulli' then | 
| jbe/bsw@0 | 80 slot.put('<li>') | 
| jbe/bsw@0 | 81 end | 
| jbe/bsw@0 | 82 for j, col in ipairs(args.cols) do | 
| jbe/bsw@0 | 83 class_string = '' | 
| jbe/bsw@0 | 84 if col.align then | 
| jbe/bsw@0 | 85 class_string = ' class="ui_list_col_align_' .. col.align .. '"' | 
| jbe/bsw@0 | 86 end | 
| jbe/bsw@0 | 87 if args.type == 'table' then | 
| jbe/bsw@0 | 88 slot.put('<td' .. class_string ..'>') | 
| jbe/bsw@0 | 89 elseif args.type == 'ulli' then | 
| jbe/bsw@0 | 90 slot.put('<div style="width: ' .. col.width .. ';"' .. class_string ..'>') | 
| jbe/bsw@0 | 91 end | 
| jbe/bsw@0 | 92 if col.link then | 
| jbe/bsw@0 | 93 local params = {} | 
| jbe/bsw@0 | 94 if col.link then | 
| jbe/bsw@0 | 95 params = col.link.params or {} | 
| jbe/bsw@0 | 96 end | 
| jbe/bsw@0 | 97 if col.link_values then | 
| jbe/bsw@0 | 98 for key, field in pairs(col.link_values) do | 
| jbe/bsw@0 | 99 params[key] = obj[field] | 
| jbe/bsw@0 | 100 end | 
| jbe/bsw@0 | 101 end | 
| jbe/bsw@0 | 102 local id | 
| jbe/bsw@0 | 103 if col.link_id_field then | 
| jbe/bsw@0 | 104 id = obj[col.link_id_field] | 
| jbe/bsw@0 | 105 end | 
| jbe/bsw@0 | 106 local value | 
| jbe/bsw@0 | 107 if col.value then | 
| jbe/bsw@0 | 108 value = col.value | 
| jbe/bsw@0 | 109 else | 
| jbe/bsw@0 | 110 value = obj[col.field] | 
| jbe/bsw@0 | 111 end | 
| jbe/bsw@0 | 112 ui_deprecated.link{ | 
| jbe/bsw@0 | 113 label = convert.to_human(value), | 
| jbe/bsw@0 | 114 module = col.link.module, | 
| jbe/bsw@0 | 115 view = col.link.view, | 
| jbe/bsw@0 | 116 id = id, | 
| jbe/bsw@0 | 117 params = params, | 
| jbe/bsw@0 | 118 } | 
| jbe/bsw@0 | 119 elseif col.link_func then | 
| jbe/bsw@0 | 120 local link = col.link_func(obj) | 
| jbe/bsw@0 | 121 if link then | 
| jbe/bsw@0 | 122 ui_deprecated.link(link) | 
| jbe/bsw@0 | 123 end | 
| jbe/bsw@0 | 124 else | 
| jbe/bsw@0 | 125 local text | 
| jbe/bsw@0 | 126 if col.func then | 
| jbe/bsw@0 | 127 text = col.func(obj) | 
| jbe/bsw@0 | 128 elseif col.value then | 
| jbe/bsw@0 | 129 text = convert.to_human(value) | 
| jbe/bsw@0 | 130 else | 
| jbe/bsw@0 | 131 text = convert.to_human(obj[col.field]) | 
| jbe/bsw@0 | 132 end | 
| jbe/bsw@0 | 133 ui_deprecated.box{ name = 'ui_list_col_value', content = text } | 
| jbe/bsw@0 | 134 end | 
| jbe/bsw@0 | 135 if args.type == 'table' then | 
| jbe/bsw@0 | 136 slot.put('</td>') | 
| jbe/bsw@0 | 137 elseif args.type == 'ulli' then | 
| jbe/bsw@0 | 138 slot.put('</div>') | 
| jbe/bsw@0 | 139 end | 
| jbe/bsw@0 | 140 end | 
| jbe/bsw@0 | 141 if args.type == 'table' then | 
| jbe/bsw@0 | 142 slot.put('</tr>') | 
| jbe/bsw@0 | 143 elseif args.type == 'ulli' then | 
| jbe/bsw@0 | 144 slot.put('<br style="clear: left;" />') | 
| jbe/bsw@0 | 145 slot.put('</li>') | 
| jbe/bsw@0 | 146 end | 
| jbe/bsw@0 | 147 end | 
| jbe/bsw@0 | 148 if args.type == 'table' then | 
| jbe/bsw@0 | 149 slot.put('</table>') | 
| jbe/bsw@0 | 150 elseif args.type == 'ulli' then | 
| jbe/bsw@0 | 151 slot.put('</ul><div style="clear: left"> </div>') | 
| jbe/bsw@0 | 152 end | 
| jbe/bsw@0 | 153 end |