| rev | 
   line source | 
| 
bsw/jbe@19
 | 
     1 local issue
 | 
| 
bsw/jbe@19
 | 
     2 if request.get_json_request_slots() then
 | 
| 
bsw/jbe@19
 | 
     3   issue = Issue:by_id(param.get("issue_id"))
 | 
| 
bsw/jbe@19
 | 
     4 else
 | 
| 
bsw/jbe@19
 | 
     5   issue = param.get("issue", "table")
 | 
| 
bsw/jbe@19
 | 
     6 end
 | 
| 
bsw/jbe@19
 | 
     7 
 | 
| 
bsw/jbe@19
 | 
     8 local voting_requested_percentage = 0
 | 
| 
bsw/jbe@19
 | 
     9 if issue.vote_later and issue.population and issue.population > 0 then
 | 
| 
bsw/jbe@19
 | 
    10   voting_requested_percentage = math.ceil(issue.vote_later  / issue.population * 100)
 | 
| 
bsw/jbe@19
 | 
    11 end
 | 
| 
bsw/jbe@19
 | 
    12 
 | 
| 
bsw/jbe@19
 | 
    13 local interested_members_selector = issue:get_reference_selector("interested_members_snapshot")
 | 
| 
bsw/jbe@19
 | 
    14   :join("issue", nil, "issue.id = direct_interest_snapshot.issue_id")
 | 
| 
bsw/jbe@19
 | 
    15   :add_field("direct_interest_snapshot.weight")
 | 
| 
bsw/jbe@19
 | 
    16   :add_where("direct_interest_snapshot.event = issue.latest_snapshot_event")
 | 
| 
bsw/jbe@19
 | 
    17 
 | 
| 
bsw/jbe@19
 | 
    18 local voting_requests_selector = issue:get_reference_selector("interested_members_snapshot")
 | 
| 
bsw/jbe@19
 | 
    19   :join("issue", nil, "issue.id = direct_interest_snapshot.issue_id")
 | 
| 
bsw/jbe@19
 | 
    20   :add_where("direct_interest_snapshot.voting_requested = false")
 | 
| 
bsw@41
 | 
    21   :add_where("direct_interest_snapshot.event = issue.latest_snapshot_event")
 | 
| 
bsw/jbe@19
 | 
    22 
 | 
| 
bsw/jbe@19
 | 
    23 local delegations_selector = issue:get_reference_selector("delegations")
 | 
| 
bsw/jbe@19
 | 
    24 
 | 
| 
bsw@51
 | 
    25 local tabs = {
 | 
| 
bsw/jbe@19
 | 
    26   module = "issue",
 | 
| 
bsw/jbe@19
 | 
    27   view = "show_tab",
 | 
| 
bsw/jbe@19
 | 
    28   static_params = { issue_id = issue.id },
 | 
| 
bsw@51
 | 
    29 }
 | 
| 
bsw@51
 | 
    30 
 | 
| 
bsw@51
 | 
    31 if app.session.member_id then
 | 
| 
bsw@51
 | 
    32   tabs[#tabs+1] =
 | 
| 
bsw@51
 | 
    33     {
 | 
| 
bsw@51
 | 
    34       name = "interested_members",
 | 
| 
bsw@51
 | 
    35       label = _"Interested members" .. " (" .. tostring(interested_members_selector:count()) .. ")" ,
 | 
| 
bsw@51
 | 
    36       icon = { static = "icons/16/eye.png" },
 | 
| 
bsw@51
 | 
    37       module = "member",
 | 
| 
bsw@51
 | 
    38       view = "_list",
 | 
| 
bsw@51
 | 
    39       params = {
 | 
| 
bsw@51
 | 
    40         issue = issue,
 | 
| 
bsw@51
 | 
    41         members_selector = interested_members_selector
 | 
| 
bsw@51
 | 
    42       }
 | 
| 
bsw/jbe@19
 | 
    43     }
 | 
| 
bsw@51
 | 
    44 
 | 
| 
bsw@51
 | 
    45   tabs[#tabs+1] =
 | 
| 
bsw@51
 | 
    46     {
 | 
| 
bsw@51
 | 
    47       name = "voting_requests",
 | 
| 
bsw@51
 | 
    48       label = _"Vote later requests" .. " (" .. tostring(voting_requests_selector:count()) .. ") (" .. tostring(voting_requested_percentage) ..  "%)",
 | 
| 
bsw@51
 | 
    49       icon = { static = "icons/16/clock_play.png" },
 | 
| 
bsw@51
 | 
    50       module = "member",
 | 
| 
bsw@51
 | 
    51       view = "_list",
 | 
| 
bsw@51
 | 
    52       params = {
 | 
| 
bsw@51
 | 
    53         issue = issue,
 | 
| 
bsw@51
 | 
    54         members_selector = voting_requests_selector
 | 
| 
bsw@51
 | 
    55       }
 | 
| 
bsw/jbe@19
 | 
    56     }
 | 
| 
bsw@51
 | 
    57 
 | 
| 
bsw@51
 | 
    58   tabs[#tabs+1] =
 | 
| 
bsw@51
 | 
    59     {
 | 
| 
bsw@51
 | 
    60       name = "delegations",
 | 
| 
bsw@51
 | 
    61       label = _"Delegations" .. " (" .. tostring(delegations_selector:count()) .. ")" ,
 | 
| 
bsw@51
 | 
    62       icon = { static = "icons/16/table_go.png" },
 | 
| 
bsw@51
 | 
    63       module = "delegation",
 | 
| 
bsw@51
 | 
    64       view = "_list",
 | 
| 
bsw@51
 | 
    65       params = { delegations_selector = delegations_selector }
 | 
| 
bsw@51
 | 
    66     }
 | 
| 
bsw@51
 | 
    67 end
 | 
| 
bsw@51
 | 
    68 
 | 
| 
bsw@51
 | 
    69 tabs[#tabs+1] =
 | 
| 
bsw/jbe@19
 | 
    70   {
 | 
| 
bsw/jbe@19
 | 
    71     name = "details",
 | 
| 
bsw/jbe@19
 | 
    72     label = _"Details",
 | 
| 
bsw/jbe@19
 | 
    73     icon = { static = "icons/16/magnifier.png" },
 | 
| 
bsw/jbe@19
 | 
    74     module = "issue",
 | 
| 
bsw/jbe@19
 | 
    75     view = "_details",
 | 
| 
bsw/jbe@19
 | 
    76     params = { issue = issue }
 | 
| 
bsw@51
 | 
    77   }
 | 
| 
bsw@51
 | 
    78 
 | 
| 
bsw@51
 | 
    79 ui.tabs(tabs)
 | 
| 
bsw/jbe@19
 | 
    80 
 | 
| 
bsw/jbe@19
 | 
    81 
 |