rev |
line source |
bsw@1045
|
1 local issue = Issue:by_id ( param.get_id () )
|
bsw@1045
|
2
|
bsw@1045
|
3 if not issue then
|
bsw@1045
|
4 execute.view { module = "index", view = "404" }
|
bsw@1045
|
5 request.set_status("404 Not Found")
|
bsw@1045
|
6 return
|
bsw@1045
|
7 end
|
bsw@1045
|
8
|
bsw@1045
|
9 local initiatives = issue.initiatives
|
bsw@1045
|
10
|
bsw@548
|
11 if app.session.member_id then
|
bsw@1045
|
12 issue:load_everything_for_member_id ( app.session.member_id )
|
bsw@1045
|
13 initiatives:load_everything_for_member_id ( app.session.member_id )
|
bsw@548
|
14 end
|
bsw/jbe@0
|
15
|
jorges@106
|
16 if not app.html_title.title then
|
bsw@1045
|
17 app.html_title.title = _("Issue ##{id}", { id = issue.id })
|
jorges@106
|
18 end
|
jorges@103
|
19
|
bsw@1045
|
20 execute.view {
|
bsw@1045
|
21 module = "issue", view = "_head",
|
bsw@1045
|
22 params = { issue = issue, member = app.session.member }
|
bsw@1045
|
23 }
|
bsw@2
|
24
|
bsw@1045
|
25 execute.view{ module = "issue", view = "_sidebar_state", params = {
|
bsw@1045
|
26 issue = issue
|
bsw@1045
|
27 } }
|
bsw/jbe@0
|
28
|
bsw@1045
|
29 execute.view {
|
bsw@1045
|
30 module = "issue", view = "_sidebar_whatcanido", params = {
|
bsw@1045
|
31 issue = issue
|
bsw@1045
|
32 }
|
bsw@1045
|
33 }
|
bsw@719
|
34
|
bsw@1045
|
35 execute.view {
|
bsw@1045
|
36 module = "issue", view = "_sidebar_members", params = {
|
bsw@1045
|
37 issue = issue
|
bsw@1045
|
38 }
|
bsw@1045
|
39 }
|
bsw@1045
|
40
|
bsw@1045
|
41 ui.section( function ()
|
bsw@1045
|
42
|
bsw@1045
|
43 execute.view{
|
bsw@1045
|
44 module = "issue", view = "_head2", params = {
|
bsw@1045
|
45 issue = issue
|
bsw@719
|
46 }
|
bsw@719
|
47 }
|
bsw@719
|
48
|
bsw@1045
|
49 if issue.initiatives[1].rank == 1 then
|
bsw@1045
|
50 execute.view{ module = "initiative", view = "_sidebar_state", params = {
|
bsw@1045
|
51 initiative = issue.initiatives[1]
|
bsw@1045
|
52 } }
|
bsw@1045
|
53 end
|
bsw@719
|
54
|
bsw@1045
|
55 ui.sectionRow( function ()
|
bsw@1045
|
56 execute.view {
|
bsw@1045
|
57 module = "initiative", view = "_list",
|
bsw@1045
|
58 params = {
|
bsw@1045
|
59 issue = issue,
|
bsw@1045
|
60 initiatives = initiatives
|
bsw@1045
|
61 }
|
bsw@1045
|
62 }
|
bsw@1045
|
63 end )
|
bsw@1045
|
64
|
bsw@1045
|
65 end )
|
bsw/jbe@19
|
66
|
bsw@1045
|
67 ui.section(function()
|
bsw@1045
|
68 ui.sectionHead( function()
|
bsw@1045
|
69 ui.heading { level = 1, content = _"Details" }
|
bsw@1045
|
70 end )
|
bsw@1045
|
71 local policy = issue.policy
|
bsw@1045
|
72 ui.form{
|
bsw@1045
|
73 record = issue,
|
bsw@1045
|
74 readonly = true,
|
bsw@1045
|
75 attr = { class = "sectionRow form" },
|
bsw@1045
|
76 content = function()
|
bsw@1045
|
77 if issue.snapshot then
|
bsw@1045
|
78 ui.field.timestamp{ label = _"Last counting:", value = issue.snapshot }
|
bsw@1045
|
79 end
|
bsw@1045
|
80 ui.field.text{ label = _"Population", name = "population" }
|
bsw@1045
|
81 ui.field.timestamp{ label = _"Created at", name = "created" }
|
bsw@1045
|
82 if policy.polling then
|
bsw@1045
|
83 ui.field.text{ label = _"Admission time", value = _"Implicitly admitted" }
|
bsw@1045
|
84 else
|
bsw@1234
|
85 ui.field.text{ label = _"Minimum admission time", value = format.interval_text(issue.min_admission_time_text) }
|
bsw@1234
|
86 ui.field.text{ label = _"Maximum admission time", value = format.interval_text(issue.max_admission_time_text) }
|
bsw@1045
|
87 ui.field.text{
|
bsw@1045
|
88 label = _"Issue quorum",
|
bsw@1045
|
89 value = format.percentage(policy.issue_quorum_num / policy.issue_quorum_den)
|
bsw@1045
|
90 }
|
bsw@1045
|
91 if issue.population then
|
bsw@1045
|
92 ui.field.text{
|
bsw@1045
|
93 label = _"Currently required",
|
bsw@1045
|
94 value = math.ceil(issue.population * policy.issue_quorum_num / policy.issue_quorum_den)
|
bsw@1045
|
95 }
|
bsw@1045
|
96 end
|
bsw@1045
|
97 end
|
bsw@1045
|
98 if issue.accepted then
|
bsw@1045
|
99 ui.field.timestamp{ label = _"Accepted at", name = "accepted" }
|
bsw@1045
|
100 end
|
bsw@1045
|
101 ui.field.text{ label = _"Discussion time", value = format.interval_text(issue.discussion_time_text) }
|
bsw@1045
|
102 if issue.half_frozen then
|
bsw@1045
|
103 ui.field.timestamp{ label = _"Half frozen at", name = "half_frozen" }
|
bsw@1045
|
104 end
|
bsw@1045
|
105 ui.field.text{ label = _"Verification time", value = format.interval_text(issue.verification_time_text) }
|
bsw@1045
|
106 ui.field.text{
|
bsw@1045
|
107 label = _"Initiative quorum",
|
bsw@1045
|
108 value = format.percentage(policy.initiative_quorum_num / policy.initiative_quorum_den)
|
bsw@1045
|
109 }
|
bsw@1045
|
110 if issue.population then
|
bsw@1045
|
111 ui.field.text{
|
bsw@1045
|
112 label = _"Currently required",
|
bsw@1045
|
113 value = math.ceil(issue.population * (issue.policy.initiative_quorum_num / issue.policy.initiative_quorum_den)),
|
bsw@1045
|
114 }
|
bsw@1045
|
115 end
|
bsw@1045
|
116 if issue.fully_frozen then
|
bsw@1045
|
117 ui.field.timestamp{ label = _"Fully frozen at", name = "fully_frozen" }
|
bsw@1045
|
118 end
|
bsw@1045
|
119 ui.field.text{ label = _"Voting time", value = format.interval_text(issue.voting_time_text) }
|
bsw@1045
|
120 if issue.closed then
|
bsw@1045
|
121 ui.field.timestamp{ label = _"Closed", name = "closed" }
|
bsw@1045
|
122 end
|
bsw@1045
|
123 end
|
bsw@1045
|
124 }
|
bsw/jbe@19
|
125
|
bsw@1045
|
126 end )
|
bsw@1045
|
127
|