liquid_feedback_frontend

annotate app/main/issue/_list.lua @ 312:5e6bdf07e3a1

Some color and positioning changes again...
author bsw
date Mon Feb 27 16:19:11 2012 +0100 (2012-02-27)
parents 1a55347e83bf
children 2e404166c9a1
rev   line source
bsw/jbe@0 1 local issues_selector = param.get("issues_selector", "table")
bsw@285 2 local for_member = param.get("for_member", "table") or app.session.member
bsw/jbe@0 3
bsw@51 4 if app.session.member_id then
bsw@51 5 issues_selector
bsw@285 6 :left_join("interest", "_interest", { "_interest.issue_id = issue.id AND _interest.member_id = ?", for_member.id } )
bsw@51 7 :add_field("(_interest.member_id NOTNULL)", "is_interested")
bsw@285 8 issues_selector
bsw@285 9 :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", for_member.id } )
bsw@285 10 :add_field("_delegating_interest.delegate_member_ids[1]", "is_interested_by_delegation_to_member_id")
bsw@285 11 :add_field("_delegating_interest.delegate_member_ids[array_upper(_delegating_interest.delegate_member_ids, 1)]", "is_interested_via_member_id")
bsw@285 12 :add_field("array_length(_delegating_interest.delegate_member_ids, 1)", "delegation_chain_length")
bsw@51 13 end
bsw@11 14
bsw/jbe@19 15 ui.add_partial_param_names{
bsw/jbe@19 16 "filter",
bsw/jbe@19 17 "filter_open",
bsw/jbe@19 18 "filter_voting",
bsw/jbe@19 19 "filter_interest",
bsw/jbe@19 20 "issue_list"
bsw/jbe@19 21 }
bsw/jbe@0 22
bsw@285 23 local filters = execute.load_chunk{module="issue", chunk="_filters.lua", params = { member = for_member }}
bsw/jbe@19 24
bsw/jbe@19 25 filters.content = function()
bsw@275 26 ui.paginate{
bsw/jbe@19 27 per_page = tonumber(param.get("per_page")),
bsw/jbe@19 28 selector = issues_selector,
bsw/jbe@19 29 content = function()
bsw/jbe@19 30 local highlight_string = param.get("highlight_string", "string")
bsw/jbe@19 31 local issues = issues or issues_selector:exec()
bsw/jbe@19 32 -- issues:load(initiatives)
bsw@273 33 ui.container{ attr = { class = "issues" }, content = function()
bsw@273 34
bsw@273 35 for i, issue in ipairs(issues) do
bsw@273 36
bsw@273 37 local class = "issue"
bsw@289 38 if issue.is_interested then
bsw@273 39 class = class .. " interested"
bsw@289 40 elseif issue.is_interested_by_delegation_to_member_id then
bsw@289 41 class = class .. " interested_by_delegation"
bsw@273 42 end
bsw@273 43 ui.container{ attr = { class = class }, content = function()
bsw@273 44
bsw@273 45 ui.container{ attr = { class = "issue_info" }, content = function()
bsw@273 46
bsw@312 47 if issue.is_interested then
bsw@312 48 ui.tag{
bsw@312 49 tag = "div", attr = { class = "interest_by_delegation"},
bsw@312 50 content = function()
bsw@312 51 local text = "You are interested in this issue"
bsw@312 52 ui.image{ attr = { alt = text, title = text }, static = "icons/16/eye.png" }
bsw@312 53 end
bsw@312 54 }
bsw@312 55
bsw@312 56 elseif issue.is_interested_by_delegation_to_member_id then
bsw@285 57 ui.tag{
bsw@285 58 tag = "div", attr = { class = "interest_by_delegation"},
bsw@285 59 content = function()
bsw@285 60 local member = Member:by_id(issue.is_interested_by_delegation_to_member_id)
bsw@285 61 ui.tag{ content = "->" }
bsw@285 62 execute.view{
bsw@285 63 module = "member_image",
bsw@285 64 view = "_show",
bsw@285 65 params = {
bsw@285 66 member = member,
bsw@285 67 image_type = "avatar",
bsw@285 68 show_dummy = true,
bsw@285 69 class = "micro_avatar",
bsw@285 70 popup_text = member.name
bsw@285 71 }
bsw@285 72 }
bsw@285 73 if issue.is_interested_by_delegation_to_member_id ~= issue.is_interested_via_member_id then
bsw@285 74 if issue.delegation_chain_length > 2 then
bsw@285 75 ui.tag{ content = "-> ... " }
bsw@285 76 end
bsw@285 77 ui.tag{ content = "->" }
bsw@285 78 local member = Member:by_id(issue.is_interested_via_member_id)
bsw@285 79 execute.view{
bsw@285 80 module = "member_image",
bsw@285 81 view = "_show",
bsw@285 82 params = {
bsw@285 83 member = member,
bsw@285 84 image_type = "avatar",
bsw@285 85 show_dummy = true,
bsw@285 86 class = "micro_avatar",
bsw@285 87 popup_text = member.name
bsw@285 88 }
bsw@285 89 }
bsw@285 90 end
bsw@285 91 end
bsw@285 92 }
bsw@285 93 end
bsw@285 94
bsw@273 95 ui.tag{
bsw@273 96 tag = "div",
bsw@273 97 content = function()
bsw@273 98 ui.link{
bsw@273 99 attr = { class = "issue_id" },
bsw@273 100 text = _("Issue ##{id}", { id = tostring(issue.id) }),
bsw@273 101 module = "issue",
bsw@273 102 view = "show",
bsw@273 103 id = issue.id
bsw@273 104 }
bsw@273 105
bsw@280 106 slot.put(" · ")
bsw@280 107 ui.tag{ content = issue.area.name }
bsw@280 108 slot.put(" · ")
bsw@280 109 ui.tag{ content = issue.area.unit.name }
bsw@280 110
bsw@280 111 end
bsw/jbe@19 112 }
bsw@273 113 ui.tag{
bsw@286 114 attr = { class = "issue_policy_info" },
bsw@273 115 tag = "div",
bsw@273 116 content = function()
bsw@273 117
bsw@273 118 ui.tag{ content = issue.policy.name }
bsw@273 119
bsw@273 120 slot.put(" · ")
bsw@273 121 ui.tag{ content = issue.state_name }
bsw@273 122
bsw@273 123 if issue.state_time_left then
bsw@273 124 slot.put(" · ")
bsw@273 125 ui.tag{ content = _("#{time_left} left", { time_left = issue.state_time_left }) }
bsw@273 126 end
bsw@273 127
bsw@273 128 end
bsw@273 129 }
bsw@273 130
bsw@273 131
bsw@273 132 if issue.old_state then
bsw@273 133 ui.field.text{ value = format.time(issue.sort) }
bsw@273 134 ui.field.text{ value = Issue:get_state_name_for_state(issue.old_state) .. " > " .. Issue:get_state_name_for_state(issue.new_state) }
bsw/jbe@19 135 else
bsw/jbe@19 136 end
bsw@273 137 end }
bsw@273 138
bsw@273 139 ui.container{ attr = { class = "initiative_list" }, content = function()
bsw@273 140
bsw@273 141 local initiatives_selector = issue:get_reference_selector("initiatives")
bsw/jbe@19 142 local highlight_string = param.get("highlight_string")
bsw/jbe@19 143 if highlight_string then
bsw/jbe@19 144 initiatives_selector:add_field( {'"highlight"("initiative"."name", ?)', highlight_string }, "name_highlighted")
bsw/jbe@19 145 end
bsw/jbe@19 146 execute.view{
bsw/jbe@19 147 module = "initiative",
bsw/jbe@19 148 view = "_list",
bsw/jbe@19 149 params = {
bsw@273 150 issue = issue,
bsw/jbe@19 151 initiatives_selector = initiatives_selector,
bsw/jbe@19 152 highlight_string = highlight_string,
bsw@51 153 per_page = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3,
bsw/jbe@19 154 no_sort = true,
bsw@285 155 limit = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3,
bsw@285 156 for_member = for_member
bsw/jbe@19 157 }
bsw/jbe@19 158 }
bsw@273 159 end }
bsw@273 160 end }
bsw@273 161 end
bsw@273 162 end }
bsw/jbe@19 163 end
bsw/jbe@19 164 }
bsw/jbe@19 165 end
bsw/jbe@19 166
bsw@275 167 filters.opened = true
bsw/jbe@19 168 filters.selector = issues_selector
bsw/jbe@19 169
bsw/jbe@19 170 if param.get("no_filter", atom.boolean) then
bsw/jbe@19 171 filters.content()
bsw/jbe@19 172 else
bsw/jbe@19 173 ui.filters(filters)
bsw/jbe@19 174 end
bsw/jbe@19 175
bsw@305 176 --[[
bsw/jbe@19 177 if param.get("legend", atom.boolean) ~= false then
bsw/jbe@19 178 local filter = param.get_all_cgi().filter
bsw/jbe@19 179 if not filter or filter == "any" or filter ~= "finished" then
bsw/jbe@19 180 ui.bargraph_legend{
bsw/jbe@19 181 width = 25,
bsw/jbe@19 182 bars = {
bsw/jbe@19 183 { color = "#0a0", label = _"Supporter" },
bsw/jbe@19 184 { color = "#777", label = _"Potential supporter" },
bsw/jbe@19 185 { color = "#ddd", label = _"No support at all" },
bsw/jbe@19 186 }
bsw/jbe@0 187 }
bsw/jbe@0 188 end
bsw/jbe@19 189 if not filter or filter == "any" or filter == "finished" then
bsw/jbe@19 190 ui.bargraph_legend{
bsw/jbe@19 191 width = 25,
bsw/jbe@19 192 bars = {
bsw/jbe@19 193 { color = "#0a0", label = _"Yes" },
bsw/jbe@19 194 { color = "#aaa", label = _"Abstention" },
bsw/jbe@19 195 { color = "#a00", label = _"No" },
bsw/jbe@19 196 }
bsw/jbe@19 197 }
bsw/jbe@19 198 end
bsw/jbe@19 199 end
bsw/jbe@19 200
bsw@305 201 --]]

Impressum / About Us