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
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 } |