liquid_feedback_frontend

view app/main/suggestion/_list.lua @ 2:5c601807d397

Version alpha3

Dark green part of issue supporter bargraph represents all satisfied supporters, regardless of having seen the latest draft

Wiki formatting for drafts

Showing differences between two drafts of the same initiative

Display of outgoing delegation chains

Many other improvements
author bsw
date Mon Nov 23 12:00:00 2009 +0100 (2009-11-23)
parents dd0109e81922
children 768faea1096d
line source
1 local suggestions_selector = param.get("suggestions_selector", "table")
3 ui.paginate{
4 selector = suggestions_selector,
5 content = function()
6 ui.list{
7 attr = { style = "table-layout: fixed;" },
8 records = suggestions_selector:exec(),
9 columns = {
10 {
11 label = _"Name",
12 content = function(record)
13 ui.link{
14 text = record.name,
15 module = "suggestion",
16 view = "show",
17 id = record.id
18 }
19 end
20 },
21 {
22 label = _"Support",
23 content = function(record)
24 if record.minus2_unfulfilled_count then
25 local max_value = record.initiative.issue.population
26 ui.bargraph{
27 max_value = max_value,
28 width = 100,
29 bars = {
30 { color = "#ddd", value = max_value - record.minus2_unfulfilled_count - record.minus1_unfulfilled_count - record.minus2_fulfilled_count - record.minus1_fulfilled_count },
31 { color = "#f88", value = record.minus1_unfulfilled_count + record.minus1_fulfilled_count },
32 { color = "#a00", value = record.minus2_unfulfilled_count + record.minus2_fulfilled_count },
33 { color = "#0a0", value = record.plus2_unfulfilled_count + record.plus2_fulfilled_count },
34 { color = "#8f8", value = record.plus1_unfulfilled_count + record.plus1_fulfilled_count },
35 { color = "#ddd", value = max_value - record.plus1_unfulfilled_count - record.plus2_unfulfilled_count - record.plus1_fulfilled_count - record.plus2_fulfilled_count },
36 }
37 }
38 end
39 end
40 },
41 {
42 content = function(record)
43 local degree
44 local opinion = Opinion:by_pk(app.session.member.id, record.id)
45 if opinion then
46 degree = opinion.degree
47 end
48 ui.link{
49 attr = { class = "action" .. (degree == -2 and " active_red2" or "") },
50 text = _"must not",
51 module = "opinion",
52 action = "update",
53 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
54 params = {
55 suggestion_id = record.id,
56 degree = -2
57 }
58 }
59 ui.link{
60 attr = { class = "action" .. (degree == -1 and " active_red1" or "") },
61 text = _"should not",
62 module = "opinion",
63 action = "update",
64 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
65 params = {
66 suggestion_id = record.id,
67 degree = -1
68 }
69 }
70 ui.link{
71 attr = { class = "action" .. (degree == nil and " active" or "") },
72 text = _"neutral",
73 module = "opinion",
74 action = "update",
75 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
76 params = {
77 suggestion_id = record.id,
78 delete = true
79 }
80 }
81 ui.link{
82 attr = { class = "action" .. (degree == 1 and " active_green1" or "") },
83 text = _"should",
84 module = "opinion",
85 action = "update",
86 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
87 params = {
88 suggestion_id = record.id,
89 degree = 1
90 }
91 }
92 ui.link{
93 attr = { class = "action" .. (degree == 2 and " active_green2" or "") },
94 text = _"must",
95 module = "opinion",
96 action = "update",
97 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
98 params = {
99 suggestion_id = record.id,
100 degree = 2
101 }
102 }
103 end
104 },
105 {
106 label = _"Suggestion currently not implemented",
107 label_attr = { style = "width: 101px;" },
108 content = function(record)
109 if record.minus2_unfulfilled_count then
110 local max_value = record.initiative.issue.population
111 ui.bargraph{
112 max_value = max_value,
113 width = 100,
114 bars = {
115 { color = "#ddd", value = max_value - record.minus2_unfulfilled_count - record.minus1_unfulfilled_count },
116 { color = "#f88", value = record.minus1_unfulfilled_count },
117 { color = "#a00", value = record.minus2_unfulfilled_count },
118 { color = "#0a0", value = record.plus2_unfulfilled_count },
119 { color = "#8f8", value = record.plus1_unfulfilled_count },
120 { color = "#ddd", value = max_value - record.plus1_unfulfilled_count - record.plus2_unfulfilled_count },
121 }
122 }
123 end
124 end
125 },
126 {
127 label = _"Suggestion currently implemented",
128 label_attr = { style = "width: 101px;" },
129 content = function(record)
130 if record.minus2_fulfilled_count then
131 local max_value = record.initiative.issue.population
132 ui.bargraph{
133 max_value = max_value,
134 width = 100,
135 bars = {
136 { color = "#ddd", value = max_value - record.minus2_fulfilled_count - record.minus1_fulfilled_count },
137 { color = "#f88", value = record.minus1_fulfilled_count },
138 { color = "#a00", value = record.minus2_fulfilled_count },
139 { color = "#0a0", value = record.plus2_fulfilled_count },
140 { color = "#8f8", value = record.plus1_fulfilled_count },
141 { color = "#ddd", value = max_value - record.plus1_fulfilled_count - record.plus2_fulfilled_count },
142 }
143 }
144 end
145 end
146 },
147 {
148 content = function(record)
149 local degree
150 local opinion = Opinion:by_pk(app.session.member.id, record.id)
151 if opinion then
152 degree = opinion.degree
153 end
154 if opinion then
155 if not opinion.fulfilled then
156 ui.image{ static = "icons/16/cross.png" }
157 ui.link{
158 attr = { class = "action" },
159 text = _"set implented",
160 module = "opinion",
161 action = "update",
162 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
163 params = {
164 suggestion_id = record.id,
165 fulfilled = true
166 }
167 }
168 else
169 ui.image{ static = "icons/16/tick.png" }
170 ui.link{
171 attr = { class = "action" },
172 text = _"remove implemented",
173 module = "opinion",
174 action = "update",
175 routing = { default = { mode = "redirect", module = request.get_module(), view = request.get_view(), id = param.get_id_cgi(), params = param.get_all_cgi() } },
176 params = {
177 suggestion_id = record.id,
178 fulfilled = false
179 }
180 }
181 end
182 end
183 end
184 },
185 }
186 }
187 end
188 }

Impressum / About Us