rev |
line source |
bsw/jbe@0
|
1 slot.select("delegation", function()
|
bsw/jbe@0
|
2
|
bsw/jbe@0
|
3 local delegation
|
bsw/jbe@0
|
4 local area_id
|
bsw/jbe@0
|
5 local issue_id
|
bsw/jbe@0
|
6
|
bsw/jbe@0
|
7 local scope = "global"
|
bsw/jbe@0
|
8
|
bsw/jbe@0
|
9 if param.get("initiative_id", atom.integer) then
|
bsw/jbe@0
|
10 issue_id = Initiative:by_id(param.get("initiative_id", atom.integer)).issue_id
|
bsw/jbe@0
|
11 scope = "issue"
|
bsw/jbe@0
|
12 end
|
bsw/jbe@0
|
13
|
bsw/jbe@0
|
14 if param.get("issue_id", atom.integer) then
|
bsw/jbe@0
|
15 issue_id = param.get("issue_id", atom.integer)
|
bsw/jbe@0
|
16 scope = "issue"
|
bsw/jbe@0
|
17 end
|
bsw/jbe@0
|
18
|
bsw/jbe@0
|
19 if param.get("area_id", atom.integer) then
|
bsw/jbe@0
|
20 area_id = param.get("area_id", atom.integer)
|
bsw/jbe@0
|
21 scope = "area"
|
bsw/jbe@0
|
22 end
|
bsw/jbe@0
|
23
|
bsw/jbe@0
|
24
|
bsw/jbe@0
|
25
|
bsw/jbe@0
|
26 local delegation
|
bsw/jbe@0
|
27
|
bsw/jbe@0
|
28 if issue_id then
|
bsw/jbe@0
|
29 delegation = Delegation:by_pk(app.session.member.id, nil, issue_id)
|
bsw/jbe@0
|
30 if not delegation then
|
bsw/jbe@0
|
31 local issue = Issue:by_id(issue_id)
|
bsw/jbe@0
|
32 delegation = Delegation:by_pk(app.session.member.id, issue.area_id)
|
bsw/jbe@0
|
33 end
|
bsw/jbe@0
|
34 elseif area_id then
|
bsw/jbe@0
|
35 delegation = Delegation:by_pk(app.session.member.id, area_id)
|
bsw/jbe@0
|
36 end
|
bsw/jbe@0
|
37
|
bsw/jbe@0
|
38 if not delegation then
|
bsw/jbe@0
|
39 delegation = Delegation:by_pk(app.session.member.id)
|
bsw/jbe@0
|
40 end
|
bsw/jbe@0
|
41 if delegation then
|
bsw/jbe@0
|
42 ui.container{
|
bsw/jbe@0
|
43 attr = {
|
bsw/jbe@0
|
44 class = "head",
|
bsw/jbe@0
|
45 style = "cursor: pointer;",
|
bsw/jbe@0
|
46 onclick = "document.getElementById('delegation_content').style.display = 'block';"
|
bsw/jbe@0
|
47 },
|
bsw/jbe@0
|
48 content = _"Your vote is delegated. [more]"
|
bsw/jbe@0
|
49 }
|
bsw/jbe@0
|
50 ui.container{
|
bsw/jbe@0
|
51 attr = { class = "content", id = "delegation_content" },
|
bsw/jbe@0
|
52 content = function()
|
bsw/jbe@0
|
53
|
bsw/jbe@0
|
54 local delegation_chain = db:query{ "SELECT * FROM delegation_chain(?, ?, ?) JOIN member ON member.id = member_id ORDER BY index", app.session.member.id, area_id, issue_id }
|
bsw/jbe@0
|
55
|
bsw/jbe@0
|
56 for i, record in ipairs(delegation_chain) do
|
bsw/jbe@0
|
57 local style
|
bsw/jbe@0
|
58 if record.participation then
|
bsw/jbe@0
|
59 style = "font-weight: bold;"
|
bsw/jbe@0
|
60 end
|
bsw/jbe@0
|
61 if record.overridden then
|
bsw/jbe@0
|
62 style = "color: #777;"
|
bsw/jbe@0
|
63 end
|
bsw/jbe@0
|
64 if not record.active then
|
bsw/jbe@0
|
65 style = "text-decoration: line-through;"
|
bsw/jbe@0
|
66 end
|
bsw/jbe@0
|
67 if record.scope_in then
|
bsw/jbe@0
|
68 ui.field.text{
|
bsw/jbe@0
|
69 value = " v " .. record.scope_in .. " v "
|
bsw/jbe@0
|
70 }
|
bsw/jbe@0
|
71 end
|
bsw/jbe@0
|
72 local name = record.name
|
bsw/jbe@0
|
73 if record.member_id == app.session.member.id then
|
bsw/jbe@0
|
74 name = _"Me"
|
bsw/jbe@0
|
75 end
|
bsw/jbe@0
|
76 ui.field.text{
|
bsw/jbe@0
|
77 attr = { style = style },
|
bsw/jbe@0
|
78 value = name
|
bsw/jbe@0
|
79 }
|
bsw/jbe@0
|
80 end
|
bsw/jbe@0
|
81
|
bsw/jbe@0
|
82 ui.link{
|
bsw/jbe@0
|
83 attr = { class = "revoke" },
|
bsw/jbe@0
|
84 content = function()
|
bsw/jbe@0
|
85 ui.image{ static = "icons/16/delete.png" }
|
bsw/jbe@0
|
86 slot.put(_"Revoke")
|
bsw/jbe@0
|
87 end,
|
bsw/jbe@0
|
88 module = "delegation",
|
bsw/jbe@0
|
89 action = "update",
|
bsw/jbe@0
|
90 params = { issue_id = delegation.issue_id, area_id = delegation.area_id, delete = true },
|
bsw/jbe@0
|
91 routing = {
|
bsw/jbe@0
|
92 default = {
|
bsw/jbe@0
|
93 mode = "redirect",
|
bsw/jbe@0
|
94 module = request.get_module(),
|
bsw/jbe@0
|
95 view = request.get_view(),
|
bsw/jbe@0
|
96 id = param.get_id_cgi(),
|
bsw/jbe@0
|
97 params = param.get_all_cgi()
|
bsw/jbe@0
|
98 }
|
bsw/jbe@0
|
99 }
|
bsw/jbe@0
|
100 }
|
bsw/jbe@0
|
101
|
bsw/jbe@0
|
102 ui.container{
|
bsw/jbe@0
|
103 attr = {
|
bsw/jbe@0
|
104 class = "head",
|
bsw/jbe@0
|
105 style = "cursor: pointer;",
|
bsw/jbe@0
|
106 onclick = "document.getElementById('delegation_content').style.display = 'none';"
|
bsw/jbe@0
|
107 },
|
bsw/jbe@0
|
108 content = _"Click here to close."
|
bsw/jbe@0
|
109 }
|
bsw/jbe@0
|
110 end
|
bsw/jbe@0
|
111 }
|
bsw/jbe@0
|
112 end
|
bsw/jbe@0
|
113
|
bsw/jbe@0
|
114 end)
|