liquid_feedback_frontend

annotate env/ui/filters.lua @ 1309:32cc544d5a5b

Cumulative patch for upcoming frontend version 4
author bsw/jbe
date Sun Jul 15 14:07:29 2018 +0200 (2018-07-15)
parents 904f6807f7fa
children 3ab878ba277e
rev   line source
bsw/jbe@1309 1 local function filters(args)
bsw/jbe@1309 2
bsw@295 3 local el_id = ui.create_unique_id()
bsw/jbe@1309 4 local class = "lf-filter"
bsw/jbe@1309 5 if args.class then
bsw/jbe@1309 6 class = class .. " " .. args.class
bsw/jbe@1309 7 end
bsw@295 8 ui.container{
bsw/jbe@1309 9 attr = { class = { class } },
bsw@295 10 content = function()
bsw@852 11 for idx, filter in ipairs(args) do
bsw@852 12 local filter_name = filter.name or "filter"
bsw/jbe@1309 13 local current_option_name = atom.string:load(request.get_param{ name = filter_name })
bsw/jbe@1309 14 if not current_option_name then
bsw/jbe@1309 15 current_option_name = param.get(filter_name)
bsw@852 16 end
bsw/jbe@1309 17 local current_option = filter[1]
bsw@852 18 for idx, option in ipairs(filter) do
bsw/jbe@1309 19 if current_option_name == option.name then
bsw/jbe@1309 20 current_option = option
bsw@295 21 end
bsw@295 22 end
bsw/jbe@1309 23 if not current_option_name or #current_option_name == 0 or not current_option then
bsw/jbe@1309 24 current_option_name = filter[1].name
bsw@852 25 end
bsw/jbe@1309 26 ui.tag{ tag = "button", attr = { id = "filter-" .. filter_name .. "-menu", class = "mdl-button mdl-js-button" }, content = function()
bsw/jbe@1309 27 ui.tag{ content = current_option.label }
bsw/jbe@1309 28 slot.put(" ")
bsw/jbe@1309 29 ui.tag{ tag = "i", attr = { class = "material-icons" }, content = "arrow_drop_down" }
bsw/jbe@1309 30 end }
bsw@1145 31 local id = request.get_id_string()
bsw@1145 32 local params = request.get_param_strings()
bsw/jbe@1309 33 local class = "mdl-menu mdl-js-menu mdl-js-ripple-effect"
bsw@1045 34 if filter.class then
bsw@1045 35 class = class .. " " .. filter.class
bsw@1045 36 end
bsw/jbe@1309 37 ui.tag{
bsw/jbe@1309 38 tag = "ul",
bsw/jbe@1309 39 attr = { class = class, ["data-mdl-for"] = "filter-" .. filter_name .. "-menu" },
bsw@852 40 content = function()
bsw@852 41 for idx, option in ipairs(filter) do
bsw@852 42 params[filter_name] = option.name
bsw@852 43 local attr = {}
bsw/jbe@1309 44 attr.class = "mdl-menu__link"
bsw/jbe@1309 45 if current_option_name == option.name then
bsw/jbe@1309 46 attr.class = attr.class .. " active"
bsw@852 47 option.selector_modifier(args.selector)
bsw@852 48 end
bsw@852 49 if idx > 1 then
bsw@852 50 slot.put(" ")
bsw@852 51 end
bsw/jbe@1309 52 ui.tag{
bsw/jbe@1309 53 tag = "li",
bsw/jbe@1309 54 attr = { class = "mdl-menu__item" },
bsw/jbe@1309 55 content = function()
bsw/jbe@1309 56 ui.link{
bsw/jbe@1309 57 attr = attr,
bsw/jbe@1309 58 module = request.get_module(),
bsw/jbe@1309 59 view = request.get_view(),
bsw/jbe@1309 60 id = id,
bsw/jbe@1309 61 params = params,
bsw/jbe@1309 62 content = option.label,
bsw/jbe@1309 63 partial = {
bsw/jbe@1309 64 params = {
bsw/jbe@1309 65 [filter_name] = idx > 1 and option.name or nil
bsw/jbe@1309 66 }
bsw/jbe@1309 67 }
bsw@852 68 }
bsw/jbe@1309 69 end
bsw@852 70 }
bsw@295 71 end
bsw@295 72 end
bsw@852 73 }
bsw@852 74 end
bsw@295 75 end
bsw@295 76 }
bsw/jbe@1309 77 end
bsw/jbe@1309 78
bsw/jbe@1309 79 function ui.filters(args)
bsw/jbe@1309 80 if args.slot then
bsw/jbe@1309 81 slot.select(args.slot, function()
bsw/jbe@1309 82 filters(args)
bsw/jbe@1309 83 end)
bsw/jbe@1309 84 else
bsw/jbe@1309 85 filters(args)
bsw/jbe@1309 86 end
bsw@295 87 ui.container{
bsw@295 88 attr = { class = "ui_filter_content" },
bsw@295 89 content = function()
bsw@295 90 args.content()
bsw@295 91 end
bsw@295 92 }
bsw@295 93 end

Impressum / About Us