| 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@610
 | 
    11 local members_selector = area:get_reference_selector("members"):add_where("member.active")
 | 
| 
bsw/jbe@19
 | 
    12 local delegations_selector = area:get_reference_selector("delegations")
 | 
| 
bsw@619
 | 
    13   :join("member", "truster", "truster.id = delegation.truster_id AND truster.active")
 | 
| 
bsw@619
 | 
    14   :join("member", "trustee", "trustee.id = delegation.trustee_id AND trustee.active")
 | 
| 
bsw/jbe@19
 | 
    15 
 | 
| 
bsw@51
 | 
    16 local tabs = {
 | 
| 
bsw/jbe@19
 | 
    17   module = "area",
 | 
| 
bsw/jbe@19
 | 
    18   view = "show_tab",
 | 
| 
bsw/jbe@19
 | 
    19   static_params = { area_id = area.id },
 | 
| 
bsw@51
 | 
    20 }
 | 
| 
bsw@51
 | 
    21 
 | 
| 
bsw@414
 | 
    22 tabs[#tabs+1] = {
 | 
| 
bsw@414
 | 
    23   name = "timeline",
 | 
| 
bsw@602
 | 
    24   label = _"Latest events",
 | 
| 
bsw@414
 | 
    25   module = "event",
 | 
| 
bsw@414
 | 
    26   view = "_list",
 | 
| 
bsw@414
 | 
    27   params = { for_area = area }
 | 
| 
bsw@414
 | 
    28 }
 | 
| 
bsw@414
 | 
    29 
 | 
| 
bsw@414
 | 
    30 tabs[#tabs+1] = {
 | 
| 
bsw@414
 | 
    31   name = "open",
 | 
| 
bsw@414
 | 
    32   label = _"Open issues",
 | 
| 
bsw@414
 | 
    33   module = "issue",
 | 
| 
bsw@414
 | 
    34   view = "_list",
 | 
| 
bsw@414
 | 
    35   params = {
 | 
| 
bsw@414
 | 
    36     for_state = "open",
 | 
| 
bsw@414
 | 
    37     issues_selector = open_issues_selector, for_area = true
 | 
| 
bsw@51
 | 
    38   }
 | 
| 
bsw@414
 | 
    39 }
 | 
| 
bsw@414
 | 
    40 tabs[#tabs+1] = {
 | 
| 
bsw@414
 | 
    41   name = "closed",
 | 
| 
bsw@414
 | 
    42   label = _"Closed issues",
 | 
| 
bsw@414
 | 
    43   module = "issue",
 | 
| 
bsw@414
 | 
    44   view = "_list",
 | 
| 
bsw@414
 | 
    45   params = {
 | 
| 
bsw@414
 | 
    46     for_state = "closed",
 | 
| 
bsw@414
 | 
    47     issues_selector = closed_issues_selector, for_area = true
 | 
| 
bsw@414
 | 
    48   }
 | 
| 
bsw@414
 | 
    49 }
 | 
| 
bsw@51
 | 
    50 
 | 
| 
bsw@51
 | 
    51 if app.session.member_id then
 | 
| 
bsw@51
 | 
    52   tabs[#tabs+1] =
 | 
| 
bsw@51
 | 
    53     {
 | 
| 
bsw@51
 | 
    54       name = "members",
 | 
| 
bsw@525
 | 
    55       label = _"Participants" .. " (" .. tostring(members_selector:count()) .. ")",
 | 
| 
bsw@51
 | 
    56       icon = { static = "icons/16/group.png" },
 | 
| 
bsw@51
 | 
    57       module = "member",
 | 
| 
bsw@51
 | 
    58       view = "_list",
 | 
| 
bsw@51
 | 
    59       params = { members_selector = members_selector }
 | 
| 
bsw@51
 | 
    60     }
 | 
| 
bsw/jbe@19
 | 
    61 
 | 
| 
bsw@51
 | 
    62   tabs[#tabs+1] =
 | 
| 
bsw@51
 | 
    63     {
 | 
| 
bsw@51
 | 
    64       name = "delegations",
 | 
| 
bsw@51
 | 
    65       label = _"Delegations" .. " (" .. tostring(delegations_selector:count()) .. ")",
 | 
| 
bsw@51
 | 
    66       icon = { static = "icons/16/table_go.png" },
 | 
| 
bsw@51
 | 
    67       module = "delegation",
 | 
| 
bsw@51
 | 
    68       view = "_list",
 | 
| 
bsw@51
 | 
    69       params = { delegations_selector = delegations_selector }
 | 
| 
bsw@51
 | 
    70     }
 | 
| 
bsw@51
 | 
    71 end
 | 
| 
bsw@51
 | 
    72 
 | 
| 
bsw@51
 | 
    73 ui.tabs(tabs)
 |