liquid_feedback_frontend
diff app/main/issue/_list.lua @ 525:63d6549cc00b
Delegation chain preview improved, better visualisation of current context, code cleanup
| author | bsw |
|---|---|
| date | Fri May 18 19:07:07 2012 +0200 (2012-05-18) |
| parents | 52c4a6ce5ef4 |
| children | 57a261a81c5a |
line diff
1.1 --- a/app/main/issue/_list.lua Tue Apr 17 00:07:04 2012 +0200 1.2 +++ b/app/main/issue/_list.lua Fri May 18 19:07:07 2012 +0200 1.3 @@ -12,17 +12,6 @@ 1.4 issues_selector:add_where("issue.closed NOTNULL") 1.5 end 1.6 1.7 -if app.session.member_id then 1.8 - issues_selector 1.9 - :left_join("interest", "_interest", { "_interest.issue_id = issue.id AND _interest.member_id = ?", member.id } ) 1.10 - :add_field("(_interest.member_id NOTNULL)", "is_interested") 1.11 - issues_selector 1.12 - :left_join("delegating_interest_snapshot", "_delegating_interest", { "_delegating_interest.issue_id = issue.id AND _delegating_interest.member_id = ? AND _delegating_interest.event = issue.latest_snapshot_event", member.id } ) 1.13 - :add_field("_delegating_interest.delegate_member_ids[1]", "is_interested_by_delegation_to_member_id") 1.14 - :add_field("_delegating_interest.delegate_member_ids[array_upper(_delegating_interest.delegate_member_ids, 1)]", "is_interested_via_member_id") 1.15 - :add_field("array_length(_delegating_interest.delegate_member_ids, 1)", "delegation_chain_length") 1.16 -end 1.17 - 1.18 ui.add_partial_param_names{ 1.19 "filter", 1.20 "filter_open", 1.21 @@ -42,159 +31,14 @@ 1.22 content = function() 1.23 local highlight_string = param.get("highlight_string", "string") 1.24 local issues = issues or issues_selector:exec() 1.25 + issues:load('policy') 1.26 -- issues:load(initiatives) 1.27 ui.container{ attr = { class = "issues" }, content = function() 1.28 1.29 for i, issue in ipairs(issues) do 1.30 1.31 - local class = "issue" 1.32 - if issue.is_interested then 1.33 - class = class .. " interested" 1.34 - elseif issue.is_interested_by_delegation_to_member_id then 1.35 - class = class .. " interested_by_delegation" 1.36 - end 1.37 - ui.container{ attr = { class = class }, content = function() 1.38 - 1.39 - ui.container{ attr = { class = "issue_info" }, content = function() 1.40 - 1.41 - if issue.is_interested then 1.42 - ui.tag{ 1.43 - tag = "div", attr = { class = "interest_by_delegation"}, 1.44 - content = function() 1.45 - local text = "You are interested in this issue" 1.46 - ui.image{ attr = { alt = text, title = text }, static = "icons/16/eye.png" } 1.47 - end 1.48 - } 1.49 - 1.50 - elseif issue.is_interested_by_delegation_to_member_id then 1.51 - ui.tag{ 1.52 - tag = "div", attr = { class = "interest_by_delegation"}, 1.53 - content = function() 1.54 - local member = Member:by_id(issue.is_interested_by_delegation_to_member_id) 1.55 - local text = _"delegated to" 1.56 - ui.image{ 1.57 - attr = { class = "delegation_arrow", alt = text, title = text }, 1.58 - static = "delegation_arrow_24_horizontal.png" 1.59 - } 1.60 - execute.view{ 1.61 - module = "member_image", 1.62 - view = "_show", 1.63 - params = { 1.64 - member = member, 1.65 - image_type = "avatar", 1.66 - show_dummy = true, 1.67 - class = "micro_avatar", 1.68 - popup_text = member.name 1.69 - } 1.70 - } 1.71 - if issue.is_interested_by_delegation_to_member_id ~= issue.is_interested_via_member_id then 1.72 - if issue.delegation_chain_length > 2 then 1.73 - local text = _"delegated to" 1.74 - ui.image{ 1.75 - attr = { class = "delegation_arrow", alt = text, title = text }, 1.76 - static = "delegation_arrow_24_horizontal.png" 1.77 - } 1.78 - ui.tag{ content = "..." } 1.79 - end 1.80 - local text = _"delegated to" 1.81 - ui.image{ 1.82 - attr = { class = "delegation_arrow", alt = text, title = text }, 1.83 - static = "delegation_arrow_24_horizontal.png" 1.84 - } 1.85 - local member = Member:by_id(issue.is_interested_via_member_id) 1.86 - execute.view{ 1.87 - module = "member_image", 1.88 - view = "_show", 1.89 - params = { 1.90 - member = member, 1.91 - image_type = "avatar", 1.92 - show_dummy = true, 1.93 - class = "micro_avatar", 1.94 - popup_text = member.name 1.95 - } 1.96 - } 1.97 - end 1.98 - end 1.99 - } 1.100 - end 1.101 - 1.102 - ui.tag{ 1.103 - tag = "div", 1.104 - content = function() 1.105 - ui.link{ 1.106 - attr = { class = "issue_id" }, 1.107 - text = _("Issue ##{id}", { id = tostring(issue.id) }), 1.108 - module = "issue", 1.109 - view = "show", 1.110 - id = issue.id 1.111 - } 1.112 - 1.113 - slot.put(" · ") 1.114 - ui.tag{ content = issue.policy.name } 1.115 - slot.put(" · ") 1.116 - ui.tag{ content = issue.area.name } 1.117 - slot.put(" · ") 1.118 - ui.tag{ content = issue.area.unit.name } 1.119 - 1.120 - end 1.121 - } 1.122 - ui.tag{ 1.123 - attr = { class = "issue_policy_info" }, 1.124 - tag = "div", 1.125 - content = function() 1.126 - 1.127 - ui.tag{ attr = { class = "event_name" }, content = issue.state_name } 1.128 - 1.129 - if issue.state_time_left then 1.130 - slot.put(" · ") 1.131 - if issue.state_time_left:sub(1,1) == "-" then 1.132 - if issue.state == "new" then 1.133 - ui.tag{ content = _("Discussion starts soon") } 1.134 - elseif issue.state == "discussion" then 1.135 - ui.tag{ content = _("Verification starts soon") } 1.136 - elseif issue.state == "frozen" then 1.137 - ui.tag{ content = _("Voting starts soon") } 1.138 - elseif issue.state == "voting" then 1.139 - ui.tag{ content = _("Counting starts soon") } 1.140 - end 1.141 - else 1.142 - ui.tag{ content = _("#{time_left} left", { time_left = issue.state_time_left:gsub("days", _"days"):gsub("day", _"day") }) } 1.143 - end 1.144 - end 1.145 - 1.146 - end 1.147 - } 1.148 - 1.149 - 1.150 - if issue.old_state then 1.151 - ui.field.text{ value = format.time(issue.sort) } 1.152 - ui.field.text{ value = Issue:get_state_name_for_state(issue.old_state) .. " > " .. Issue:get_state_name_for_state(issue.new_state) } 1.153 - else 1.154 - end 1.155 - end } 1.156 - 1.157 - ui.container{ attr = { class = "initiative_list" }, content = function() 1.158 - 1.159 - local initiatives_selector = issue:get_reference_selector("initiatives") 1.160 - local highlight_string = param.get("highlight_string") 1.161 - if highlight_string then 1.162 - initiatives_selector:add_field( {'"highlight"("initiative"."name", ?)', highlight_string }, "name_highlighted") 1.163 - end 1.164 - execute.view{ 1.165 - module = "initiative", 1.166 - view = "_list", 1.167 - params = { 1.168 - issue = issue, 1.169 - initiatives_selector = initiatives_selector, 1.170 - highlight_string = highlight_string, 1.171 - per_page = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3, 1.172 - no_sort = true, 1.173 - limit = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3, 1.174 - for_member = for_member 1.175 - } 1.176 - } 1.177 - end } 1.178 - end } 1.179 + execute.view{ module = "issue", view = "_show", params = { issue = issue, for_listing = true } } 1.180 + 1.181 end 1.182 end } 1.183 end