liquid_feedback_frontend
view app/main/area/_list.lua @ 374:178136e66341
merge
| author | bsw |
|---|---|
| date | Sat Mar 03 17:30:16 2012 +0100 (2012-03-03) |
| parents | 76d7eafb3893 |
| children | 89d32158bfd5 |
line source
1 local areas_selector = param.get("areas_selector", "table")
3 areas_selector
4 :reset_fields()
5 :add_field("area.id", nil, { "grouped" })
6 :add_field("area.name", nil, { "grouped" })
7 :add_field("member_weight", nil, { "grouped" })
8 :add_field("direct_member_count", nil, { "grouped" })
9 :add_field("(SELECT COUNT(*) FROM issue WHERE issue.area_id = area.id AND issue.accepted ISNULL AND issue.closed ISNULL)", "issues_new_count")
10 :add_field("(SELECT COUNT(*) FROM issue WHERE issue.area_id = area.id AND issue.accepted NOTNULL AND issue.half_frozen ISNULL AND issue.closed ISNULL)", "issues_discussion_count")
11 :add_field("(SELECT COUNT(*) FROM issue WHERE issue.area_id = area.id AND issue.half_frozen NOTNULL AND issue.fully_frozen ISNULL AND issue.closed ISNULL)", "issues_frozen_count")
12 :add_field("(SELECT COUNT(*) FROM issue WHERE issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed ISNULL)", "issues_voting_count")
13 :add_field("(SELECT COUNT(*) FROM issue WHERE issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed NOTNULL)", "issues_finished_count")
14 :add_field("(SELECT COUNT(*) FROM issue WHERE issue.area_id = area.id AND issue.fully_frozen ISNULL AND issue.closed NOTNULL)", "issues_cancelled_count")
16 if app.session.member_id then
17 areas_selector
18 :add_field({ "(SELECT COUNT(*) FROM issue LEFT JOIN direct_voter ON direct_voter.issue_id = issue.id AND direct_voter.member_id = ? WHERE issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed ISNULL AND direct_voter.member_id ISNULL)", app.session.member.id }, "issues_to_vote_count")
19 :left_join("membership", "_membership", { "_membership.area_id = area.id AND _membership.member_id = ?", app.session.member.id })
20 :add_field("_membership.member_id NOTNULL", "is_member", { "grouped" })
21 :left_join("delegation", nil, {
22 "delegation.truster_id = ? AND delegation.area_id = area.id AND delegation.scope = 'area'", app.session.member_id
23 })
24 :left_join("member", nil, "member.id = delegation.trustee_id")
25 :add_field("member.id", "trustee_member_id", { "grouped" })
26 :add_field("member.name", "trustee_member_name", { "grouped" })
27 else
28 areas_selector:add_field("0", "issues_to_vote_count")
29 end
32 ui.container{ attr = { class = "area_list" }, content = function()
34 for i, area in ipairs(areas_selector:exec()) do
36 ui.container{ attr = { class = "area" }, content = function()
38 ui.container{ attr = { class = "info" }, content = function()
40 ui.container{ attr = { class = "bar" }, content = function()
41 if area.member_weight and area.direct_member_count then
42 local max_value = MemberCount:get()
43 ui.bargraph{
44 max_value = max_value,
45 width = 100,
46 bars = {
47 { color = "#444", value = area.direct_member_count },
48 { color = "#777", value = area.member_weight - area.direct_member_count },
49 { color = "#ddd", value = max_value - area.member_weight },
50 }
51 }
52 end
53 end }
55 ui.container{ attr = { class = "name" }, content = function()
56 ui.link{
57 text = area.name,
58 module = "area",
59 view = "show",
60 id = area.id
61 }
62 slot.put(" ")
63 ui.tag{ content = "" }
64 end
65 }
67 ui.container{ attr = { class = "membership" }, content = function()
68 if area.is_member then
69 local text = _"Member of area"
70 ui.image{
71 attr = { title = text, alt = text },
72 static = "icons/16/user_gray.png",
73 }
74 else
75 slot.put('<img src="null.png" width="16" height="1" />')
76 end
77 end }
79 ui.container{ attr = { class = "delegatee" }, content = function()
80 if area.trustee_member_id then
81 local trustee_member = Member:by_id(area.trustee_member_id)
82 local text = _("Area delegated to '#{name}'", { name = area.trustee_member_name })
83 local text = _"delegated to"
84 ui.image{
85 attr = { class = "delegation_arrow", alt = text, title = text },
86 static = "delegation_arrow_24_horizontal.png"
87 }
88 execute.view{
89 module = "member_image",
90 view = "_show",
91 params = {
92 member = trustee_member,
93 image_type = "avatar",
94 show_dummy = true,
95 class = "micro_avatar",
96 popup_text = text
97 }
98 }
99 else
100 slot.put('<img src="null.png" width="24" height="1" />')
101 end
102 end }
103 end }
105 ui.container{ attr = { class = "phases" }, content = function()
107 ui.container{ attr = { class = "admission" }, content = function()
108 ui.link{
109 text = tostring(area.issues_new_count),
110 module = "area",
111 view = "show",
112 id = area.id,
113 params = { filter = "new", tab = "issues" }
114 }
115 end }
117 ui.container{ attr = { class = "discussion" }, content = function()
118 ui.link{
119 text = tostring(area.issues_discussion_count),
120 module = "area",
121 view = "show",
122 id = area.id,
123 params = { filter = "accepted", tab = "issues" }
124 }
125 end }
127 ui.container{ attr = { class = "verification" }, content = function()
128 ui.link{
129 text = tostring(area.issues_frozen_count),
130 module = "area",
131 view = "show",
132 id = area.id,
133 params = { filter = "half_frozen", tab = "issues" }
134 }
135 end }
137 ui.container{ attr = { class = "voting" }, content = function()
138 ui.link{
139 text = tostring(area.issues_voting_count),
140 module = "area",
141 view = "show",
142 id = area.id,
143 params = { filter = "frozen", tab = "issues" }
144 }
145 end }
147 ui.container{ attr = { class = "finished" }, content = function()
148 ui.link{
149 text = tostring(area.issues_finished_count),
150 module = "area",
151 view = "show",
152 id = area.id,
153 params = { filter = "finished", issue_list = "newest", tab = "issues" }
154 }
155 end }
157 ui.container{ attr = { class = "cancelled" }, content = function()
158 ui.link{
159 text = tostring(area.issues_cancelled_count),
160 module = "area",
161 view = "show",
162 id = area.id,
163 params = { filter = "cancelled", issue_list = "newest", tab = "issues" }
164 }
165 end }
167 end }
169 slot.put("<br /")
170 end }
172 end
174 end }
