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@2: attr = { style = "table-layout: fixed;" }, bsw/jbe@0: records = suggestions_selector:exec(), bsw/jbe@0: columns = { bsw/jbe@0: { bsw@3: label = _"Suggestion", 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@3: label = _"Collective opinion", bsw@3: label_attr = { style = "width: 101px;" }, bsw/jbe@0: content = function(record) bsw/jbe@0: if record.minus2_unfulfilled_count then bsw@1: local max_value = record.initiative.issue.population bsw/jbe@0: ui.bargraph{ bsw/jbe@0: max_value = max_value, bsw@2: width = 100, 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@3: label = _"My opinion", 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@3: content = function(record) bsw@3: local opinion = Opinion:by_pk(app.session.member.id, record.id) bsw@3: if opinion and not opinion.fulfilled then bsw@3: ui.image{ static = "icons/16/cross.png" } bsw@3: end bsw@3: end bsw@3: }, bsw@3: { bsw@2: label = _"Suggestion currently not implemented", bsw@2: label_attr = { style = "width: 101px;" }, bsw/jbe@0: content = function(record) bsw/jbe@0: if record.minus2_unfulfilled_count then bsw@1: local max_value = record.initiative.issue.population bsw/jbe@0: ui.bargraph{ bsw/jbe@0: max_value = max_value, bsw@2: width = 100, 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@3: content = function(record) bsw@3: local opinion = Opinion:by_pk(app.session.member.id, record.id) bsw@3: if opinion and opinion.fulfilled then bsw@3: ui.image{ static = "icons/16/tick.png" } bsw@3: end bsw@3: end bsw@3: }, bsw@3: { bsw@2: label = _"Suggestion currently implemented", bsw@2: label_attr = { style = "width: 101px;" }, bsw/jbe@0: content = function(record) bsw/jbe@0: if record.minus2_fulfilled_count then bsw@1: local max_value = record.initiative.issue.population bsw/jbe@0: ui.bargraph{ bsw/jbe@0: max_value = max_value, bsw@2: width = 100, 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@3: label_attr = { style = "width: 200px;" }, 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@3: local text = "" bsw@3: if opinion.degree > 0 then bsw@3: text = _"Mark suggestion as implemented and express satisfaction" bsw@3: else bsw@3: text = _"Mark suggestion as implemented and express dissatisfaction" bsw@3: end bsw/jbe@0: ui.link{ bsw/jbe@0: attr = { class = "action" }, bsw@3: text = text, 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@3: if opinion.degree > 0 then bsw@3: text = _"Mark suggestion as not implemented and express dissatisfaction" bsw@3: else bsw@3: text = _"Mark suggestion as not implemented and express satisfaction" bsw@3: end bsw/jbe@0: ui.link{ bsw/jbe@0: attr = { class = "action" }, bsw@3: text = text, 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@3: { bsw@3: content = function(record) bsw@3: local opinion = Opinion:by_pk(app.session.member.id, record.id) bsw@3: if opinion then bsw@3: if (opinion.fulfilled and opinion.degree > 0) or (not opinion.fulfilled and opinion.degree < 0) then bsw@3: ui.image{ static = "icons/16/thumb_up_green.png" } bsw@3: else bsw@3: ui.image{ static = "icons/16/thumb_down_red.png" } bsw@3: end bsw@3: end bsw@3: end bsw@3: }, bsw/jbe@0: } bsw/jbe@0: } bsw/jbe@0: end bsw/jbe@0: }