liquid_feedback_frontend

annotate app/main/suggestion/_list.lua @ 3:768faea1096d

Version alpha4

Members interested in an issue or supporting an initiative have a weight information attached. Browsing the members causing that weight is possible.

Initiatives may provide a link to an external discussion platform

Direct link on every initiative page to create an alternative initiative

Bugfix: No error when clicking "neutral", when "neutral" is currently selected
author bsw
date Mon Nov 30 12:00:00 2009 +0100 (2009-11-30)
parents 5c601807d397
children 80c215dbf076
rev   line source
bsw/jbe@0 1 local suggestions_selector = param.get("suggestions_selector", "table")
bsw/jbe@0 2
bsw/jbe@0 3 ui.paginate{
bsw/jbe@0 4 selector = suggestions_selector,
bsw/jbe@0 5 content = function()
bsw/jbe@0 6 ui.list{
bsw@2 7 attr = { style = "table-layout: fixed;" },
bsw/jbe@0 8 records = suggestions_selector:exec(),
bsw/jbe@0 9 columns = {
bsw/jbe@0 10 {
bsw@3 11 label = _"Suggestion",
bsw/jbe@0 12 content = function(record)
bsw/jbe@0 13 ui.link{
bsw/jbe@0 14 text = record.name,
bsw/jbe@0 15 module = "suggestion",
bsw/jbe@0 16 view = "show",
bsw/jbe@0 17 id = record.id
bsw/jbe@0 18 }
bsw/jbe@0 19 end
bsw/jbe@0 20 },
bsw/jbe@0 21 {
bsw@3 22 label = _"Collective opinion",
bsw@3 23 label_attr = { style = "width: 101px;" },
bsw/jbe@0 24 content = function(record)
bsw/jbe@0 25 if record.minus2_unfulfilled_count then
bsw@1 26 local max_value = record.initiative.issue.population
bsw/jbe@0 27 ui.bargraph{
bsw/jbe@0 28 max_value = max_value,
bsw@2 29 width = 100,
bsw/jbe@0 30 bars = {
bsw/jbe@0 31 { color = "#ddd", value = max_value - record.minus2_unfulfilled_count - record.minus1_unfulfilled_count - record.minus2_fulfilled_count - record.minus1_fulfilled_count },
bsw/jbe@0 32 { color = "#f88", value = record.minus1_unfulfilled_count + record.minus1_fulfilled_count },
bsw/jbe@0 33 { color = "#a00", value = record.minus2_unfulfilled_count + record.minus2_fulfilled_count },
bsw/jbe@0 34 { color = "#0a0", value = record.plus2_unfulfilled_count + record.plus2_fulfilled_count },
bsw/jbe@0 35 { color = "#8f8", value = record.plus1_unfulfilled_count + record.plus1_fulfilled_count },
bsw/jbe@0 36 { color = "#ddd", value = max_value - record.plus1_unfulfilled_count - record.plus2_unfulfilled_count - record.plus1_fulfilled_count - record.plus2_fulfilled_count },
bsw/jbe@0 37 }
bsw/jbe@0 38 }
bsw/jbe@0 39 end
bsw/jbe@0 40 end
bsw/jbe@0 41 },
bsw/jbe@0 42 {
bsw@3 43 label = _"My opinion",
bsw/jbe@0 44 content = function(record)
bsw/jbe@0 45 local degree
bsw/jbe@0 46 local opinion = Opinion:by_pk(app.session.member.id, record.id)
bsw/jbe@0 47 if opinion then
bsw/jbe@0 48 degree = opinion.degree
bsw/jbe@0 49 end
bsw/jbe@0 50 ui.link{
bsw/jbe@0 51 attr = { class = "action" .. (degree == -2 and " active_red2" or "") },
bsw/jbe@0 52 text = _"must not",
bsw/jbe@0 53 module = "opinion",
bsw/jbe@0 54 action = "update",
bsw/jbe@0 55 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
bsw/jbe@0 56 params = {
bsw/jbe@0 57 suggestion_id = record.id,
bsw/jbe@0 58 degree = -2
bsw/jbe@0 59 }
bsw/jbe@0 60 }
bsw/jbe@0 61 ui.link{
bsw/jbe@0 62 attr = { class = "action" .. (degree == -1 and " active_red1" or "") },
bsw/jbe@0 63 text = _"should not",
bsw/jbe@0 64 module = "opinion",
bsw/jbe@0 65 action = "update",
bsw/jbe@0 66 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
bsw/jbe@0 67 params = {
bsw/jbe@0 68 suggestion_id = record.id,
bsw/jbe@0 69 degree = -1
bsw/jbe@0 70 }
bsw/jbe@0 71 }
bsw/jbe@0 72 ui.link{
bsw/jbe@0 73 attr = { class = "action" .. (degree == nil and " active" or "") },
bsw/jbe@0 74 text = _"neutral",
bsw/jbe@0 75 module = "opinion",
bsw/jbe@0 76 action = "update",
bsw/jbe@0 77 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
bsw/jbe@0 78 params = {
bsw/jbe@0 79 suggestion_id = record.id,
bsw/jbe@0 80 delete = true
bsw/jbe@0 81 }
bsw/jbe@0 82 }
bsw/jbe@0 83 ui.link{
bsw/jbe@0 84 attr = { class = "action" .. (degree == 1 and " active_green1" or "") },
bsw/jbe@0 85 text = _"should",
bsw/jbe@0 86 module = "opinion",
bsw/jbe@0 87 action = "update",
bsw/jbe@0 88 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
bsw/jbe@0 89 params = {
bsw/jbe@0 90 suggestion_id = record.id,
bsw/jbe@0 91 degree = 1
bsw/jbe@0 92 }
bsw/jbe@0 93 }
bsw/jbe@0 94 ui.link{
bsw/jbe@0 95 attr = { class = "action" .. (degree == 2 and " active_green2" or "") },
bsw/jbe@0 96 text = _"must",
bsw/jbe@0 97 module = "opinion",
bsw/jbe@0 98 action = "update",
bsw/jbe@0 99 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
bsw/jbe@0 100 params = {
bsw/jbe@0 101 suggestion_id = record.id,
bsw/jbe@0 102 degree = 2
bsw/jbe@0 103 }
bsw/jbe@0 104 }
bsw/jbe@0 105 end
bsw/jbe@0 106 },
bsw/jbe@0 107 {
bsw@3 108 content = function(record)
bsw@3 109 local opinion = Opinion:by_pk(app.session.member.id, record.id)
bsw@3 110 if opinion and not opinion.fulfilled then
bsw@3 111 ui.image{ static = "icons/16/cross.png" }
bsw@3 112 end
bsw@3 113 end
bsw@3 114 },
bsw@3 115 {
bsw@2 116 label = _"Suggestion currently not implemented",
bsw@2 117 label_attr = { style = "width: 101px;" },
bsw/jbe@0 118 content = function(record)
bsw/jbe@0 119 if record.minus2_unfulfilled_count then
bsw@1 120 local max_value = record.initiative.issue.population
bsw/jbe@0 121 ui.bargraph{
bsw/jbe@0 122 max_value = max_value,
bsw@2 123 width = 100,
bsw/jbe@0 124 bars = {
bsw/jbe@0 125 { color = "#ddd", value = max_value - record.minus2_unfulfilled_count - record.minus1_unfulfilled_count },
bsw/jbe@0 126 { color = "#f88", value = record.minus1_unfulfilled_count },
bsw/jbe@0 127 { color = "#a00", value = record.minus2_unfulfilled_count },
bsw/jbe@0 128 { color = "#0a0", value = record.plus2_unfulfilled_count },
bsw/jbe@0 129 { color = "#8f8", value = record.plus1_unfulfilled_count },
bsw/jbe@0 130 { color = "#ddd", value = max_value - record.plus1_unfulfilled_count - record.plus2_unfulfilled_count },
bsw/jbe@0 131 }
bsw/jbe@0 132 }
bsw/jbe@0 133 end
bsw/jbe@0 134 end
bsw/jbe@0 135 },
bsw/jbe@0 136 {
bsw@3 137 content = function(record)
bsw@3 138 local opinion = Opinion:by_pk(app.session.member.id, record.id)
bsw@3 139 if opinion and opinion.fulfilled then
bsw@3 140 ui.image{ static = "icons/16/tick.png" }
bsw@3 141 end
bsw@3 142 end
bsw@3 143 },
bsw@3 144 {
bsw@2 145 label = _"Suggestion currently implemented",
bsw@2 146 label_attr = { style = "width: 101px;" },
bsw/jbe@0 147 content = function(record)
bsw/jbe@0 148 if record.minus2_fulfilled_count then
bsw@1 149 local max_value = record.initiative.issue.population
bsw/jbe@0 150 ui.bargraph{
bsw/jbe@0 151 max_value = max_value,
bsw@2 152 width = 100,
bsw/jbe@0 153 bars = {
bsw/jbe@0 154 { color = "#ddd", value = max_value - record.minus2_fulfilled_count - record.minus1_fulfilled_count },
bsw/jbe@0 155 { color = "#f88", value = record.minus1_fulfilled_count },
bsw/jbe@0 156 { color = "#a00", value = record.minus2_fulfilled_count },
bsw/jbe@0 157 { color = "#0a0", value = record.plus2_fulfilled_count },
bsw/jbe@0 158 { color = "#8f8", value = record.plus1_fulfilled_count },
bsw/jbe@0 159 { color = "#ddd", value = max_value - record.plus1_fulfilled_count - record.plus2_fulfilled_count },
bsw/jbe@0 160 }
bsw/jbe@0 161 }
bsw/jbe@0 162 end
bsw/jbe@0 163 end
bsw/jbe@0 164 },
bsw/jbe@0 165 {
bsw@3 166 label_attr = { style = "width: 200px;" },
bsw/jbe@0 167 content = function(record)
bsw/jbe@0 168 local degree
bsw/jbe@0 169 local opinion = Opinion:by_pk(app.session.member.id, record.id)
bsw/jbe@0 170 if opinion then
bsw/jbe@0 171 degree = opinion.degree
bsw/jbe@0 172 end
bsw/jbe@0 173 if opinion then
bsw/jbe@0 174 if not opinion.fulfilled then
bsw@3 175 local text = ""
bsw@3 176 if opinion.degree > 0 then
bsw@3 177 text = _"Mark suggestion as implemented and express satisfaction"
bsw@3 178 else
bsw@3 179 text = _"Mark suggestion as implemented and express dissatisfaction"
bsw@3 180 end
bsw/jbe@0 181 ui.link{
bsw/jbe@0 182 attr = { class = "action" },
bsw@3 183 text = text,
bsw/jbe@0 184 module = "opinion",
bsw/jbe@0 185 action = "update",
bsw/jbe@0 186 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
bsw/jbe@0 187 params = {
bsw/jbe@0 188 suggestion_id = record.id,
bsw/jbe@0 189 fulfilled = true
bsw/jbe@0 190 }
bsw/jbe@0 191 }
bsw/jbe@0 192 else
bsw@3 193 if opinion.degree > 0 then
bsw@3 194 text = _"Mark suggestion as not implemented and express dissatisfaction"
bsw@3 195 else
bsw@3 196 text = _"Mark suggestion as not implemented and express satisfaction"
bsw@3 197 end
bsw/jbe@0 198 ui.link{
bsw/jbe@0 199 attr = { class = "action" },
bsw@3 200 text = text,
bsw/jbe@0 201 module = "opinion",
bsw/jbe@0 202 action = "update",
bsw/jbe@0 203 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
bsw/jbe@0 204 params = {
bsw/jbe@0 205 suggestion_id = record.id,
bsw/jbe@0 206 fulfilled = false
bsw/jbe@0 207 }
bsw/jbe@0 208 }
bsw/jbe@0 209 end
bsw/jbe@0 210 end
bsw/jbe@0 211 end
bsw/jbe@0 212 },
bsw@3 213 {
bsw@3 214 content = function(record)
bsw@3 215 local opinion = Opinion:by_pk(app.session.member.id, record.id)
bsw@3 216 if opinion then
bsw@3 217 if (opinion.fulfilled and opinion.degree > 0) or (not opinion.fulfilled and opinion.degree < 0) then
bsw@3 218 ui.image{ static = "icons/16/thumb_up_green.png" }
bsw@3 219 else
bsw@3 220 ui.image{ static = "icons/16/thumb_down_red.png" }
bsw@3 221 end
bsw@3 222 end
bsw@3 223 end
bsw@3 224 },
bsw/jbe@0 225 }
bsw/jbe@0 226 }
bsw/jbe@0 227 end
bsw/jbe@0 228 }

Impressum / About Us