rev |
line source |
bsw@414
|
1 local for_unit = param.get("for_unit", atom.boolean)
|
bsw@414
|
2 local for_area = param.get("for_area", atom.boolean)
|
bsw@851
|
3 local for_events = param.get("for_events", atom.boolean)
|
bsw@1045
|
4 local for_member = param.get("for_member", "table")
|
bsw@1045
|
5 local member = param.get("member", "table")
|
bsw@1180
|
6 local phase = request.get_param{ name = "phase" }
|
bsw@851
|
7
|
bsw@1700
|
8 local selected_unit_id = config.single_unit_id or request.get_param{ name = "unit" } or app.single_unit_id
|
bsw@1570
|
9 if selected_unit_id == "all" then
|
bsw@1570
|
10 selected_unit_id = nil
|
bsw@1570
|
11 end
|
bsw@1570
|
12 local selected_unit = Unit:by_id(selected_unit_id)
|
bsw@1570
|
13
|
poelzi@127
|
14 local filters = {}
|
poelzi@127
|
15
|
bsw@1045
|
16 local admission_order_field = "filter_issue_order.order_in_unit"
|
bsw@1045
|
17 if for_area then
|
bsw@1045
|
18 admission_order_field = "filter_issue_order.order_in_area"
|
bsw@525
|
19 end
|
bsw@525
|
20
|
bsw/jbe@1309
|
21 local filter = { class = "filter_mode", name = "mode", label = _"mode" }
|
bsw/jbe@1309
|
22
|
bsw/jbe@1309
|
23 filter[#filter+1] = {
|
bsw/jbe@1309
|
24 name = "issue",
|
bsw/jbe@1309
|
25 label = _"issue list",
|
bsw/jbe@1309
|
26 selector_modifier = function() end
|
bsw/jbe@1309
|
27 }
|
bsw/jbe@1309
|
28
|
bsw/jbe@1309
|
29 filter[#filter+1] = {
|
bsw/jbe@1309
|
30 name = "timeline",
|
bsw/jbe@1309
|
31 label = _"timeline",
|
bsw/jbe@1309
|
32 selector_modifier = function() end
|
bsw/jbe@1309
|
33 }
|
bsw/jbe@1309
|
34
|
bsw/jbe@1309
|
35 --filters[#filters+1] = filter
|
bsw/jbe@1309
|
36
|
bsw@1045
|
37 if not for_issue and not for_member then
|
bsw@1045
|
38
|
bsw/jbe@1309
|
39 -- units
|
bsw@1045
|
40
|
bsw@1696
|
41 if not app.single_unit_id then
|
bsw@1504
|
42
|
bsw@1504
|
43 local units_selector
|
bsw@1504
|
44
|
bsw/jbe@1309
|
45 if app.session.member then
|
bsw@1504
|
46 units_selector = app.session.member:get_reference_selector("units")
|
bsw@1504
|
47 :add_order_by("name")
|
bsw/jbe@1309
|
48 else
|
bsw@1504
|
49 units_selector = Unit:new_selector()
|
bsw@1504
|
50 :add_order_by("name")
|
bsw@1045
|
51 end
|
bsw@1045
|
52
|
bsw@1504
|
53 local units = units_selector
|
bsw@1504
|
54 :add_where("attr->'hidden' ISNULL OR NOT (attr->'hidden' = 'true')")
|
bsw@1504
|
55 :add_where("active")
|
bsw@1504
|
56 :exec()
|
bsw@1504
|
57
|
bsw/jbe@1309
|
58 units:load_delegation_info_once_for_member_id(app.session.member_id)
|
bsw@1045
|
59
|
bsw/jbe@1309
|
60
|
bsw/jbe@1309
|
61 local filter = { class = "filter_unit", name = "unit", label = _"unit" }
|
bsw@1045
|
62
|
bsw@1045
|
63 filter[#filter+1] = {
|
bsw/jbe@1309
|
64 name = "all",
|
bsw@1389
|
65 label = _"All units",
|
bsw@1429
|
66 selector_modifier = function(selector)
|
bsw@1427
|
67 if app.session.member then
|
bsw@1434
|
68 selector:join("area", "__filter_area", "__filter_area.id = issue.area_id AND __filter_area.active")
|
bsw@1432
|
69 selector:join("unit", "__filter_unit", "__filter_unit.id = __filter_area.unit_id AND __filter_unit.active")
|
bsw@1429
|
70 selector:join("privilege", "__filter_privilege", { "__filter_privilege.unit_id = __filter_area.unit_id AND __filter_privilege.member_id = ?", app.session.member_id })
|
bsw@1427
|
71 end
|
bsw@1427
|
72 end
|
bsw@1045
|
73 }
|
bsw/jbe@1309
|
74
|
bsw@1570
|
75 local selected_unit_found = false
|
bsw@1570
|
76
|
bsw/jbe@1309
|
77 for i, unit in ipairs(units) do
|
bsw@1570
|
78 if selected_unit and unit.id == selected_unit.id then
|
bsw@1570
|
79 selected_unit_found = true
|
bsw@1570
|
80 end
|
bsw/jbe@1309
|
81 filter[#filter+1] = {
|
bsw/jbe@1309
|
82 name = tostring(unit.id),
|
bsw/jbe@1309
|
83 label = unit.name,
|
bsw/jbe@1309
|
84 selector_modifier = function(selector)
|
bsw@1435
|
85 selector:join("area", "__filter_area", "__filter_area.id = issue.area_id AND __filter_area.active")
|
bsw/jbe@1309
|
86 selector:add_where{ "__filter_area.unit_id = ?", unit.id }
|
bsw/jbe@1309
|
87 end
|
bsw/jbe@1309
|
88 }
|
bsw/jbe@1309
|
89 end
|
bsw/jbe@1309
|
90
|
bsw@1570
|
91 if not selected_unit_found and selected_unit then
|
bsw@1570
|
92 filter[#filter+1] = {
|
bsw@1570
|
93 name = tostring(selected_unit.id),
|
bsw@1570
|
94 label = selected_unit.name,
|
bsw@1570
|
95 selector_modifier = function(selector)
|
bsw@1570
|
96 selector:join("area", "__filter_area", "__filter_area.id = issue.area_id AND __filter_area.active")
|
bsw@1570
|
97 selector:add_where{ "__filter_area.unit_id = ?", selected_unit.id }
|
bsw@1570
|
98 end
|
bsw@1570
|
99 }
|
bsw@1570
|
100 end
|
bsw@1570
|
101
|
bsw@1570
|
102 --[[
|
bsw@1570
|
103 filter.selector_modifier = function(selector)
|
bsw@1570
|
104 selector:join("area", "__filter_area", "__filter_area.id = issue.area_id AND __filter_area.active")
|
bsw@1570
|
105 selector:add_where{ "__filter_area.unit_id = ?", 81 }
|
bsw@1570
|
106 end
|
bsw@1570
|
107 --]]
|
bsw@1570
|
108
|
bsw/jbe@1309
|
109 filters[#filters+1] = filter
|
bsw/jbe@1309
|
110
|
bsw@1045
|
111 end
|
bsw@1045
|
112
|
bsw/jbe@1309
|
113 -- areas
|
bsw/jbe@1309
|
114
|
bsw/jbe@1309
|
115 if not config.single_area_id and selected_unit then
|
bsw/jbe@1309
|
116
|
bsw/jbe@1309
|
117 local filter = { class = "filter_unit", name = "area", label = _"area" }
|
bsw/jbe@1309
|
118
|
bsw/jbe@1309
|
119 filter[#filter+1] = {
|
bsw/jbe@1309
|
120 name = "all",
|
bsw/jbe@1309
|
121 label = _"all subject areas",
|
bsw/jbe@1309
|
122 selector_modifier = function() end
|
bsw/jbe@1309
|
123 }
|
bsw@1045
|
124
|
bsw/jbe@1309
|
125 local areas = selected_unit.areas
|
bsw/jbe@1309
|
126 if config.area_reverse_order then
|
bsw/jbe@1309
|
127 areas = {}
|
bsw/jbe@1309
|
128 for i, area in ipairs(selected_unit.areas) do
|
bsw/jbe@1309
|
129 table.insert(areas, 1, area)
|
bsw/jbe@1309
|
130 end
|
bsw/jbe@1309
|
131 end
|
bsw/jbe@1309
|
132
|
bsw/jbe@1309
|
133 for i, area in ipairs(areas) do
|
bsw/jbe@1309
|
134 if area.active then
|
bsw/jbe@1309
|
135 filter[#filter+1] = {
|
bsw/jbe@1309
|
136 name = tostring(area.id),
|
bsw/jbe@1309
|
137 label = area.name,
|
bsw/jbe@1309
|
138 selector_modifier = function(selector)
|
bsw/jbe@1309
|
139 if area.unit_id == selected_unit.id then
|
bsw/jbe@1309
|
140 selector:add_where{ "issue.area_id = ?", area.id }
|
bsw/jbe@1309
|
141 end
|
bsw/jbe@1309
|
142 end
|
bsw/jbe@1309
|
143 }
|
bsw/jbe@1309
|
144 end
|
bsw/jbe@1309
|
145 end
|
bsw/jbe@1309
|
146
|
bsw/jbe@1309
|
147 filters[#filters+1] = filter
|
bsw@1489
|
148
|
bsw@1489
|
149 --[[
|
bsw@1489
|
150 else
|
bsw@1489
|
151
|
bsw@1489
|
152 local filter = { class = "filter_unit", name = "area", label = _"area" }
|
bsw@1489
|
153
|
bsw@1489
|
154 filter[#filter+1] = {
|
bsw@1489
|
155 name = "all",
|
bsw@1489
|
156 label = _"all subject areas",
|
bsw@1489
|
157 selector_modifier = function() end
|
bsw@1489
|
158 }
|
bsw@1489
|
159 filter[#filter+1] = {
|
bsw@1489
|
160 name = "_dummy",
|
bsw@1489
|
161 label = _"Select unit first",
|
bsw@1489
|
162 selector_modifier = function(selector) end
|
bsw@1489
|
163 }
|
bsw@1489
|
164 filters[#filters+1] = filter
|
bsw@1489
|
165 --]]
|
bsw/jbe@1309
|
166 end
|
bsw/jbe@1309
|
167
|
bsw/jbe@1309
|
168 if app.session.member_id then
|
bsw/jbe@1309
|
169
|
bsw/jbe@1309
|
170 -- interest
|
bsw/jbe@1309
|
171
|
bsw/jbe@1309
|
172 local filter = { class = "filter_filter", name = "filter", label = _"interest" }
|
bsw/jbe@1309
|
173
|
bsw@1045
|
174 filter[#filter+1] = {
|
bsw/jbe@1309
|
175 name = "all",
|
bsw/jbe@1309
|
176 label = _"all issues",
|
bsw/jbe@1309
|
177 selector_modifier = function() end
|
bsw@1045
|
178 }
|
bsw/jbe@1309
|
179
|
bsw@1696
|
180 if member and not for_unit and not for_area and not app.single_unit_id then
|
bsw/jbe@1309
|
181 filter[#filter+1] = {
|
bsw/jbe@1309
|
182 name = "my_units",
|
bsw/jbe@1309
|
183 label = _"in my units",
|
bsw/jbe@1309
|
184 selector_modifier = function ( selector )
|
bsw/jbe@1309
|
185 selector:join ( "area", "filter_area", "filter_area.id = issue.area_id" )
|
bsw/jbe@1309
|
186 selector:join ( "privilege", "filter_privilege", {
|
bsw/jbe@1309
|
187 "filter_privilege.unit_id = filter_area.unit_id AND filter_privilege.member_id = ?", member.id
|
bsw/jbe@1309
|
188 })
|
bsw/jbe@1309
|
189 end
|
bsw/jbe@1309
|
190 }
|
bsw/jbe@1309
|
191 end
|
bsw/jbe@1309
|
192
|
bsw/jbe@1309
|
193 if member then
|
bsw/jbe@1309
|
194 filter[#filter+1] = {
|
bsw/jbe@1309
|
195 name = "my_issues",
|
bsw/jbe@1309
|
196 label = _"my issues",
|
bsw/jbe@1309
|
197 selector_modifier = function ( selector )
|
bsw/jbe@1309
|
198 selector:left_join("interest", "filter_interest", { "filter_interest.issue_id = issue.id AND filter_interest.member_id = ? ", member.id })
|
bsw/jbe@1309
|
199 selector:left_join("direct_interest_snapshot", "filter_interest_s", { "filter_interest_s.issue_id = issue.id AND filter_interest_s.member_id = ? AND filter_interest_s.snapshot_id = issue.latest_snapshot_id", member.id })
|
bsw/jbe@1309
|
200 selector:left_join("delegating_interest_snapshot", "filter_d_interest_s", { "filter_d_interest_s.issue_id = issue.id AND filter_d_interest_s.member_id = ? AND filter_d_interest_s.snapshot_id = issue.latest_snapshot_id", member.id })
|
bsw/jbe@1309
|
201 end
|
bsw/jbe@1309
|
202 }
|
bsw/jbe@1309
|
203 end
|
bsw/jbe@1309
|
204
|
bsw/jbe@1309
|
205 if not config.voting_only then
|
bsw/jbe@1309
|
206 filters[#filters+1] = filter
|
bsw/jbe@1309
|
207 end
|
bsw/jbe@1309
|
208
|
bsw/jbe@1309
|
209 -- my issues
|
bsw/jbe@1309
|
210
|
bsw/jbe@1309
|
211 if request.get_param{ name = "filter" } == "my_issues" then
|
bsw/jbe@1309
|
212
|
bsw/jbe@1309
|
213 local delegation = request.get_param{ name = "delegation" }
|
bsw/jbe@1309
|
214
|
bsw/jbe@1309
|
215 local filter = { class = "filter_interest subfilter", name = "interest", label = _"delegation" }
|
bsw/jbe@1309
|
216
|
bsw/jbe@1309
|
217 filter[#filter+1] = {
|
bsw/jbe@1309
|
218 name = "all",
|
bsw/jbe@1309
|
219 label = _"interested directly or via delegation",
|
bsw/jbe@1309
|
220 selector_modifier = function ( selector )
|
bsw/jbe@1309
|
221 selector:add_where ( "filter_interest.issue_id NOTNULL OR filter_d_interest_s.issue_id NOTNULL" )
|
bsw/jbe@1309
|
222 end
|
bsw/jbe@1309
|
223 }
|
bsw/jbe@1309
|
224
|
bsw/jbe@1309
|
225 filter[#filter+1] = {
|
bsw/jbe@1309
|
226 name = "direct",
|
bsw/jbe@1309
|
227 label = _"direct interest",
|
bsw/jbe@1309
|
228 selector_modifier = function ( selector )
|
bsw/jbe@1309
|
229 selector:add_where ( "filter_interest.issue_id NOTNULL" )
|
bsw/jbe@1309
|
230 end
|
bsw/jbe@1309
|
231 }
|
bsw/jbe@1309
|
232
|
bsw/jbe@1309
|
233 filter[#filter+1] = {
|
bsw/jbe@1309
|
234 name = "via_delegation",
|
bsw/jbe@1309
|
235 label = _"interest via delegation",
|
bsw/jbe@1309
|
236 selector_modifier = function ( selector )
|
bsw/jbe@1309
|
237 selector:add_where ( "filter_d_interest_s.issue_id NOTNULL" )
|
bsw/jbe@1309
|
238 end
|
bsw/jbe@1309
|
239 }
|
bsw/jbe@1309
|
240
|
bsw/jbe@1309
|
241 filter[#filter+1] = {
|
bsw/jbe@1309
|
242 name = "initiated",
|
bsw/jbe@1309
|
243 label = _"initiated by me",
|
bsw/jbe@1309
|
244 selector_modifier = function ( selector )
|
bsw/jbe@1309
|
245 selector:add_where ( "filter_interest.issue_id NOTNULL" )
|
bsw/jbe@1309
|
246 end
|
bsw/jbe@1309
|
247 }
|
bsw/jbe@1309
|
248
|
bsw/jbe@1309
|
249 filters[#filters+1] = filter
|
bsw/jbe@1309
|
250
|
bsw/jbe@1309
|
251 end
|
bsw/jbe@1309
|
252
|
bsw@1045
|
253 end
|
bsw@1045
|
254
|
bsw@1045
|
255 -- phase
|
bsw@1045
|
256
|
bsw/jbe@1309
|
257 local filter = { name = "phase", label = _"phase" }
|
bsw@1045
|
258
|
bsw@1045
|
259 filter[#filter+1] = {
|
bsw@1045
|
260 name = "all",
|
bsw@1045
|
261 label = _"in all phases",
|
bsw@1045
|
262 selector_modifier = function ( selector )
|
bsw@1045
|
263 if not for_events then
|
bsw@1045
|
264 selector:left_join ( "issue_order_in_admission_state", "filter_issue_order", "filter_issue_order.id = issue.id" )
|
bsw@1045
|
265 selector:add_order_by ( "issue.closed DESC NULLS FIRST" )
|
bsw@1045
|
266 selector:add_order_by ( "issue.accepted ISNULL" )
|
bsw@1234
|
267 selector:add_order_by ( "CASE WHEN issue.accepted ISNULL THEN NULL ELSE justify_interval(coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.max_admission_time) - now()) END" )
|
bsw@1045
|
268 selector:add_order_by ( "CASE WHEN issue.accepted ISNULL THEN " .. admission_order_field .. " ELSE NULL END" )
|
bsw@1045
|
269 selector:add_order_by ( "id" )
|
bsw@851
|
270 end
|
bsw@525
|
271 end
|
bsw@525
|
272 }
|
bsw@525
|
273
|
bsw@525
|
274 filter[#filter+1] = {
|
bsw@1045
|
275 name = "admission",
|
bsw/jbe@1309
|
276 label = _"Admission",
|
bsw@1045
|
277 selector_modifier = function ( selector )
|
bsw@1045
|
278 selector:add_where { "issue.state = ?", "admission" }
|
bsw@1045
|
279 if not for_events then
|
bsw@1045
|
280 selector:left_join ( "issue_order_in_admission_state", "filter_issue_order", "filter_issue_order.id = issue.id" )
|
bsw@1045
|
281 selector:add_order_by ( admission_order_field )
|
bsw@1045
|
282 selector:add_order_by ( "id" )
|
bsw@851
|
283 end
|
bsw@525
|
284 end
|
bsw@525
|
285 }
|
bsw@1045
|
286
|
bsw@525
|
287 filter[#filter+1] = {
|
bsw@1045
|
288 name = "discussion",
|
bsw/jbe@1309
|
289 label = _"Discussion",
|
bsw@1045
|
290 selector_modifier = function ( selector )
|
bsw@1045
|
291 selector:add_where { "issue.state = ?", "discussion" }
|
bsw@1045
|
292 if not for_events then
|
bsw@1045
|
293 selector:add_order_by ( "issue.accepted + issue.discussion_time - now()" )
|
bsw@1045
|
294 selector:add_order_by ( "id" )
|
bsw@851
|
295 end
|
bsw@525
|
296 end
|
bsw@525
|
297 }
|
bsw@1045
|
298
|
bsw@525
|
299 filter[#filter+1] = {
|
bsw@1045
|
300 name = "verification",
|
bsw/jbe@1309
|
301 label = _"Verification",
|
bsw@1045
|
302 selector_modifier = function ( selector )
|
bsw@1045
|
303 selector:add_where { "issue.state = ?", "verification" }
|
bsw@1045
|
304 if not for_events then
|
bsw@1045
|
305 selector:add_order_by ( "issue.half_frozen + issue.verification_time - now()" )
|
bsw@1045
|
306 selector:add_order_by ( "id" )
|
bsw@1045
|
307 end
|
bsw@1045
|
308 end
|
bsw@1045
|
309 }
|
bsw@1045
|
310
|
bsw@1045
|
311 filter[#filter+1] = {
|
bsw@1045
|
312 name = "voting",
|
bsw/jbe@1309
|
313 label = _"Voting",
|
bsw@1045
|
314 selector_modifier = function ( selector )
|
bsw@1045
|
315 selector:add_where { "issue.state = ?", "voting" }
|
bsw@1045
|
316 if not for_events then
|
bsw@1045
|
317 selector:add_order_by ( "issue.fully_frozen + issue.voting_time - now()" )
|
bsw@1045
|
318 selector:add_order_by ( "id" )
|
bsw@851
|
319 end
|
bsw@525
|
320 end
|
bsw@525
|
321 }
|
bsw@525
|
322
|
bsw@525
|
323 filter[#filter+1] = {
|
bsw@1045
|
324 name = "closed",
|
bsw/jbe@1309
|
325 label = _"Results",
|
bsw@1045
|
326 selector_modifier = function ( selector )
|
bsw@1045
|
327 if not for_events then
|
bsw@1045
|
328 selector:add_where ( "issue.closed NOTNULL" )
|
bsw@1045
|
329 selector:add_order_by ( "issue.closed DESC" )
|
bsw@1045
|
330 selector:add_order_by ( "id" )
|
bsw@851
|
331 end
|
bsw@525
|
332 end
|
bsw@525
|
333 }
|
bsw@1045
|
334
|
bsw/jbe@1309
|
335 -- TODO
|
bsw/jbe@1309
|
336 if not config.voting_only then
|
bsw@1045
|
337 filters[#filters+1] = filter
|
bsw@1045
|
338 end
|
bsw@1045
|
339
|
bsw@1045
|
340 -- voting
|
bsw@1045
|
341
|
bsw@1045
|
342 if phase == "voting" and member then
|
bsw@1045
|
343
|
bsw/jbe@1309
|
344 local filter = { class = "subfilter", name = "voted", label = _"voted" }
|
bsw@1045
|
345
|
bsw@1045
|
346 filter[#filter+1] = {
|
bsw@1045
|
347 name = "all",
|
bsw@1045
|
348 label = _"voted and not voted by me",
|
bsw@1045
|
349 selector_modifier = function(selector) end
|
bsw@1045
|
350 }
|
bsw@1045
|
351
|
bsw@1045
|
352 filter[#filter+1] = {
|
bsw@1045
|
353 name = "voted",
|
bsw@1045
|
354 label = _"voted by me",
|
bsw@1045
|
355 selector_modifier = function(selector)
|
bsw@1045
|
356 selector:join("direct_voter", "filter_direct_voter", { "filter_direct_voter.issue_id = issue.id AND filter_direct_voter.member_id = ?", member.id })
|
bsw@851
|
357 end
|
bsw@1045
|
358 }
|
bsw@1045
|
359
|
bsw@1045
|
360 filter[#filter+1] = {
|
bsw@1045
|
361 name = "not_voted",
|
bsw@1045
|
362 label = _"not voted by me",
|
bsw@1045
|
363 selector_modifier = function(selector)
|
bsw@1045
|
364 selector:left_join("direct_voter", "filter_direct_voter", { "filter_direct_voter.issue_id = issue.id AND filter_direct_voter.member_id = ?", member.id })
|
bsw@1045
|
365 selector:add_where("filter_direct_voter.issue_id ISNULL")
|
bsw@851
|
366 end
|
bsw@1045
|
367 }
|
bsw@1045
|
368 filters[#filters+1] = filter
|
bsw@1045
|
369
|
bsw@1045
|
370
|
bsw@1045
|
371 end
|
bsw@1045
|
372
|
bsw@1045
|
373 -- closed
|
bsw@1045
|
374
|
bsw@1045
|
375 if phase == "closed" then
|
bsw@1045
|
376
|
bsw/jbe@1309
|
377 local filter = { class = "subfilter", name = "closed", label = _"closed" }
|
bsw@1045
|
378
|
bsw@1045
|
379 filter[#filter+1] = {
|
bsw/jbe@1309
|
380 name = "all",
|
bsw/jbe@1309
|
381 label = _"all results",
|
bsw/jbe@1309
|
382 selector_modifier = function ( selector ) end
|
bsw/jbe@1309
|
383 }
|
bsw/jbe@1309
|
384
|
bsw/jbe@1309
|
385 filter[#filter+1] = {
|
bsw@1045
|
386 name = "finished",
|
bsw@1045
|
387 label = _"finished",
|
bsw@1045
|
388 selector_modifier = function ( selector )
|
bsw@1045
|
389 selector:add_where ( "issue.state::text like 'finished_%'" )
|
bsw@1045
|
390 end
|
bsw@1045
|
391 }
|
bsw@1045
|
392
|
bsw@1045
|
393 filter[#filter+1] = {
|
bsw@1045
|
394 name = "canceled",
|
bsw@1045
|
395 label = _"canceled",
|
bsw@1045
|
396 selector_modifier = function ( selector )
|
bsw@1045
|
397 selector:add_where ( "issue.closed NOTNULL AND NOT issue.state::text like 'finished_%' AND issue.accepted NOTNULL" )
|
bsw@851
|
398 end
|
bsw@1045
|
399 }
|
bsw@1045
|
400
|
bsw@1045
|
401 filter[#filter+1] = {
|
bsw@1045
|
402 name = "not_accepted",
|
bsw@1045
|
403 label = _"not admitted",
|
bsw@1045
|
404 selector_modifier = function ( selector )
|
bsw@1045
|
405 selector:add_where ( "issue.closed NOTNULL AND issue.accepted ISNULL" )
|
bsw@1045
|
406 end
|
bsw@1045
|
407 }
|
bsw@525
|
408
|
bsw@1045
|
409 if member then
|
bsw@1045
|
410 filter[#filter+1] = {
|
bsw@1045
|
411 name = "voted",
|
bsw@1045
|
412 label = _"voted by me",
|
bsw@1045
|
413 selector_modifier = function(selector)
|
bsw@1045
|
414 selector:left_join("direct_voter", "filter_direct_voter", { "filter_direct_voter.issue_id = issue.id AND filter_direct_voter.member_id = ?", member.id })
|
bsw@1045
|
415 selector:left_join("delegating_voter", "filter_delegating_voter", { "filter_delegating_voter.issue_id = issue.id AND filter_delegating_voter.member_id = ?", member.id })
|
bsw@1045
|
416 selector:add_where("filter_direct_voter.issue_id NOTNULL or filter_delegating_voter.issue_id NOTNULL")
|
bsw@1045
|
417 end
|
bsw@1045
|
418 }
|
bsw@525
|
419
|
bsw@1045
|
420 filter[#filter+1] = {
|
bsw@1045
|
421 name = "voted_direct",
|
bsw@1045
|
422 label = _"voted directly by me",
|
bsw@1045
|
423 selector_modifier = function(selector)
|
bsw@1045
|
424 selector:join("direct_voter", "filter_direct_voter", { "filter_direct_voter.issue_id = issue.id AND filter_direct_voter.member_id = ?", member.id })
|
bsw@1045
|
425 end
|
bsw@1045
|
426 }
|
bsw@1045
|
427
|
bsw@459
|
428 filter[#filter+1] = {
|
bsw@1045
|
429 name = "voted_via_delegation",
|
bsw@1045
|
430 label = _"voted via delegation",
|
bsw@1045
|
431 selector_modifier = function(selector)
|
bsw@1045
|
432 selector:join("delegating_voter", "filter_delegating_voter", { "filter_delegating_voter.issue_id = issue.id AND filter_delegating_voter.member_id = ?", member.id })
|
bsw@1045
|
433 end
|
bsw@459
|
434 }
|
bsw@1045
|
435
|
bsw@459
|
436 filter[#filter+1] = {
|
bsw@1045
|
437 name = "not_voted",
|
bsw@1045
|
438 label = _"not voted by me",
|
bsw@459
|
439 selector_modifier = function(selector)
|
bsw@1045
|
440 selector:left_join("direct_voter", "filter_direct_voter", { "filter_direct_voter.issue_id = issue.id AND filter_direct_voter.member_id = ?", member.id })
|
bsw@1045
|
441 selector:left_join("delegating_voter", "filter_delegating_voter", { "filter_delegating_voter.issue_id = issue.id AND filter_delegating_voter.member_id = ?", member.id })
|
bsw@1045
|
442 selector:add_where("filter_direct_voter.issue_id ISNULL AND filter_delegating_voter.issue_id ISNULL")
|
bsw@459
|
443 end
|
bsw@459
|
444 }
|
bsw@459
|
445 end
|
bsw@1045
|
446
|
bsw@1045
|
447 filters[#filters+1] = filter
|
bsw@1045
|
448
|
bsw@1045
|
449
|
bsw@851
|
450 end
|
bsw@414
|
451
|
bsw@1045
|
452
|
bsw@414
|
453 end
|
poelzi@127
|
454
|
bsw@414
|
455
|
bsw@1045
|
456 return filters
|