bsw@1045: local issue = param.get("issue", "table") bsw@1045: local initiative = param.get("initiative", "table") bsw@1045: bsw/jbe@1309: if config.voting_only and not issue.closed then bsw/jbe@1309: return bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: bsw@1045: if app.session:has_access("all_pseudonymous") then bsw@1045: bsw/jbe@1309: ui.container{ attr = { class = "mdl-card mdl-shadow--2dp mdl-card__fullwidth" }, content = function() bsw/jbe@1309: bsw@1080: ui.tag { tag = "a", attr = { name = "members" }, content = "" } bsw/jbe@1309: ui.container{ attr = { class = "mdl-card__title mdl-card--border" }, content = function() bsw/jbe@1309: local text = _"Interested members" bsw/jbe@1309: if issue.state == "finished_with_winner" or issue.state == "finished_without_winner" then bsw/jbe@1309: text = _"Voters" bsw/jbe@1309: end bsw/jbe@1309: bsw/jbe@1309: ui.container{ attr = { class = "mdl-card__title-text" }, content = text } bsw/jbe@1309: end } bsw/jbe@1309: 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/jbe@1309: :add_where("direct_interest_snapshot.snapshot_id = issue.latest_snapshot_id") bsw@1045: bsw@1045: if initiative then bsw/jbe@1309: 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.snapshot_id = issue.latest_snapshot_id", 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/jbe@1309: ui.container{ attr = { class = "mdl-card__content" }, content = function() bsw/jbe@1309: execute.view{ bsw/jbe@1309: module = "member", bsw/jbe@1309: view = "_list", bsw/jbe@1309: params = { bsw/jbe@1309: issue = issue, bsw/jbe@1309: initiative = initiative, bsw/jbe@1309: members_selector = interested_members_selector, bsw/jbe@1309: paginator_name = "members", bsw/jbe@1309: member_class = "sidebarRow sidebarRowNarrow", bsw/jbe@1309: for_votes = issue.state == "finished_with_winner" or issue.state == "finished_without_winner", bsw/jbe@1309: no_filter = true bsw/jbe@1309: } bsw@1045: } bsw/jbe@1309: end } bsw/jbe@1309: end } bsw@1045: end