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 |