| 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 
 |