bsw/jbe@0: local suggestions_selector = param.get("suggestions_selector", "table") bsw/jbe@0: bsw/jbe@0: ui.paginate{ bsw/jbe@0: selector = suggestions_selector, bsw/jbe@0: content = function() bsw/jbe@0: ui.list{ bsw/jbe@0: records = suggestions_selector:exec(), bsw/jbe@0: columns = { bsw/jbe@0: { bsw/jbe@0: label = _"Name", bsw/jbe@0: content = function(record) bsw/jbe@0: ui.link{ bsw/jbe@0: text = record.name, bsw/jbe@0: module = "suggestion", bsw/jbe@0: view = "show", bsw/jbe@0: id = record.id bsw/jbe@0: } bsw/jbe@0: end bsw/jbe@0: }, bsw/jbe@0: { bsw/jbe@0: label = _"Support", bsw/jbe@0: content = function(record) bsw/jbe@0: if record.minus2_unfulfilled_count then bsw/jbe@0: local max_value = record.initiative.supporter_count bsw/jbe@0: ui.bargraph{ bsw/jbe@0: max_value = max_value, bsw/jbe@0: width = 50, bsw/jbe@0: bars = { bsw/jbe@0: { color = "#ddd", value = max_value - record.minus2_unfulfilled_count - record.minus1_unfulfilled_count - record.minus2_fulfilled_count - record.minus1_fulfilled_count }, bsw/jbe@0: { color = "#f88", value = record.minus1_unfulfilled_count + record.minus1_fulfilled_count }, bsw/jbe@0: { color = "#a00", value = record.minus2_unfulfilled_count + record.minus2_fulfilled_count }, bsw/jbe@0: { color = "#0a0", value = record.plus2_unfulfilled_count + record.plus2_fulfilled_count }, bsw/jbe@0: { color = "#8f8", value = record.plus1_unfulfilled_count + record.plus1_fulfilled_count }, bsw/jbe@0: { color = "#ddd", value = max_value - record.plus1_unfulfilled_count - record.plus2_unfulfilled_count - record.plus1_fulfilled_count - record.plus2_fulfilled_count }, bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: end bsw/jbe@0: end bsw/jbe@0: }, bsw/jbe@0: { bsw/jbe@0: content = function(record) bsw/jbe@0: local degree bsw/jbe@0: local opinion = Opinion:by_pk(app.session.member.id, record.id) bsw/jbe@0: if opinion then bsw/jbe@0: degree = opinion.degree bsw/jbe@0: end bsw/jbe@0: ui.link{ bsw/jbe@0: attr = { class = "action" .. (degree == -2 and " active_red2" or "") }, bsw/jbe@0: text = _"must not", bsw/jbe@0: module = "opinion", bsw/jbe@0: action = "update", bsw/jbe@0: 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: params = { bsw/jbe@0: suggestion_id = record.id, bsw/jbe@0: degree = -2 bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: ui.link{ bsw/jbe@0: attr = { class = "action" .. (degree == -1 and " active_red1" or "") }, bsw/jbe@0: text = _"should not", bsw/jbe@0: module = "opinion", bsw/jbe@0: action = "update", bsw/jbe@0: 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: params = { bsw/jbe@0: suggestion_id = record.id, bsw/jbe@0: degree = -1 bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: ui.link{ bsw/jbe@0: attr = { class = "action" .. (degree == nil and " active" or "") }, bsw/jbe@0: text = _"neutral", bsw/jbe@0: module = "opinion", bsw/jbe@0: action = "update", bsw/jbe@0: 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: params = { bsw/jbe@0: suggestion_id = record.id, bsw/jbe@0: delete = true bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: ui.link{ bsw/jbe@0: attr = { class = "action" .. (degree == 1 and " active_green1" or "") }, bsw/jbe@0: text = _"should", bsw/jbe@0: module = "opinion", bsw/jbe@0: action = "update", bsw/jbe@0: 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: params = { bsw/jbe@0: suggestion_id = record.id, bsw/jbe@0: degree = 1 bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: ui.link{ bsw/jbe@0: attr = { class = "action" .. (degree == 2 and " active_green2" or "") }, bsw/jbe@0: text = _"must", bsw/jbe@0: module = "opinion", bsw/jbe@0: action = "update", bsw/jbe@0: 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: params = { bsw/jbe@0: suggestion_id = record.id, bsw/jbe@0: degree = 2 bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: end bsw/jbe@0: }, bsw/jbe@0: { bsw/jbe@0: label = _"Not fullfilled", bsw/jbe@0: content = function(record) bsw/jbe@0: if record.minus2_unfulfilled_count then bsw/jbe@0: local max_value = record.initiative.supporter_count bsw/jbe@0: ui.bargraph{ bsw/jbe@0: max_value = max_value, bsw/jbe@0: width = 50, bsw/jbe@0: bars = { bsw/jbe@0: { color = "#ddd", value = max_value - record.minus2_unfulfilled_count - record.minus1_unfulfilled_count }, bsw/jbe@0: { color = "#f88", value = record.minus1_unfulfilled_count }, bsw/jbe@0: { color = "#a00", value = record.minus2_unfulfilled_count }, bsw/jbe@0: { color = "#0a0", value = record.plus2_unfulfilled_count }, bsw/jbe@0: { color = "#8f8", value = record.plus1_unfulfilled_count }, bsw/jbe@0: { color = "#ddd", value = max_value - record.plus1_unfulfilled_count - record.plus2_unfulfilled_count }, bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: end bsw/jbe@0: end bsw/jbe@0: }, bsw/jbe@0: { bsw/jbe@0: label = _"Fullfilled", bsw/jbe@0: content = function(record) bsw/jbe@0: if record.minus2_fulfilled_count then bsw/jbe@0: local max_value = record.initiative.supporter_count bsw/jbe@0: ui.bargraph{ bsw/jbe@0: max_value = max_value, bsw/jbe@0: width = 50, bsw/jbe@0: bars = { bsw/jbe@0: { color = "#ddd", value = max_value - record.minus2_fulfilled_count - record.minus1_fulfilled_count }, bsw/jbe@0: { color = "#f88", value = record.minus1_fulfilled_count }, bsw/jbe@0: { color = "#a00", value = record.minus2_fulfilled_count }, bsw/jbe@0: { color = "#0a0", value = record.plus2_fulfilled_count }, bsw/jbe@0: { color = "#8f8", value = record.plus1_fulfilled_count }, bsw/jbe@0: { color = "#ddd", value = max_value - record.plus1_fulfilled_count - record.plus2_fulfilled_count }, bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: end bsw/jbe@0: end bsw/jbe@0: }, bsw/jbe@0: { bsw/jbe@0: content = function(record) bsw/jbe@0: local degree bsw/jbe@0: local opinion = Opinion:by_pk(app.session.member.id, record.id) bsw/jbe@0: if opinion then bsw/jbe@0: degree = opinion.degree bsw/jbe@0: end bsw/jbe@0: if opinion then bsw/jbe@0: if not opinion.fulfilled then bsw/jbe@0: ui.image{ static = "icons/16/cross.png" } bsw/jbe@0: ui.link{ bsw/jbe@0: attr = { class = "action" }, bsw/jbe@0: text = _"set fulfilled", bsw/jbe@0: module = "opinion", bsw/jbe@0: action = "update", bsw/jbe@0: 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: params = { bsw/jbe@0: suggestion_id = record.id, bsw/jbe@0: fulfilled = true bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: else bsw/jbe@0: ui.image{ static = "icons/16/tick.png" } bsw/jbe@0: ui.link{ bsw/jbe@0: attr = { class = "action" }, bsw/jbe@0: text = _"remove fulfilled", bsw/jbe@0: module = "opinion", bsw/jbe@0: action = "update", bsw/jbe@0: 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: params = { bsw/jbe@0: suggestion_id = record.id, bsw/jbe@0: fulfilled = false bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: end bsw/jbe@0: end bsw/jbe@0: end bsw/jbe@0: }, bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: end bsw/jbe@0: }