| rev | 
   line source | 
| 
bsw@197
 | 
     1 local area = param.get("area", "table") or Area:by_id(param.get_id())
 | 
| 
bsw/jbe@19
 | 
     2 
 | 
| 
bsw@414
 | 
     3 local open_issues_selector = area:get_reference_selector("issues")
 | 
| 
bsw@414
 | 
     4   :add_where("issue.closed ISNULL")
 | 
| 
bsw@414
 | 
     5   :add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.admission_time) - now()")
 | 
| 
bsw@414
 | 
     6 
 | 
| 
bsw@414
 | 
     7 local closed_issues_selector = area:get_reference_selector("issues")
 | 
| 
bsw@414
 | 
     8   :add_where("issue.closed NOTNULL")
 | 
| 
bsw@414
 | 
     9   :add_order_by("issue.closed DESC")
 | 
| 
bsw@414
 | 
    10 
 | 
| 
bsw/jbe@19
 | 
    11 local members_selector = area:get_reference_selector("members")
 | 
| 
bsw/jbe@19
 | 
    12 local delegations_selector = area:get_reference_selector("delegations")
 | 
| 
bsw/jbe@19
 | 
    13 
 | 
| 
bsw@51
 | 
    14 local tabs = {
 | 
| 
bsw/jbe@19
 | 
    15   module = "area",
 | 
| 
bsw/jbe@19
 | 
    16   view = "show_tab",
 | 
| 
bsw/jbe@19
 | 
    17   static_params = { area_id = area.id },
 | 
| 
bsw@51
 | 
    18 }
 | 
| 
bsw@51
 | 
    19 
 | 
| 
bsw@414
 | 
    20 tabs[#tabs+1] = {
 | 
| 
bsw@414
 | 
    21   name = "timeline",
 | 
| 
bsw@414
 | 
    22   label = _"Events",
 | 
| 
bsw@414
 | 
    23   module = "event",
 | 
| 
bsw@414
 | 
    24   view = "_list",
 | 
| 
bsw@414
 | 
    25   params = { for_area = area }
 | 
| 
bsw@414
 | 
    26 }
 | 
| 
bsw@414
 | 
    27 
 | 
| 
bsw@414
 | 
    28 tabs[#tabs+1] = {
 | 
| 
bsw@414
 | 
    29   name = "open",
 | 
| 
bsw@414
 | 
    30   label = _"Open issues",
 | 
| 
bsw@414
 | 
    31   module = "issue",
 | 
| 
bsw@414
 | 
    32   view = "_list",
 | 
| 
bsw@414
 | 
    33   params = {
 | 
| 
bsw@414
 | 
    34     for_state = "open",
 | 
| 
bsw@414
 | 
    35     issues_selector = open_issues_selector, for_area = true
 | 
| 
bsw@51
 | 
    36   }
 | 
| 
bsw@414
 | 
    37 }
 | 
| 
bsw@414
 | 
    38 tabs[#tabs+1] = {
 | 
| 
bsw@414
 | 
    39   name = "closed",
 | 
| 
bsw@414
 | 
    40   label = _"Closed issues",
 | 
| 
bsw@414
 | 
    41   module = "issue",
 | 
| 
bsw@414
 | 
    42   view = "_list",
 | 
| 
bsw@414
 | 
    43   params = {
 | 
| 
bsw@414
 | 
    44     for_state = "closed",
 | 
| 
bsw@414
 | 
    45     issues_selector = closed_issues_selector, for_area = true
 | 
| 
bsw@414
 | 
    46   }
 | 
| 
bsw@414
 | 
    47 }
 | 
| 
bsw@51
 | 
    48 
 | 
| 
bsw@51
 | 
    49 if app.session.member_id then
 | 
| 
bsw@51
 | 
    50   tabs[#tabs+1] =
 | 
| 
bsw@51
 | 
    51     {
 | 
| 
bsw@51
 | 
    52       name = "members",
 | 
| 
bsw@51
 | 
    53       label = _"Members" .. " (" .. tostring(members_selector:count()) .. ")",
 | 
| 
bsw@51
 | 
    54       icon = { static = "icons/16/group.png" },
 | 
| 
bsw@51
 | 
    55       module = "member",
 | 
| 
bsw@51
 | 
    56       view = "_list",
 | 
| 
bsw@51
 | 
    57       params = { members_selector = members_selector }
 | 
| 
bsw@51
 | 
    58     }
 | 
| 
bsw/jbe@19
 | 
    59 
 | 
| 
bsw@51
 | 
    60   tabs[#tabs+1] =
 | 
| 
bsw@51
 | 
    61     {
 | 
| 
bsw@51
 | 
    62       name = "delegations",
 | 
| 
bsw@51
 | 
    63       label = _"Delegations" .. " (" .. tostring(delegations_selector:count()) .. ")",
 | 
| 
bsw@51
 | 
    64       icon = { static = "icons/16/table_go.png" },
 | 
| 
bsw@51
 | 
    65       module = "delegation",
 | 
| 
bsw@51
 | 
    66       view = "_list",
 | 
| 
bsw@51
 | 
    67       params = { delegations_selector = delegations_selector }
 | 
| 
bsw@51
 | 
    68     }
 | 
| 
bsw@51
 | 
    69 end
 | 
| 
bsw@51
 | 
    70 
 | 
| 
bsw@51
 | 
    71 ui.tabs(tabs)
 |