webmcp

annotate framework/env/ui_deprecated/list.lua @ 0:9fdfb27f8e67

Version 1.0.0
author jbe/bsw
date Sun Oct 25 12:00:00 2009 +0100 (2009-10-25)
parents
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">&nbsp;</div>')
jbe/bsw@0 152 end
jbe/bsw@0 153 end

Impressum / About Us