rev |
line source |
bsw@31
|
1 function show_issue(issue, initiatives_selector)
|
bsw@31
|
2 ui.list{
|
bsw@31
|
3 records = initiatives_selector:exec(),
|
bsw@31
|
4 columns = {
|
bsw@31
|
5 {
|
bsw@31
|
6 label = _"Date",
|
bsw@31
|
7 label_attr = { style = "width: 7.5em;" },
|
bsw@31
|
8 content = function(initiative)
|
bsw@31
|
9 slot.put(format.date(issue.closed))
|
bsw@31
|
10 end
|
bsw@31
|
11 },
|
bsw@31
|
12 {
|
bsw@31
|
13 label_attr = { style = "width: 8em;" },
|
bsw@31
|
14 label = _"Id",
|
bsw@31
|
15 content = function(initiative)
|
bsw@31
|
16 ui.link{
|
bsw@31
|
17 external = "",
|
bsw@31
|
18 text = "#" .. tostring(issue.id) .. "." .. tostring(initiative.id),
|
bsw@31
|
19 attr = {
|
bsw@31
|
20 onclick =
|
bsw@31
|
21 "openEl('initiative_" .. tostring(initiative.id) .. "');" ..
|
bsw@31
|
22 "return(false);"
|
bsw@31
|
23 }
|
bsw@31
|
24 }
|
bsw@31
|
25 end
|
bsw@31
|
26 },
|
bsw@31
|
27 {
|
bsw@31
|
28 label = _"Rank",
|
bsw@31
|
29 label_attr = { style = "width: 3em;" },
|
bsw@31
|
30 field_attr = { style = "text-align: right;" },
|
bsw@31
|
31 content = function(initiative)
|
bsw@31
|
32 ui.field.rank{ value = initiative.rank }
|
bsw@31
|
33 end
|
bsw@31
|
34 },
|
bsw@31
|
35 {
|
bsw@31
|
36 label = _"Name",
|
bsw@31
|
37 content = function(initiative)
|
bsw@31
|
38 if initiative.rank and initiative.rank == 1 then
|
bsw@31
|
39 slot.put("<b>")
|
bsw@31
|
40 end
|
bsw@31
|
41 ui.field.text{ value = initiative.name }
|
bsw@31
|
42 if initiative.rank and initiative.rank == 1 then
|
bsw@31
|
43 slot.put("</b>")
|
bsw@31
|
44 end
|
bsw@31
|
45 end
|
bsw@31
|
46 }
|
bsw@31
|
47 }
|
bsw@31
|
48 }
|
bsw@31
|
49 end
|
bsw@31
|
50
|
bsw@31
|
51 function link_issue(issue)
|
bsw@31
|
52 ui.link{
|
bsw@31
|
53 external = "",
|
bsw@31
|
54 attr = {
|
bsw@31
|
55 style = "text-decoration: none;",
|
bsw@31
|
56 name = "issue_" .. tostring(issue.id),
|
bsw@31
|
57 onclick =
|
bsw@31
|
58 "openEl('issue_" .. tostring(issue.id) .. "');" ..
|
bsw@31
|
59 "return(false);"
|
bsw@31
|
60 },
|
bsw@31
|
61 content = function()
|
bsw@31
|
62 ui.heading{
|
bsw@31
|
63 attr = { style = "background-color: #ddd; color: #000;" },
|
bsw@31
|
64 content = _("##{id}", { id = issue.id })
|
bsw@31
|
65 }
|
bsw@31
|
66 end
|
bsw@31
|
67 }
|
bsw@31
|
68 end
|
bsw@31
|
69
|
bsw@31
|
70
|
bsw@31
|
71 local area = param.get("area", "table")
|
bsw@31
|
72
|
bsw@31
|
73 local issue_selector = Issue:new_selector()
|
bsw@31
|
74 issue_selector:add_where{ "area_id = ?", area.id }
|
bsw@31
|
75 issue_selector:add_where("closed NOTNULL")
|
bsw@31
|
76 issue_selector:add_order_by("id")
|
bsw@31
|
77
|
bsw@31
|
78
|
bsw@31
|
79 local issues = issue_selector:exec()
|
bsw@31
|
80
|
bsw@31
|
81 ui.container{
|
bsw@31
|
82 attr = {
|
bsw@31
|
83 id = "area_" .. tostring(area.id)
|
bsw@31
|
84 },
|
bsw@31
|
85 content = function()
|
bsw@31
|
86
|
bsw@31
|
87 link_area(area)
|
bsw@31
|
88
|
bsw@31
|
89 for i, issue in ipairs(issues) do
|
bsw@31
|
90
|
bsw@31
|
91 link_issue(issue)
|
bsw@31
|
92
|
bsw@31
|
93 local initiatives_selector = issue:get_reference_selector("initiatives")
|
bsw@31
|
94
|
bsw@31
|
95 local initiatives_count = initiatives_selector:count()
|
bsw@31
|
96
|
bsw@31
|
97 initiatives_selector:add_order_by("rank")
|
bsw@31
|
98 initiatives_selector:limit(3)
|
bsw@31
|
99
|
bsw@31
|
100 show_issue(issue, initiatives_selector)
|
bsw@31
|
101
|
bsw@31
|
102 if initiatives_count > 3 then
|
bsw@31
|
103 ui.link{
|
bsw@31
|
104 attr = {
|
bsw@31
|
105 style = "margin-left: 8em; font-style: italic;",
|
bsw@31
|
106 onclick = "openEl('issue_" .. tostring(issue.id) .. "'); return(false);"
|
bsw@31
|
107 },
|
bsw@31
|
108 content = _("and #{count} more initiatives", { count = initiatives_count - 3 }),
|
bsw@31
|
109 external = ""
|
bsw@31
|
110 }
|
bsw@31
|
111 end
|
bsw@31
|
112
|
bsw@31
|
113 slot.put("<br />")
|
bsw@31
|
114
|
bsw@31
|
115 end
|
bsw@31
|
116
|
bsw@31
|
117 end
|
bsw@31
|
118 }
|
bsw@31
|
119
|
bsw@34
|
120 ui.script{ script = "parents['area_" .. tostring(area.id) .. "'] = 'areas';" }
|
bsw@34
|
121
|
bsw@31
|
122 local next_issue = issues[1]
|
bsw@31
|
123 if next_issue then
|
bsw@31
|
124 ui.script{ script = "next_issues['area_" .. tostring(area.id) .. "'] = 'issue_" .. tostring(next_issue.id) .. "';" }
|
bsw@31
|
125 end
|
bsw@31
|
126
|
bsw@31
|
127 if next_issue then
|
bsw@31
|
128 local next_initiative = next_issue.initiatives[1]
|
bsw@31
|
129 if next_initiative then
|
bsw@31
|
130 ui.script{ script = "next_initiatives['area_" .. tostring(area.id) .. "'] = 'initiative_" .. tostring(next_initiative.id) .. "';" }
|
bsw@31
|
131 end
|
bsw@31
|
132 end
|
bsw@31
|
133
|
bsw@31
|
134
|
bsw@31
|
135 for i, issue in ipairs(issues) do
|
bsw@31
|
136 local initiatives_selector = issue:get_reference_selector("initiatives")
|
bsw@31
|
137 :add_order_by("rank")
|
bsw@31
|
138
|
bsw@31
|
139 local initiatives = initiatives_selector:exec()
|
bsw@31
|
140
|
bsw@31
|
141 ui.container{
|
bsw@31
|
142 attr = {
|
bsw@31
|
143 id = "issue_" .. tostring(issue.id)
|
bsw@31
|
144 },
|
bsw@31
|
145 content = function()
|
bsw@31
|
146 link_area(area)
|
bsw@31
|
147 link_issue(issue)
|
bsw@31
|
148 show_issue(issue, initiatives_selector)
|
bsw@31
|
149 end
|
bsw@31
|
150 }
|
bsw@31
|
151
|
bsw@31
|
152 local previous_issue = issues[i-1]
|
bsw@31
|
153 if previous_issue then
|
bsw@31
|
154 ui.script{ script = "prev_issues['issue_" .. tostring(issue.id) .. "'] = 'issue_" .. tostring(previous_issue.id) .. "';" }
|
bsw@31
|
155 end
|
bsw@31
|
156
|
bsw@31
|
157 local next_initiative = initiatives[1]
|
bsw@31
|
158 if next_initiative then
|
bsw@31
|
159 ui.script{ script = "next_initiatives['issue_" .. tostring(issue.id) .. "'] = 'initiative_" .. tostring(next_initiative.id) .. "';" }
|
bsw@31
|
160 end
|
bsw@31
|
161
|
bsw@34
|
162 ui.script{ script = "parents['issue_" .. tostring(issue.id) .. "'] = 'area_" .. tostring(area.id) .. "';" }
|
bsw@34
|
163
|
bsw@31
|
164 local next_issue = issues[i+1]
|
bsw@31
|
165 if next_issue then
|
bsw@31
|
166 ui.script{ script = "next_issues['issue_" .. tostring(issue.id) .. "'] = 'issue_" .. tostring(next_issue.id) .. "';" }
|
bsw@31
|
167 end
|
bsw@31
|
168
|
bsw@31
|
169 ui.script{
|
bsw@31
|
170 script = "document.getElementById('issue_" .. tostring(issue.id) .. "').style.display = 'none';"
|
bsw@31
|
171 }
|
bsw@31
|
172
|
bsw@31
|
173
|
bsw@31
|
174 for j, initiative in ipairs(initiatives) do
|
bsw@31
|
175
|
bsw@31
|
176 ui.container{
|
bsw@31
|
177 attr = {
|
bsw@31
|
178 id = "initiative_" .. tostring(initiative.id)
|
bsw@31
|
179 },
|
bsw@31
|
180 content = function()
|
bsw@31
|
181 execute.view{
|
bsw@31
|
182 module = "report",
|
bsw@31
|
183 view = "initiative",
|
bsw@31
|
184 params = { initiative = initiative }
|
bsw@31
|
185 }
|
bsw@31
|
186 slot.put("<br />")
|
bsw@31
|
187 slot.put("<br />")
|
bsw@31
|
188 slot.put("<br />")
|
bsw@31
|
189 slot.put("<br />")
|
bsw@31
|
190 slot.put("<br />")
|
bsw@31
|
191 end
|
bsw@31
|
192 }
|
bsw@31
|
193
|
bsw@31
|
194 local previous_issue = issues[i-1]
|
bsw@31
|
195 if previous_issue then
|
bsw@31
|
196 ui.script{ script = "prev_issues['initiative_" .. tostring(initiative.id) .. "'] = 'issue_" .. tostring(previous_issue.id) .. "';" }
|
bsw@31
|
197 end
|
bsw@31
|
198
|
bsw@31
|
199 local previous_initiative = initiatives[j-1]
|
bsw@31
|
200 if previous_initiative then
|
bsw@31
|
201 ui.script{ script = "prev_initiatives['initiative_" .. tostring(initiative.id) .. "'] = 'initiative_" .. tostring(previous_initiative.id) .. "';" }
|
bsw@31
|
202 end
|
bsw@31
|
203
|
bsw@34
|
204 ui.script{ script = "parents['initiative_" .. tostring(initiative.id) .. "'] = 'issue_" .. tostring(issue.id) .. "';" }
|
bsw@34
|
205
|
bsw@31
|
206 local next_initiative = initiatives[j+1]
|
bsw@31
|
207 if next_initiative then
|
bsw@31
|
208 ui.script{ script = "next_initiatives['initiative_" .. tostring(initiative.id) .. "'] = 'initiative_" .. tostring(next_initiative.id) .. "';" }
|
bsw@31
|
209 end
|
bsw@31
|
210
|
bsw@31
|
211 local next_issue = issues[i+1]
|
bsw@31
|
212 if next_issue then
|
bsw@31
|
213 ui.script{ script = "next_issues['initiative_" .. tostring(initiative.id) .. "'] = 'issue_" .. tostring(next_issue.id) .. "';" }
|
bsw@31
|
214 end
|
bsw@31
|
215
|
bsw@31
|
216 ui.script{
|
bsw@31
|
217 script = "document.getElementById('initiative_" .. tostring(initiative.id) .. "').style.display = 'none';"
|
bsw@31
|
218 }
|
bsw@31
|
219
|
bsw@31
|
220 end
|
bsw@31
|
221 end
|
bsw@31
|
222
|
bsw@31
|
223 ui.script{
|
bsw@31
|
224 script = "document.getElementById('area_" .. tostring(area.id) .. "').style.display = 'none';"
|
bsw@31
|
225 }
|
bsw@31
|
226
|