bsw/jbe@1309: local member = app.session.member bsw/jbe@1309: local units bsw/jbe@1309: if member then bsw/jbe@1309: units = member:get_reference_selector("units"):add_order_by("name"):exec() bsw/jbe@1309: units:load_delegation_info_once_for_member_id(member.id) bsw/jbe@1309: else bsw/jbe@1309: units = Unit:new_selector():add_where("active"):add_order_by("name"):exec() bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: slot.select("drawer", function() bsw/jbe@1309: ui.container{ attr = { class = "mdl-layout__drawer" }, content = function() bsw/jbe@1309: ui.tag{ tag = "nav", attr = { class = "mdl-navigation" }, content = function () bsw/jbe@1309: ui.link{ content = config.instance_name, attr = { class = "mdl-navigation__link mdl-menu__item--full-bleed-divider mdl-navigation__head" }, module = "index", view = "index" } bsw/jbe@1309: bsw/jbe@1309: if #units > 0 then bsw/jbe@1309: for i, unit in ipairs(units) do bsw/jbe@1309: local class = "mdl-navigation__link mdl-navigation__head" bsw/jbe@1309: if i == #units then bsw/jbe@1309: class = class .. " mdl-menu__item--full-bleed-divider" bsw/jbe@1309: end bsw/jbe@1309: ui.link{ attr = { class = class }, content = unit.name, module = "unit", view = "show", id = unit.id } bsw/jbe@1309: local areas = unit.areas bsw/jbe@1309: for i, area in ipairs(areas) do bsw/jbe@1309: local class = "mdl-navigation__link mdl-menu__item--small" bsw/jbe@1309: if i == #areas then bsw/jbe@1309: class = class .. " mdl-menu__item--full-bleed-divider" bsw/jbe@1309: end bsw/jbe@1309: ui.link{ attr = { class = class }, module = "area", view = "show", id = area.id, content = function() bsw/jbe@1309: ui.tag{ content = "⤷" } bsw/jbe@1309: slot.put(" ") bsw/jbe@1309: ui.tag{ content = area.name } bsw/jbe@1309: end } bsw/jbe@1309: end bsw/jbe@1309: end bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: ui.link{ attr = { class = "mdl-navigation__link mdl-menu__item--full-bleed-divider" }, content = _"Member list", module = "member", view = "list" } bsw/jbe@1309: ui.link{ attr = { class = "mdl-navigation__link" }, content = _"Quick guide", module = "help", view = "introduction" } bsw/jbe@1309: bsw/jbe@1309: if app.session.member_id and app.session.member.admin then bsw/jbe@1309: ui.link{ attr = { class = "mdl-navigation__link mdl-menu__item--full-bleed-divider" }, content = _"System settings", module = "admin", view = "index" } bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: end } bsw/jbe@1309: end } bsw/jbe@1309: end) bsw/jbe@1309: bsw/jbe@1309: if true then bsw/jbe@1309: return bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: for i, unit in ipairs(units) do bsw/jbe@1309: bsw/jbe@1309: ui.sidebar ( "tab-whatcanido units", function () bsw/jbe@1309: bsw/jbe@1309: local areas_selector = Area:new_selector() bsw/jbe@1309: :reset_fields() bsw/jbe@1309: :add_field("area.id", nil, { "grouped" }) bsw/jbe@1309: :add_field("area.unit_id", nil, { "grouped" }) bsw/jbe@1309: :add_field("area.name", nil, { "grouped" }) bsw/jbe@1309: :add_where{ "area.unit_id = ?", unit.id } bsw/jbe@1309: :add_where{ "area.active" } bsw/jbe@1309: :add_order_by("area.name") bsw/jbe@1309: bsw/jbe@1309: local areas = areas_selector:exec() bsw/jbe@1309: if member then bsw/jbe@1309: areas:load_delegation_info_once_for_member_id(member.id) bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: if #areas > 0 then bsw/jbe@1309: bsw/jbe@1309: ui.container { bsw/jbe@1309: attr = { class = "sidebarHead" }, bsw/jbe@1309: content = function () bsw/jbe@1309: ui.heading { level = 2, content = function () bsw/jbe@1309: ui.link { bsw/jbe@1309: attr = { class = "unit" }, bsw/jbe@1309: module = "unit", view = "show", id = unit.id, bsw/jbe@1309: content = unit.name bsw/jbe@1309: } bsw/jbe@1309: bsw/jbe@1309: if member then bsw/jbe@1309: local delegation = Delegation:by_pk(member.id, unit.id, nil, nil) bsw/jbe@1309: bsw/jbe@1309: if delegation then bsw/jbe@1309: ui.link { bsw/jbe@1309: module = "delegation", view = "show", params = { bsw/jbe@1309: unit_id = unit.id bsw/jbe@1309: }, bsw/jbe@1309: attr = { class = "delegation_info" }, bsw/jbe@1309: content = function () bsw/jbe@1309: ui.delegation(delegation.trustee_id, delegation.trustee.name) bsw/jbe@1309: end bsw/jbe@1309: } bsw/jbe@1309: end bsw/jbe@1309: end bsw/jbe@1309: end } bsw/jbe@1309: bsw/jbe@1309: end bsw/jbe@1309: } bsw/jbe@1309: bsw/jbe@1309: bsw/jbe@1309: ui.tag { tag = "div", attr = { class = "areas areas-" .. unit.id }, content = function () bsw/jbe@1309: bsw/jbe@1309: for i, area in ipairs(areas) do bsw/jbe@1309: bsw/jbe@1309: ui.tag { tag = "div", attr = { class = "sidebarRow" }, content = function () bsw/jbe@1309: bsw/jbe@1309: if member then bsw/jbe@1309: local delegation = Delegation:by_pk(member.id, nil, area.id, nil) bsw/jbe@1309: bsw/jbe@1309: if delegation then bsw/jbe@1309: ui.link { bsw/jbe@1309: module = "delegation", view = "show", params = { bsw/jbe@1309: area_id = area.id bsw/jbe@1309: }, bsw/jbe@1309: attr = { class = "delegation_info" }, bsw/jbe@1309: content = function () bsw/jbe@1309: ui.delegation(delegation.trustee_id, delegation.trustee_id and delegation.trustee.name) bsw/jbe@1309: end bsw/jbe@1309: } bsw/jbe@1309: end bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: slot.put ( " " ) bsw/jbe@1309: bsw/jbe@1309: ui.link { bsw/jbe@1309: attr = { class = "area" }, bsw/jbe@1309: module = "area", view = "show", id = area.id, bsw/jbe@1309: content = area.name bsw/jbe@1309: } bsw/jbe@1309: bsw/jbe@1309: bsw/jbe@1309: end } bsw/jbe@1309: end bsw/jbe@1309: end } bsw/jbe@1309: end bsw/jbe@1309: end ) bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: