rev |
line source |
bsw/jbe@0
|
1 local issues_selector = param.get("issues_selector", "table")
|
bsw/jbe@0
|
2
|
bsw@51
|
3 if app.session.member_id then
|
bsw@51
|
4 issues_selector
|
bsw@51
|
5 :left_join("interest", "_interest", { "_interest.issue_id = issue.id AND _interest.member_id = ?", app.session.member.id} )
|
bsw@51
|
6 :add_field("(_interest.member_id NOTNULL)", "is_interested")
|
bsw@51
|
7 end
|
bsw@11
|
8
|
bsw/jbe@19
|
9 ui.add_partial_param_names{
|
bsw/jbe@19
|
10 "filter",
|
bsw/jbe@19
|
11 "filter_open",
|
bsw/jbe@19
|
12 "filter_voting",
|
bsw/jbe@19
|
13 "filter_interest",
|
bsw/jbe@19
|
14 "issue_list"
|
bsw/jbe@19
|
15 }
|
bsw/jbe@0
|
16
|
poelzi@127
|
17 local filters = execute.load_chunk{module="issue", chunk="_filters.lua"}
|
bsw/jbe@19
|
18
|
bsw/jbe@19
|
19 filters.content = function()
|
bsw@275
|
20 ui.paginate{
|
bsw/jbe@19
|
21 per_page = tonumber(param.get("per_page")),
|
bsw/jbe@19
|
22 selector = issues_selector,
|
bsw/jbe@19
|
23 content = function()
|
bsw/jbe@19
|
24 local highlight_string = param.get("highlight_string", "string")
|
bsw/jbe@19
|
25 local issues = issues or issues_selector:exec()
|
bsw/jbe@19
|
26 -- issues:load(initiatives)
|
bsw@273
|
27 ui.container{ attr = { class = "issues" }, content = function()
|
bsw@273
|
28
|
bsw@273
|
29 for i, issue in ipairs(issues) do
|
bsw@273
|
30
|
bsw@273
|
31 local class = "issue"
|
bsw@273
|
32 if issue.is_interested then
|
bsw@273
|
33 class = class .. " interested"
|
bsw@273
|
34 end
|
bsw@273
|
35 ui.container{ attr = { class = class }, content = function()
|
bsw@273
|
36
|
bsw@273
|
37 ui.container{ attr = { class = "issue_info" }, content = function()
|
bsw@273
|
38
|
bsw@273
|
39 ui.tag{
|
bsw@273
|
40 tag = "div",
|
bsw@273
|
41 content = function()
|
bsw@273
|
42 ui.link{
|
bsw@273
|
43 attr = { class = "issue_id" },
|
bsw@273
|
44 text = _("Issue ##{id}", { id = tostring(issue.id) }),
|
bsw@273
|
45 module = "issue",
|
bsw@273
|
46 view = "show",
|
bsw@273
|
47 id = issue.id
|
bsw@273
|
48 }
|
bsw@273
|
49
|
bsw@273
|
50 -- if not param.get("for_area_list", atom.boolean) then
|
bsw@273
|
51 slot.put(" · ")
|
bsw@273
|
52 ui.tag{ content = issue.area.unit.name }
|
bsw@273
|
53 slot.put(" · ")
|
bsw@273
|
54 ui.tag{ content = issue.area.name }
|
bsw@273
|
55 -- end
|
bsw@273
|
56 end
|
bsw/jbe@19
|
57 }
|
bsw@273
|
58 ui.tag{
|
bsw@273
|
59 tag = "div",
|
bsw@273
|
60 content = function()
|
bsw@273
|
61
|
bsw@273
|
62 ui.tag{ content = issue.policy.name }
|
bsw@273
|
63
|
bsw@273
|
64 slot.put(" · ")
|
bsw@273
|
65 ui.tag{ content = issue.state_name }
|
bsw@273
|
66
|
bsw@273
|
67 if issue.state_time_left then
|
bsw@273
|
68 slot.put(" · ")
|
bsw@273
|
69 ui.tag{ content = _("#{time_left} left", { time_left = issue.state_time_left }) }
|
bsw@273
|
70 end
|
bsw@273
|
71
|
bsw@273
|
72 end
|
bsw@273
|
73 }
|
bsw@273
|
74
|
bsw@273
|
75
|
bsw@273
|
76 if issue.old_state then
|
bsw@273
|
77 ui.field.text{ value = format.time(issue.sort) }
|
bsw@273
|
78 ui.field.text{ value = Issue:get_state_name_for_state(issue.old_state) .. " > " .. Issue:get_state_name_for_state(issue.new_state) }
|
bsw/jbe@19
|
79 else
|
bsw/jbe@19
|
80 end
|
bsw@273
|
81 end }
|
bsw@273
|
82
|
bsw@273
|
83 ui.container{ attr = { class = "initiative_list" }, content = function()
|
bsw@273
|
84
|
bsw@273
|
85 local initiatives_selector = issue:get_reference_selector("initiatives")
|
bsw/jbe@19
|
86 local highlight_string = param.get("highlight_string")
|
bsw/jbe@19
|
87 if highlight_string then
|
bsw/jbe@19
|
88 initiatives_selector:add_field( {'"highlight"("initiative"."name", ?)', highlight_string }, "name_highlighted")
|
bsw/jbe@19
|
89 end
|
bsw/jbe@19
|
90 execute.view{
|
bsw/jbe@19
|
91 module = "initiative",
|
bsw/jbe@19
|
92 view = "_list",
|
bsw/jbe@19
|
93 params = {
|
bsw@273
|
94 issue = issue,
|
bsw/jbe@19
|
95 initiatives_selector = initiatives_selector,
|
bsw/jbe@19
|
96 highlight_string = highlight_string,
|
bsw@51
|
97 per_page = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3,
|
bsw/jbe@19
|
98 no_sort = true,
|
bsw@51
|
99 limit = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3
|
bsw/jbe@19
|
100 }
|
bsw/jbe@19
|
101 }
|
bsw@273
|
102 end }
|
bsw@273
|
103 end }
|
bsw@273
|
104 end
|
bsw@273
|
105 end }
|
bsw/jbe@19
|
106 end
|
bsw/jbe@19
|
107 }
|
bsw/jbe@19
|
108 end
|
bsw/jbe@19
|
109
|
bsw@275
|
110 filters.opened = true
|
bsw/jbe@19
|
111 filters.selector = issues_selector
|
bsw/jbe@19
|
112
|
bsw/jbe@19
|
113 if param.get("no_filter", atom.boolean) then
|
bsw/jbe@19
|
114 filters.content()
|
bsw/jbe@19
|
115 else
|
bsw/jbe@19
|
116 ui.filters(filters)
|
bsw/jbe@19
|
117 end
|
bsw/jbe@19
|
118
|
bsw/jbe@19
|
119 if param.get("legend", atom.boolean) ~= false then
|
bsw/jbe@19
|
120 local filter = param.get_all_cgi().filter
|
bsw/jbe@19
|
121 if not filter or filter == "any" or filter ~= "finished" then
|
bsw/jbe@19
|
122 ui.bargraph_legend{
|
bsw/jbe@19
|
123 width = 25,
|
bsw/jbe@19
|
124 bars = {
|
bsw/jbe@19
|
125 { color = "#0a0", label = _"Supporter" },
|
bsw/jbe@19
|
126 { color = "#777", label = _"Potential supporter" },
|
bsw/jbe@19
|
127 { color = "#ddd", label = _"No support at all" },
|
bsw/jbe@19
|
128 }
|
bsw/jbe@0
|
129 }
|
bsw/jbe@0
|
130 end
|
bsw/jbe@19
|
131 if not filter or filter == "any" or filter == "finished" then
|
bsw/jbe@19
|
132 ui.bargraph_legend{
|
bsw/jbe@19
|
133 width = 25,
|
bsw/jbe@19
|
134 bars = {
|
bsw/jbe@19
|
135 { color = "#0a0", label = _"Yes" },
|
bsw/jbe@19
|
136 { color = "#aaa", label = _"Abstention" },
|
bsw/jbe@19
|
137 { color = "#a00", label = _"No" },
|
bsw/jbe@19
|
138 }
|
bsw/jbe@19
|
139 }
|
bsw/jbe@19
|
140 end
|
bsw/jbe@19
|
141 end
|
bsw/jbe@19
|
142
|