liquid_feedback_frontend
annotate app/main/suggestion/_list.lua @ 4:80c215dbf076
Version alpha5
Many optical changes and improved usability
Support for different wiki-formatting-engines
Help system
Many optical changes and improved usability
Support for different wiki-formatting-engines
Help system
author | bsw/jbe |
---|---|
date | Thu Dec 10 12:00:00 2009 +0100 (2009-12-10) |
parents | 768faea1096d |
children | afd9f769c7ae |
rev | line source |
---|---|
bsw/jbe@4 | 1 |
bsw/jbe@4 | 2 local initiative = param.get("initiative", "table") |
bsw/jbe@0 | 3 local suggestions_selector = param.get("suggestions_selector", "table") |
bsw/jbe@0 | 4 |
bsw/jbe@4 | 5 ui.order{ |
bsw/jbe@4 | 6 name = name, |
bsw/jbe@0 | 7 selector = suggestions_selector, |
bsw/jbe@4 | 8 options = { |
bsw/jbe@4 | 9 { |
bsw/jbe@4 | 10 name = "all", |
bsw/jbe@4 | 11 label = _"all", |
bsw/jbe@4 | 12 order_by = "minus2_unfulfilled_count + minus1_unfulfilled_count + minus2_fulfilled_count + minus1_fulfilled_count + plus2_unfulfilled_count + plus1_unfulfilled_count + plus2_fulfilled_count + plus1_fulfilled_count DESC, id" |
bsw/jbe@4 | 13 }, |
bsw/jbe@4 | 14 { |
bsw/jbe@4 | 15 name = "plus2", |
bsw/jbe@4 | 16 label = _"must", |
bsw/jbe@4 | 17 order_by = "plus2_unfulfilled_count + plus2_fulfilled_count DESC, id" |
bsw/jbe@4 | 18 }, |
bsw/jbe@4 | 19 { |
bsw/jbe@4 | 20 name = "plus", |
bsw/jbe@4 | 21 label = _"must/should", |
bsw/jbe@4 | 22 order_by = "plus2_unfulfilled_count + plus1_unfulfilled_count + plus2_fulfilled_count + plus1_fulfilled_count DESC, id" |
bsw/jbe@4 | 23 }, |
bsw/jbe@4 | 24 { |
bsw/jbe@4 | 25 name = "minus", |
bsw/jbe@4 | 26 label = _"must/should not", |
bsw/jbe@4 | 27 order_by = "minus2_unfulfilled_count + minus1_unfulfilled_count + minus2_fulfilled_count + minus1_fulfilled_count DESC, id" |
bsw/jbe@4 | 28 }, |
bsw/jbe@4 | 29 { |
bsw/jbe@4 | 30 name = "minus2", |
bsw/jbe@4 | 31 label = _"must not", |
bsw/jbe@4 | 32 order_by = "minus2_unfulfilled_count + minus2_fulfilled_count DESC, id" |
bsw/jbe@4 | 33 }, |
bsw/jbe@4 | 34 { |
bsw/jbe@4 | 35 name = "unfulfilled", |
bsw/jbe@4 | 36 label = _"not implemented", |
bsw/jbe@4 | 37 order_by = "minus2_unfulfilled_count + minus1_unfulfilled_count + plus2_unfulfilled_count + plus1_unfulfilled_count DESC, id" |
bsw/jbe@4 | 38 }, |
bsw/jbe@4 | 39 { |
bsw/jbe@4 | 40 name = "plus2_unfulfilled", |
bsw/jbe@4 | 41 label = _"must", |
bsw/jbe@4 | 42 order_by = "plus2_unfulfilled_count DESC, id" |
bsw/jbe@4 | 43 }, |
bsw/jbe@4 | 44 { |
bsw/jbe@4 | 45 name = "plus_unfulfilled", |
bsw/jbe@4 | 46 label = _"must/should", |
bsw/jbe@4 | 47 order_by = "plus2_unfulfilled_count + plus1_unfulfilled_count DESC, id" |
bsw/jbe@4 | 48 }, |
bsw/jbe@4 | 49 { |
bsw/jbe@4 | 50 name = "minus_unfulfilled", |
bsw/jbe@4 | 51 label = _"must/should not", |
bsw/jbe@4 | 52 order_by = "minus2_unfulfilled_count + minus1_unfulfilled_count DESC, id" |
bsw/jbe@4 | 53 }, |
bsw/jbe@4 | 54 { |
bsw/jbe@4 | 55 name = "minus2_unfulfilled", |
bsw/jbe@4 | 56 label = _"must not", |
bsw/jbe@4 | 57 order_by = "minus2_unfulfilled_count DESC, id" |
bsw/jbe@4 | 58 }, |
bsw/jbe@4 | 59 }, |
bsw/jbe@0 | 60 content = function() |
bsw/jbe@4 | 61 ui.paginate{ |
bsw/jbe@4 | 62 selector = suggestions_selector, |
bsw/jbe@4 | 63 content = function() |
bsw/jbe@4 | 64 ui.list{ |
bsw/jbe@4 | 65 attr = { style = "table-layout: fixed;" }, |
bsw/jbe@4 | 66 records = suggestions_selector:exec(), |
bsw/jbe@4 | 67 columns = { |
bsw/jbe@4 | 68 { |
bsw/jbe@4 | 69 label = _"Suggestion", |
bsw/jbe@4 | 70 content = function(record) |
bsw/jbe@4 | 71 ui.link{ |
bsw/jbe@4 | 72 text = record.name, |
bsw/jbe@4 | 73 module = "suggestion", |
bsw/jbe@4 | 74 view = "show", |
bsw/jbe@4 | 75 id = record.id |
bsw/jbe@0 | 76 } |
bsw/jbe@4 | 77 end |
bsw/jbe@4 | 78 }, |
bsw/jbe@4 | 79 { |
bsw/jbe@4 | 80 label = _"Collective opinion", |
bsw/jbe@4 | 81 label_attr = { style = "width: 101px;" }, |
bsw/jbe@4 | 82 content = function(record) |
bsw/jbe@4 | 83 if record.minus2_unfulfilled_count then |
bsw/jbe@4 | 84 local max_value = record.initiative.issue.population |
bsw/jbe@4 | 85 ui.bargraph{ |
bsw/jbe@4 | 86 max_value = max_value, |
bsw/jbe@4 | 87 width = 50, |
bsw/jbe@4 | 88 bars = { |
bsw/jbe@4 | 89 { color = "#ddd", value = max_value - record.minus2_unfulfilled_count - record.minus1_unfulfilled_count - record.minus2_fulfilled_count - record.minus1_fulfilled_count }, |
bsw/jbe@4 | 90 { color = "#f88", value = record.minus1_unfulfilled_count + record.minus1_fulfilled_count }, |
bsw/jbe@4 | 91 { color = "#a00", value = record.minus2_unfulfilled_count + record.minus2_fulfilled_count }, |
bsw/jbe@4 | 92 { color = "#0a0", value = record.plus2_unfulfilled_count + record.plus2_fulfilled_count }, |
bsw/jbe@4 | 93 { color = "#8f8", value = record.plus1_unfulfilled_count + record.plus1_fulfilled_count }, |
bsw/jbe@4 | 94 { color = "#ddd", value = max_value - record.plus1_unfulfilled_count - record.plus2_unfulfilled_count - record.plus1_fulfilled_count - record.plus2_fulfilled_count }, |
bsw/jbe@4 | 95 } |
bsw/jbe@4 | 96 } |
bsw/jbe@4 | 97 end |
bsw/jbe@4 | 98 end |
bsw/jbe@4 | 99 }, |
bsw/jbe@4 | 100 { |
bsw/jbe@4 | 101 label = _"My opinion", |
bsw/jbe@4 | 102 content = function(record) |
bsw/jbe@4 | 103 local degree |
bsw/jbe@4 | 104 local opinion = Opinion:by_pk(app.session.member.id, record.id) |
bsw/jbe@4 | 105 if opinion then |
bsw/jbe@4 | 106 degree = opinion.degree |
bsw@3 | 107 end |
bsw/jbe@0 | 108 ui.link{ |
bsw/jbe@4 | 109 attr = { class = "action" .. (degree == -2 and " active_red2" or "") }, |
bsw/jbe@4 | 110 text = _"must not", |
bsw/jbe@4 | 111 module = "opinion", |
bsw/jbe@4 | 112 action = "update", |
bsw/jbe@4 | 113 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } }, |
bsw/jbe@4 | 114 params = { |
bsw/jbe@4 | 115 suggestion_id = record.id, |
bsw/jbe@4 | 116 degree = -2 |
bsw/jbe@4 | 117 } |
bsw/jbe@4 | 118 } |
bsw/jbe@4 | 119 ui.link{ |
bsw/jbe@4 | 120 attr = { class = "action" .. (degree == -1 and " active_red1" or "") }, |
bsw/jbe@4 | 121 text = _"should not", |
bsw/jbe@4 | 122 module = "opinion", |
bsw/jbe@4 | 123 action = "update", |
bsw/jbe@4 | 124 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } }, |
bsw/jbe@4 | 125 params = { |
bsw/jbe@4 | 126 suggestion_id = record.id, |
bsw/jbe@4 | 127 degree = -1 |
bsw/jbe@4 | 128 } |
bsw/jbe@4 | 129 } |
bsw/jbe@4 | 130 ui.link{ |
bsw/jbe@4 | 131 attr = { class = "action" .. (degree == nil and " active" or "") }, |
bsw/jbe@4 | 132 text = _"neutral", |
bsw/jbe@0 | 133 module = "opinion", |
bsw/jbe@0 | 134 action = "update", |
bsw/jbe@0 | 135 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 | 136 params = { |
bsw/jbe@0 | 137 suggestion_id = record.id, |
bsw/jbe@4 | 138 delete = true |
bsw/jbe@0 | 139 } |
bsw/jbe@0 | 140 } |
bsw/jbe@0 | 141 ui.link{ |
bsw/jbe@4 | 142 attr = { class = "action" .. (degree == 1 and " active_green1" or "") }, |
bsw/jbe@4 | 143 text = _"should", |
bsw/jbe@4 | 144 module = "opinion", |
bsw/jbe@4 | 145 action = "update", |
bsw/jbe@4 | 146 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } }, |
bsw/jbe@4 | 147 params = { |
bsw/jbe@4 | 148 suggestion_id = record.id, |
bsw/jbe@4 | 149 degree = 1 |
bsw/jbe@4 | 150 } |
bsw/jbe@4 | 151 } |
bsw/jbe@4 | 152 ui.link{ |
bsw/jbe@4 | 153 attr = { class = "action" .. (degree == 2 and " active_green2" or "") }, |
bsw/jbe@4 | 154 text = _"must", |
bsw/jbe@0 | 155 module = "opinion", |
bsw/jbe@0 | 156 action = "update", |
bsw/jbe@0 | 157 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 | 158 params = { |
bsw/jbe@0 | 159 suggestion_id = record.id, |
bsw/jbe@4 | 160 degree = 2 |
bsw/jbe@0 | 161 } |
bsw/jbe@0 | 162 } |
bsw/jbe@0 | 163 end |
bsw/jbe@4 | 164 }, |
bsw/jbe@4 | 165 { |
bsw/jbe@4 | 166 content = function(record) |
bsw/jbe@4 | 167 local opinion = Opinion:by_pk(app.session.member.id, record.id) |
bsw/jbe@4 | 168 if opinion and not opinion.fulfilled then |
bsw/jbe@4 | 169 ui.image{ static = "icons/16/cross.png" } |
bsw/jbe@4 | 170 end |
bsw/jbe@4 | 171 end |
bsw/jbe@4 | 172 }, |
bsw/jbe@4 | 173 { |
bsw/jbe@4 | 174 label = _"Suggestion currently not implemented", |
bsw/jbe@4 | 175 label_attr = { style = "width: 101px;" }, |
bsw/jbe@4 | 176 content = function(record) |
bsw/jbe@4 | 177 if record.minus2_unfulfilled_count then |
bsw/jbe@4 | 178 local max_value = record.initiative.issue.population |
bsw/jbe@4 | 179 ui.bargraph{ |
bsw/jbe@4 | 180 max_value = max_value, |
bsw/jbe@4 | 181 width = 50, |
bsw/jbe@4 | 182 bars = { |
bsw/jbe@4 | 183 { color = "#ddd", value = max_value - record.minus2_unfulfilled_count - record.minus1_unfulfilled_count }, |
bsw/jbe@4 | 184 { color = "#f88", value = record.minus1_unfulfilled_count }, |
bsw/jbe@4 | 185 { color = "#a00", value = record.minus2_unfulfilled_count }, |
bsw/jbe@4 | 186 { color = "#0a0", value = record.plus2_unfulfilled_count }, |
bsw/jbe@4 | 187 { color = "#8f8", value = record.plus1_unfulfilled_count }, |
bsw/jbe@4 | 188 { color = "#ddd", value = max_value - record.plus1_unfulfilled_count - record.plus2_unfulfilled_count }, |
bsw/jbe@4 | 189 } |
bsw/jbe@4 | 190 } |
bsw/jbe@4 | 191 end |
bsw/jbe@4 | 192 end |
bsw/jbe@4 | 193 }, |
bsw/jbe@4 | 194 { |
bsw/jbe@4 | 195 content = function(record) |
bsw/jbe@4 | 196 local opinion = Opinion:by_pk(app.session.member.id, record.id) |
bsw/jbe@4 | 197 if opinion and opinion.fulfilled then |
bsw/jbe@4 | 198 ui.image{ static = "icons/16/tick.png" } |
bsw/jbe@4 | 199 end |
bsw/jbe@4 | 200 end |
bsw/jbe@4 | 201 }, |
bsw/jbe@4 | 202 { |
bsw/jbe@4 | 203 label = _"Suggestion currently implemented", |
bsw/jbe@4 | 204 label_attr = { style = "width: 101px;" }, |
bsw/jbe@4 | 205 content = function(record) |
bsw/jbe@4 | 206 if record.minus2_fulfilled_count then |
bsw/jbe@4 | 207 local max_value = record.initiative.issue.population |
bsw/jbe@4 | 208 ui.bargraph{ |
bsw/jbe@4 | 209 max_value = max_value, |
bsw/jbe@4 | 210 width = 50, |
bsw/jbe@4 | 211 bars = { |
bsw/jbe@4 | 212 { color = "#ddd", value = max_value - record.minus2_fulfilled_count - record.minus1_fulfilled_count }, |
bsw/jbe@4 | 213 { color = "#f88", value = record.minus1_fulfilled_count }, |
bsw/jbe@4 | 214 { color = "#a00", value = record.minus2_fulfilled_count }, |
bsw/jbe@4 | 215 { color = "#0a0", value = record.plus2_fulfilled_count }, |
bsw/jbe@4 | 216 { color = "#8f8", value = record.plus1_fulfilled_count }, |
bsw/jbe@4 | 217 { color = "#ddd", value = max_value - record.plus1_fulfilled_count - record.plus2_fulfilled_count }, |
bsw/jbe@4 | 218 } |
bsw/jbe@4 | 219 } |
bsw/jbe@4 | 220 end |
bsw@3 | 221 end |
bsw/jbe@4 | 222 }, |
bsw/jbe@4 | 223 { |
bsw/jbe@4 | 224 label_attr = { style = "width: 200px;" }, |
bsw/jbe@4 | 225 content = function(record) |
bsw/jbe@4 | 226 local degree |
bsw/jbe@4 | 227 local opinion = Opinion:by_pk(app.session.member.id, record.id) |
bsw/jbe@4 | 228 if opinion then |
bsw/jbe@4 | 229 degree = opinion.degree |
bsw/jbe@4 | 230 end |
bsw/jbe@4 | 231 if opinion then |
bsw/jbe@4 | 232 if not opinion.fulfilled then |
bsw/jbe@4 | 233 local text = "" |
bsw/jbe@4 | 234 if opinion.degree > 0 then |
bsw/jbe@4 | 235 text = _"Mark suggestion as implemented and express satisfaction" |
bsw/jbe@4 | 236 else |
bsw/jbe@4 | 237 text = _"Mark suggestion as implemented and express dissatisfaction" |
bsw/jbe@4 | 238 end |
bsw/jbe@4 | 239 ui.link{ |
bsw/jbe@4 | 240 attr = { class = "action" }, |
bsw/jbe@4 | 241 text = text, |
bsw/jbe@4 | 242 module = "opinion", |
bsw/jbe@4 | 243 action = "update", |
bsw/jbe@4 | 244 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } }, |
bsw/jbe@4 | 245 params = { |
bsw/jbe@4 | 246 suggestion_id = record.id, |
bsw/jbe@4 | 247 fulfilled = true |
bsw/jbe@4 | 248 } |
bsw/jbe@4 | 249 } |
bsw/jbe@4 | 250 else |
bsw/jbe@4 | 251 if opinion.degree > 0 then |
bsw/jbe@4 | 252 text = _"Mark suggestion as not implemented and express dissatisfaction" |
bsw/jbe@4 | 253 else |
bsw/jbe@4 | 254 text = _"Mark suggestion as not implemented and express satisfaction" |
bsw/jbe@4 | 255 end |
bsw/jbe@4 | 256 ui.link{ |
bsw/jbe@4 | 257 attr = { class = "action" }, |
bsw/jbe@4 | 258 text = text, |
bsw/jbe@4 | 259 module = "opinion", |
bsw/jbe@4 | 260 action = "update", |
bsw/jbe@4 | 261 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } }, |
bsw/jbe@4 | 262 params = { |
bsw/jbe@4 | 263 suggestion_id = record.id, |
bsw/jbe@4 | 264 fulfilled = false |
bsw/jbe@4 | 265 } |
bsw/jbe@4 | 266 } |
bsw/jbe@4 | 267 end |
bsw/jbe@4 | 268 end |
bsw/jbe@4 | 269 end |
bsw/jbe@4 | 270 }, |
bsw/jbe@4 | 271 { |
bsw/jbe@4 | 272 content = function(record) |
bsw/jbe@4 | 273 local opinion = Opinion:by_pk(app.session.member.id, record.id) |
bsw/jbe@4 | 274 if opinion then |
bsw/jbe@4 | 275 if (opinion.fulfilled and opinion.degree > 0) or (not opinion.fulfilled and opinion.degree < 0) then |
bsw/jbe@4 | 276 ui.image{ static = "icons/16/thumb_up_green.png" } |
bsw/jbe@4 | 277 else |
bsw/jbe@4 | 278 ui.image{ static = "icons/16/thumb_down_red.png" } |
bsw/jbe@4 | 279 end |
bsw/jbe@4 | 280 end |
bsw/jbe@4 | 281 end |
bsw/jbe@4 | 282 }, |
bsw/jbe@4 | 283 } |
bsw/jbe@4 | 284 } |
bsw/jbe@4 | 285 end |
bsw/jbe@0 | 286 } |
bsw/jbe@0 | 287 end |
bsw/jbe@0 | 288 } |
bsw/jbe@4 | 289 |
bsw/jbe@4 | 290 if initiative then |
bsw/jbe@4 | 291 ui.field.timestamp{ label = _"Last snapshot:", value = initiative.issue.snapshot } |
bsw/jbe@4 | 292 end |