| rev | line source | 
| bsw/jbe@1309 | 1 local member = app.session.member | 
| bsw/jbe@1309 | 2 local units | 
| bsw/jbe@1309 | 3 if member then | 
| bsw/jbe@1309 | 4   units = member:get_reference_selector("units"):add_order_by("name"):exec() | 
| bsw/jbe@1309 | 5   units:load_delegation_info_once_for_member_id(member.id) | 
| bsw/jbe@1309 | 6 else | 
| bsw/jbe@1309 | 7   units = Unit:new_selector():add_where("active"):add_order_by("name"):exec() | 
| bsw/jbe@1309 | 8 end | 
| bsw/jbe@1309 | 9 | 
| bsw/jbe@1309 | 10 slot.select("drawer", function() | 
| bsw/jbe@1309 | 11   ui.container{ attr = { class = "mdl-layout__drawer" }, content = function() | 
| bsw/jbe@1309 | 12     ui.tag{ tag = "nav", attr = { class = "mdl-navigation" }, content = function () | 
| bsw/jbe@1309 | 13       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 | 14 | 
| bsw/jbe@1309 | 15       if #units > 0 then | 
| bsw/jbe@1309 | 16         for i, unit in ipairs(units) do | 
| bsw/jbe@1309 | 17           local class = "mdl-navigation__link mdl-navigation__head" | 
| bsw/jbe@1309 | 18           if i == #units then | 
| bsw/jbe@1309 | 19             class = class .. " mdl-menu__item--full-bleed-divider" | 
| bsw/jbe@1309 | 20           end | 
| bsw/jbe@1309 | 21           ui.link{ attr = { class = class }, content = unit.name, module = "unit", view = "show", id = unit.id } | 
| bsw/jbe@1309 | 22           local areas = unit.areas | 
| bsw/jbe@1309 | 23           for i, area in ipairs(areas) do | 
| bsw/jbe@1309 | 24             local class = "mdl-navigation__link mdl-menu__item--small" | 
| bsw/jbe@1309 | 25             if i == #areas then | 
| bsw/jbe@1309 | 26               class = class .. " mdl-menu__item--full-bleed-divider" | 
| bsw/jbe@1309 | 27             end | 
| bsw/jbe@1309 | 28             ui.link{ attr = { class = class }, module = "area", view = "show", id = area.id, content = function() | 
| bsw/jbe@1309 | 29               ui.tag{ content = "⤷" } | 
| bsw/jbe@1309 | 30               slot.put(" ") | 
| bsw/jbe@1309 | 31               ui.tag{ content = area.name } | 
| bsw/jbe@1309 | 32             end } | 
| bsw/jbe@1309 | 33           end | 
| bsw/jbe@1309 | 34         end | 
| bsw/jbe@1309 | 35       end | 
| bsw/jbe@1309 | 36 | 
| bsw/jbe@1309 | 37       ui.link{ attr = { class = "mdl-navigation__link mdl-menu__item--full-bleed-divider" }, content = _"Member list", module = "member", view = "list" } | 
| bsw/jbe@1309 | 38       ui.link{ attr = { class = "mdl-navigation__link" }, content = _"Quick guide", module = "help", view = "introduction" } | 
| bsw/jbe@1309 | 39 | 
| bsw/jbe@1309 | 40       if app.session.member_id and app.session.member.admin then | 
| bsw/jbe@1309 | 41         ui.link{ attr = { class = "mdl-navigation__link mdl-menu__item--full-bleed-divider" }, content = _"System settings", module = "admin", view = "index" } | 
| bsw/jbe@1309 | 42       end | 
| bsw/jbe@1309 | 43 | 
| bsw/jbe@1309 | 44     end } | 
| bsw/jbe@1309 | 45   end } | 
| bsw/jbe@1309 | 46 end) | 
| bsw/jbe@1309 | 47 | 
| bsw/jbe@1309 | 48 if true then | 
| bsw/jbe@1309 | 49   return | 
| bsw/jbe@1309 | 50 end | 
| bsw/jbe@1309 | 51 | 
| bsw/jbe@1309 | 52 for i, unit in ipairs(units) do | 
| bsw/jbe@1309 | 53 | 
| bsw/jbe@1309 | 54   ui.sidebar ( "tab-whatcanido units", function () | 
| bsw/jbe@1309 | 55 | 
| bsw/jbe@1309 | 56     local areas_selector = Area:new_selector() | 
| bsw/jbe@1309 | 57       :reset_fields() | 
| bsw/jbe@1309 | 58       :add_field("area.id", nil, { "grouped" }) | 
| bsw/jbe@1309 | 59       :add_field("area.unit_id", nil, { "grouped" }) | 
| bsw/jbe@1309 | 60       :add_field("area.name", nil, { "grouped" }) | 
| bsw/jbe@1309 | 61       :add_where{ "area.unit_id = ?", unit.id } | 
| bsw/jbe@1309 | 62       :add_where{ "area.active" } | 
| bsw/jbe@1309 | 63       :add_order_by("area.name") | 
| bsw/jbe@1309 | 64 | 
| bsw/jbe@1309 | 65     local areas = areas_selector:exec() | 
| bsw/jbe@1309 | 66     if member then | 
| bsw/jbe@1309 | 67       areas:load_delegation_info_once_for_member_id(member.id) | 
| bsw/jbe@1309 | 68     end | 
| bsw/jbe@1309 | 69 | 
| bsw/jbe@1309 | 70     if #areas > 0 then | 
| bsw/jbe@1309 | 71 | 
| bsw/jbe@1309 | 72       ui.container { | 
| bsw/jbe@1309 | 73         attr = { class = "sidebarHead" }, | 
| bsw/jbe@1309 | 74         content = function () | 
| bsw/jbe@1309 | 75           ui.heading { level = 2, content = function () | 
| bsw/jbe@1309 | 76             ui.link { | 
| bsw/jbe@1309 | 77               attr = { class = "unit" }, | 
| bsw/jbe@1309 | 78               module = "unit", view = "show", id = unit.id, | 
| bsw/jbe@1309 | 79               content = unit.name | 
| bsw/jbe@1309 | 80             } | 
| bsw/jbe@1309 | 81 | 
| bsw/jbe@1309 | 82             if member then | 
| bsw/jbe@1309 | 83               local delegation = Delegation:by_pk(member.id, unit.id, nil, nil) | 
| bsw/jbe@1309 | 84 | 
| bsw/jbe@1309 | 85               if delegation then | 
| bsw/jbe@1309 | 86                 ui.link { | 
| bsw/jbe@1309 | 87                   module = "delegation", view = "show", params = { | 
| bsw/jbe@1309 | 88                     unit_id = unit.id | 
| bsw/jbe@1309 | 89                   }, | 
| bsw/jbe@1309 | 90                   attr = { class = "delegation_info" }, | 
| bsw/jbe@1309 | 91                   content = function () | 
| bsw/jbe@1309 | 92                     ui.delegation(delegation.trustee_id, delegation.trustee.name) | 
| bsw/jbe@1309 | 93                   end | 
| bsw/jbe@1309 | 94                 } | 
| bsw/jbe@1309 | 95               end | 
| bsw/jbe@1309 | 96             end | 
| bsw/jbe@1309 | 97           end } | 
| bsw/jbe@1309 | 98 | 
| bsw/jbe@1309 | 99         end | 
| bsw/jbe@1309 | 100       } | 
| bsw/jbe@1309 | 101 | 
| bsw/jbe@1309 | 102 | 
| bsw/jbe@1309 | 103       ui.tag { tag = "div", attr = { class = "areas areas-" .. unit.id }, content = function () | 
| bsw/jbe@1309 | 104 | 
| bsw/jbe@1309 | 105         for i, area in ipairs(areas) do | 
| bsw/jbe@1309 | 106 | 
| bsw/jbe@1309 | 107           ui.tag { tag = "div", attr = { class = "sidebarRow" }, content = function () | 
| bsw/jbe@1309 | 108 | 
| bsw/jbe@1309 | 109             if member then | 
| bsw/jbe@1309 | 110               local delegation = Delegation:by_pk(member.id, nil, area.id, nil) | 
| bsw/jbe@1309 | 111 | 
| bsw/jbe@1309 | 112               if delegation then | 
| bsw/jbe@1309 | 113                 ui.link { | 
| bsw/jbe@1309 | 114                   module = "delegation", view = "show", params = { | 
| bsw/jbe@1309 | 115                     area_id = area.id | 
| bsw/jbe@1309 | 116                   }, | 
| bsw/jbe@1309 | 117                   attr = { class = "delegation_info" }, | 
| bsw/jbe@1309 | 118                   content = function () | 
| bsw/jbe@1309 | 119                     ui.delegation(delegation.trustee_id, delegation.trustee_id and delegation.trustee.name) | 
| bsw/jbe@1309 | 120                   end | 
| bsw/jbe@1309 | 121                 } | 
| bsw/jbe@1309 | 122               end | 
| bsw/jbe@1309 | 123             end | 
| bsw/jbe@1309 | 124 | 
| bsw/jbe@1309 | 125             slot.put ( " " ) | 
| bsw/jbe@1309 | 126 | 
| bsw/jbe@1309 | 127             ui.link { | 
| bsw/jbe@1309 | 128               attr = { class = "area" }, | 
| bsw/jbe@1309 | 129               module = "area", view = "show", id = area.id, | 
| bsw/jbe@1309 | 130               content = area.name | 
| bsw/jbe@1309 | 131             } | 
| bsw/jbe@1309 | 132 | 
| bsw/jbe@1309 | 133 | 
| bsw/jbe@1309 | 134           end } | 
| bsw/jbe@1309 | 135         end | 
| bsw/jbe@1309 | 136       end } | 
| bsw/jbe@1309 | 137     end | 
| bsw/jbe@1309 | 138   end ) | 
| bsw/jbe@1309 | 139 end | 
| bsw/jbe@1309 | 140 | 
| bsw/jbe@1309 | 141 |