bsw@1045: local issue = param.get("issue", "table") bsw@1045: local initiative = param.get("initiative", "table") bsw@1045: bsw@1045: if app.session:has_access("all_pseudonymous") then bsw@1045: ui.sidebar ( "tab-members", function () bsw@1045: bsw@1045: local text = _"Interested members" bsw@1045: if issue.state == "finished_with_winner" or issue.state == "finished_without_winner" then bsw@1045: text = _"Voters" bsw@1045: end bsw@1045: bsw@1045: ui.sidebarHead( function() bsw@1045: ui.heading{ bsw@1045: level = 2, content = text bsw@1045: } bsw@1045: end ) bsw@1045: bsw@1045: local interested_members_selector bsw@1045: bsw@1045: if issue.state == "finished_with_winner" or issue.state == "finished_without_winner" then bsw@1045: if initiative then bsw@1045: interested_members_selector = Member:new_selector() bsw@1045: :join("issue", nil, { "issue.id = ?", issue.id }) bsw@1045: :join("direct_voter", nil, { "direct_voter.issue_id = ? AND direct_voter.member_id = member.id", issue.id }) bsw@1045: :join("vote", nil, { "vote.member_id = member.id AND vote.initiative_id = ?", initiative.id }) bsw@1045: :add_field("direct_voter.weight", "voter_weight") bsw@1045: :add_field("vote.grade") bsw@1045: :add_field("direct_voter.comment", "voter_comment") bsw@1045: else bsw@1045: interested_members_selector = Member:new_selector() bsw@1045: :join("issue", nil, { "issue.id = ?", issue.id }) bsw@1045: :join("direct_voter", nil, { "direct_voter.issue_id = ? AND direct_voter.member_id = member.id", issue.id }) bsw@1045: :add_field("direct_voter.weight", "voter_weight") bsw@1045: :add_field("direct_voter.comment", "voter_comment") bsw@1045: end bsw@1045: else bsw@1079: interested_members_selector = issue:get_reference_selector("interested_members_snapshot") bsw@1045: :join("issue", nil, "issue.id = direct_interest_snapshot.issue_id") bsw@1045: :add_field("direct_interest_snapshot.weight") bsw@1045: :add_where("direct_interest_snapshot.event = issue.latest_snapshot_event") bsw@1045: bsw@1045: if initiative then bsw@1045: interested_members_selector:left_join("direct_supporter_snapshot", nil, { "direct_supporter_snapshot.initiative_id = ? AND direct_interest_snapshot.issue_id = direct_supporter_snapshot.issue_id AND direct_supporter_snapshot.member_id = direct_interest_snapshot.member_id AND direct_supporter_snapshot.event = issue.latest_snapshot_event", initiative.id }) bsw@1045: interested_members_selector:add_field("direct_supporter_snapshot.member_id NOTNULL", "supporter") bsw@1045: interested_members_selector:add_field("satisfied", "supporter_satisfied") bsw@1045: end bsw@1045: end bsw@1045: bsw@1045: execute.view{ bsw@1045: module = "member", bsw@1045: view = "_list", bsw@1045: params = { bsw@1045: issue = issue, bsw@1045: initiative = initiative, bsw@1045: members_selector = interested_members_selector, bsw@1078: no_filter = true, bsw@1045: member_class = "sidebarRow sidebarRowNarrow", bsw@1045: for_votes = issue.state == "finished_with_winner" or issue.state == "finished_without_winner" bsw@1045: } bsw@1045: } bsw@1045: bsw@1045: end ) bsw@1045: bsw@1045: end