| rev | 
   line source | 
| 
bsw@197
 | 
     1 local area = Area:by_id(param.get_id())
 | 
| 
bsw@197
 | 
     2 
 | 
| 
bsw/jbe@0
 | 
     3 
 | 
| 
jorges@103
 | 
     4 app.html_title.title = area.name
 | 
| 
jorges@103
 | 
     5 app.html_title.subtitle = _("Area")
 | 
| 
jorges@103
 | 
     6 
 | 
| 
bsw@197
 | 
     7 util.help("area.show")
 | 
| 
bsw@197
 | 
     8 
 | 
| 
bsw@526
 | 
     9 slot.select("head", function()
 | 
| 
bsw@795
 | 
    10   execute.view{ module = "area", view = "_head", params = { area = area, show_content = true, member = app.session.member } }
 | 
| 
bsw@526
 | 
    11 end)
 | 
| 
bsw/jbe@0
 | 
    12 
 | 
| 
bsw/jbe@0
 | 
    13 ui.container{
 | 
| 
bsw/jbe@0
 | 
    14   attr = { class = "vertical"},
 | 
| 
bsw/jbe@0
 | 
    15   content = function()
 | 
| 
bsw/jbe@0
 | 
    16     ui.field.text{ value = area.description }
 | 
| 
bsw/jbe@0
 | 
    17   end
 | 
| 
bsw/jbe@0
 | 
    18 }
 | 
| 
bsw/jbe@0
 | 
    19 
 | 
| 
bsw@869
 | 
    20 local open_issues_selector = area:get_reference_selector("issues")
 | 
| 
bsw@869
 | 
    21   :add_where("issue.closed ISNULL")
 | 
| 
bsw@869
 | 
    22   :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@197
 | 
    23 
 | 
| 
bsw@869
 | 
    24 local closed_issues_selector = area:get_reference_selector("issues")
 | 
| 
bsw@869
 | 
    25   :add_where("issue.closed NOTNULL")
 | 
| 
bsw@869
 | 
    26   :add_order_by("issue.closed DESC")
 | 
| 
bsw@271
 | 
    27 
 | 
| 
bsw@869
 | 
    28 local members_selector = area:get_reference_selector("members"):add_where("member.active")
 | 
| 
bsw@869
 | 
    29 local delegations_selector = area:get_reference_selector("delegations")
 | 
| 
bsw@869
 | 
    30   :join("member", "truster", "truster.id = delegation.truster_id AND truster.active")
 | 
| 
bsw@869
 | 
    31   :join("member", "trustee", "trustee.id = delegation.trustee_id AND trustee.active")
 | 
| 
bsw/jbe@0
 | 
    32 
 | 
| 
bsw@869
 | 
    33 local tabs = {
 | 
| 
bsw@869
 | 
    34   module = "area",
 | 
| 
bsw@869
 | 
    35   view = "show_tab",
 | 
| 
bsw@869
 | 
    36   static_params = { area_id = area.id },
 | 
| 
bsw@869
 | 
    37 }
 | 
| 
bsw@869
 | 
    38 
 | 
| 
bsw@869
 | 
    39 tabs[#tabs+1] = {
 | 
| 
bsw@869
 | 
    40   name = "timeline",
 | 
| 
bsw@869
 | 
    41   label = _"Latest events",
 | 
| 
bsw@869
 | 
    42   module = "event",
 | 
| 
bsw@869
 | 
    43   view = "_list",
 | 
| 
bsw@869
 | 
    44   params = { for_area = area }
 | 
| 
bsw@869
 | 
    45 }
 | 
| 
bsw@869
 | 
    46 
 | 
| 
bsw@869
 | 
    47 tabs[#tabs+1] = {
 | 
| 
bsw@869
 | 
    48   name = "open",
 | 
| 
bsw@869
 | 
    49   label = _"Open issues",
 | 
| 
bsw@869
 | 
    50   module = "issue",
 | 
| 
bsw@869
 | 
    51   view = "_list",
 | 
| 
bsw@869
 | 
    52   params = {
 | 
| 
bsw@869
 | 
    53     for_state = "open",
 | 
| 
bsw@869
 | 
    54     issues_selector = open_issues_selector, for_area = true
 | 
| 
bsw@277
 | 
    55   }
 | 
| 
bsw@869
 | 
    56 }
 | 
| 
bsw@869
 | 
    57 tabs[#tabs+1] = {
 | 
| 
bsw@869
 | 
    58   name = "closed",
 | 
| 
bsw@869
 | 
    59   label = _"Closed issues",
 | 
| 
bsw@869
 | 
    60   module = "issue",
 | 
| 
bsw@869
 | 
    61   view = "_list",
 | 
| 
bsw@869
 | 
    62   params = {
 | 
| 
bsw@869
 | 
    63     for_state = "closed",
 | 
| 
bsw@869
 | 
    64     issues_selector = closed_issues_selector, for_area = true
 | 
| 
bsw@869
 | 
    65   }
 | 
| 
bsw@869
 | 
    66 }
 | 
| 
bsw@869
 | 
    67 
 | 
| 
bsw@870
 | 
    68 if app.session:has_access("all_pseudonymous") then
 | 
| 
bsw@869
 | 
    69   tabs[#tabs+1] =
 | 
| 
bsw@869
 | 
    70     {
 | 
| 
bsw@869
 | 
    71       name = "members",
 | 
| 
bsw@869
 | 
    72       label = _"Participants" .. " (" .. tostring(members_selector:count()) .. ")",
 | 
| 
bsw@869
 | 
    73       icon = { static = "icons/16/group.png" },
 | 
| 
bsw@869
 | 
    74       module = "member",
 | 
| 
bsw@869
 | 
    75       view = "_list",
 | 
| 
bsw@869
 | 
    76       params = { members_selector = members_selector }
 | 
| 
bsw@277
 | 
    77     }
 | 
| 
bsw@869
 | 
    78 
 | 
| 
bsw@869
 | 
    79   tabs[#tabs+1] =
 | 
| 
bsw@869
 | 
    80     {
 | 
| 
bsw@869
 | 
    81       name = "delegations",
 | 
| 
bsw@869
 | 
    82       label = _"Delegations" .. " (" .. tostring(delegations_selector:count()) .. ")",
 | 
| 
bsw@869
 | 
    83       icon = { static = "icons/16/table_go.png" },
 | 
| 
bsw@869
 | 
    84       module = "delegation",
 | 
| 
bsw@869
 | 
    85       view = "_list",
 | 
| 
bsw@869
 | 
    86       params = { delegations_selector = delegations_selector }
 | 
| 
bsw@869
 | 
    87     }
 | 
| 
bsw@277
 | 
    88 end
 | 
| 
bsw@869
 | 
    89 
 | 
| 
bsw@869
 | 
    90 ui.tabs(tabs)
 |