liquid_feedback_frontend

annotate app/main/suggestion/_list_element.lua @ 1062:f03fbffc1800

New layout for suggestion details view
author bsw
date Wed Jul 16 21:52:17 2014 +0200 (2014-07-16)
parents cc64a4fc6ab6
children
rev   line source
bsw@718 1
bsw@718 2 local initiative = param.get("initiative", "table")
bsw@718 3 local suggestions_selector = param.get("suggestions_selector", "table")
bsw@718 4
bsw@718 5 suggestions_selector:add_order_by("plus2_unfulfilled_count + plus1_unfulfilled_count DESC, id")
bsw@718 6
bsw@718 7 local tab_id = param.get("tab_id")
bsw@718 8 local show_name = param.get("show_name", atom.boolean)
bsw@718 9 if show_name == nil then
bsw@718 10 show_name = true
bsw@718 11 end
bsw@718 12 local show_filter = param.get("show_filter", atom.boolean)
bsw@718 13 if show_filter == nil then
bsw@718 14 show_filter = true
bsw@718 15 end
bsw@718 16
bsw@718 17 local partial = {
bsw@718 18 routing = {
bsw@718 19 default = {
bsw@718 20 mode = "redirect",
bsw@718 21 module = "initiative",
bsw@718 22 view = "show_tab",
bsw@718 23 params = {
bsw@718 24 initiative_id = initiative.id,
bsw@718 25 tab = "suggestions",
bsw@718 26 tab_id = tab_id
bsw@718 27 },
bsw@718 28 }
bsw@718 29 }
bsw@718 30 }
bsw@718 31
bsw@718 32 local ui_filters = ui.filters
bsw@718 33 if true or not show_filter then
bsw@718 34 ui_filters = function(args) args.content() end
bsw@718 35 end
bsw@718 36
bsw@718 37 ui.container{ attr = { class = "box" },
bsw@718 38 content = function()
bsw@718 39 ui.paginate{
bsw@718 40 selector = suggestions_selector,
bsw@718 41 content = function()
bsw@718 42 ui.list{
bsw@718 43 attr = { style = "table-layout: fixed;" },
bsw@718 44 records = suggestions_selector:exec(),
bsw@718 45 columns = {
bsw@718 46 {
bsw@718 47 label = show_name and _"Suggestion" or nil,
bsw@718 48 content = function(record)
bsw@718 49 if show_name then
bsw@718 50 ui.link{
bsw@718 51 text = record.name,
bsw@718 52 module = "suggestion",
bsw@718 53 view = "show",
bsw@718 54 id = record.id
bsw@718 55 }
bsw@718 56 end
bsw@718 57 end
bsw@718 58 },
bsw@718 59 {
bsw@718 60 label = _"Collective opinion of supporters",
bsw@718 61 label_attr = { style = "width: 101px;" },
bsw@718 62 content = function(record)
bsw@718 63 if record.minus2_unfulfilled_count then
bsw@718 64 local max_value = record.initiative.supporter_count
bsw@718 65 ui.bargraph{
bsw@718 66 max_value = max_value,
bsw@718 67 width = 100,
bsw@718 68 bars = {
bsw@718 69 { color = "#0a0", value = record.plus2_unfulfilled_count + record.plus2_fulfilled_count },
bsw@718 70 { color = "#8f8", value = record.plus1_unfulfilled_count + record.plus1_fulfilled_count },
bsw@718 71 { color = "#eee", value = max_value - record.minus2_unfulfilled_count - record.minus1_unfulfilled_count - record.minus2_fulfilled_count - record.minus1_fulfilled_count - record.plus1_unfulfilled_count - record.plus2_unfulfilled_count - record.plus1_fulfilled_count - record.plus2_fulfilled_count},
bsw@718 72 { color = "#f88", value = record.minus1_unfulfilled_count + record.minus1_fulfilled_count },
bsw@718 73 { color = "#a00", value = record.minus2_unfulfilled_count + record.minus2_fulfilled_count },
bsw@718 74 }
bsw@718 75 }
bsw@718 76 end
bsw@718 77 end
bsw@718 78 },
bsw@718 79 {
bsw@718 80 label = _"Suggestion currently not implemented",
bsw@718 81 label_attr = { style = "width: 101px;" },
bsw@718 82 content = function(record)
bsw@718 83 if record.minus2_unfulfilled_count then
bsw@718 84 local max_value = record.initiative.supporter_count
bsw@718 85 ui.bargraph{
bsw@718 86 max_value = max_value,
bsw@718 87 width = 100,
bsw@718 88 bars = {
bsw@718 89 { color = "#0a0", value = record.plus2_unfulfilled_count },
bsw@718 90 { color = "#8f8", value = record.plus1_unfulfilled_count },
bsw@718 91 { color = "#eee", value = max_value - record.minus2_unfulfilled_count - record.minus1_unfulfilled_count - record.plus1_unfulfilled_count - record.plus2_unfulfilled_count },
bsw@718 92 { color = "#f88", value = record.minus1_unfulfilled_count },
bsw@718 93 { color = "#a00", value = record.minus2_unfulfilled_count },
bsw@718 94 }
bsw@718 95 }
bsw@718 96 end
bsw@718 97 end
bsw@718 98 },
bsw@718 99 {
bsw@718 100 label = _"Suggestion currently implemented",
bsw@718 101 label_attr = { style = "width: 101px;" },
bsw@718 102 content = function(record)
bsw@718 103 if record.minus2_fulfilled_count then
bsw@718 104 local max_value = record.initiative.supporter_count
bsw@718 105 ui.bargraph{
bsw@718 106 max_value = max_value,
bsw@718 107 width = 100,
bsw@718 108 bars = {
bsw@718 109 { color = "#0a0", value = record.plus2_fulfilled_count },
bsw@718 110 { color = "#8f8", value = record.plus1_fulfilled_count },
bsw@718 111 { color = "#eee", value = max_value - record.minus2_fulfilled_count - record.minus1_fulfilled_count - record.plus1_fulfilled_count - record.plus2_fulfilled_count},
bsw@718 112 { color = "#f88", value = record.minus1_fulfilled_count },
bsw@718 113 { color = "#a00", value = record.minus2_fulfilled_count },
bsw@718 114 }
bsw@718 115 }
bsw@718 116 end
bsw@718 117 end
bsw@718 118 },
bsw@718 119 }
bsw@718 120 }
bsw@718 121 end
bsw@718 122 }
bsw@718 123 end
bsw@718 124 }

Impressum / About Us