liquid_feedback_frontend

view env/ui/filters.lua @ 1145:904f6807f7fa

Added support for upcoming moonbridge bases WebMCP
author bsw
date Sat Mar 21 15:26:39 2015 +0100 (2015-03-21)
parents 701a5cf6b067
children 32cc544d5a5b
line source
1 function ui.filters(args)
2 local el_id = ui.create_unique_id()
3 ui.container{
4 attr = { class = "ui_filter" },
5 content = function()
6 for idx, filter in ipairs(args) do
7 local filter_name = filter.name or "filter"
8 local current_option = atom.string:load(request.get_param{ name = filter_name })
9 if not current_option then
10 current_option = param.get(filter_name)
11 end
12 local current_option_valid = false
13 for idx, option in ipairs(filter) do
14 if current_option == option.name then
15 current_option_valid = true
16 end
17 end
18 if not current_option or #current_option == 0 or not current_option_valid then
19 current_option = filter[1].name
20 end
21 local id = request.get_id_string()
22 local params = request.get_param_strings()
23 local class = "ui_filter_head"
24 if filter.class then
25 class = class .. " " .. filter.class
26 end
27 ui.container{
28 attr = { class = class },
29 content = function()
30 slot.put(filter.label)
31 for idx, option in ipairs(filter) do
32 params[filter_name] = option.name
33 local attr = {}
34 if current_option == option.name then
35 attr.class = "active"
36 option.selector_modifier(args.selector)
37 end
38 if idx > 1 then
39 slot.put(" ")
40 end
41 ui.link{
42 attr = attr,
43 module = request.get_module(),
44 view = request.get_view(),
45 id = id,
46 params = params,
47 text = option.label,
48 partial = {
49 params = {
50 [filter_name] = option.name
51 }
52 }
53 }
54 end
55 end
56 }
57 end
58 end
59 }
60 ui.container{
61 attr = { class = "ui_filter_content" },
62 content = function()
63 args.content()
64 end
65 }
66 end

Impressum / About Us