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

Impressum / About Us