| 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/jbe@1309 | 4   return execute.view { module = "index", view = "404" } | 
| bsw@1045 | 5 end | 
| bsw@1045 | 6 | 
| bsw/jbe@1309 | 7 app.current_issue = issue | 
| bsw/jbe@1309 | 8 | 
| bsw/jbe@1309 | 9 issue.area:load_delegation_info_once_for_member_id(app.session.member_id) | 
| bsw/jbe@1309 | 10 | 
| bsw/jbe@1309 | 11 execute.view{ module = "issue", view = "_head", params = { issue = issue } } | 
| bsw/jbe@1309 | 12 | 
| bsw@1045 | 13 local initiatives = issue.initiatives | 
| bsw@1045 | 14 | 
| bsw@548 | 15 if app.session.member_id then | 
| bsw@1045 | 16   issue:load_everything_for_member_id ( app.session.member_id ) | 
| bsw@1045 | 17   initiatives:load_everything_for_member_id ( app.session.member_id ) | 
| bsw@548 | 18 end | 
| bsw/jbe@0 | 19 | 
| jorges@106 | 20 if not app.html_title.title then | 
| bsw@1045 | 21   app.html_title.title = _("Issue ##{id}", { id = issue.id }) | 
| jorges@106 | 22 end | 
| jorges@103 | 23 | 
| bsw/jbe@1309 | 24 ui.grid{ content = function() | 
| bsw/jbe@1309 | 25 | 
| bsw/jbe@1309 | 26   ui.cell_main{ content = function() | 
| bsw/jbe@0 | 27 | 
| bsw/jbe@1309 | 28     ui.container { attr = { class = "mdl-card mdl-shadow--2dp mdl-card__fullwidth" }, content = function() | 
| bsw/jbe@1309 | 29       ui.container{ attr = { class = "mdl-card__title mdl-card--border" }, content = function() | 
| bsw/jbe@1309 | 30         ui.heading { attr = { class = "mdl-card__title-text" }, level = 2, content = _"Competing initiatives" } | 
| bsw/jbe@1309 | 31       end } | 
| bsw/jbe@1309 | 32       execute.view { | 
| bsw/jbe@1309 | 33         module = "initiative", view = "_list", | 
| bsw/jbe@1309 | 34         params = { | 
| bsw/jbe@1309 | 35           issue = issue, | 
| bsw/jbe@1309 | 36           initiatives = initiatives | 
| bsw/jbe@1309 | 37         } | 
| bsw/jbe@1309 | 38       } | 
| bsw/jbe@1309 | 39     end } | 
| bsw@719 | 40 | 
| bsw/jbe@1309 | 41     ui.container { attr = { class = "mdl-card mdl-shadow--2dp mdl-card__fullwidth" }, content = function() | 
| bsw/jbe@1309 | 42 | 
| bsw/jbe@1309 | 43       ui.container{ attr = { class = "mdl-card__title mdl-card--border" }, content = function() | 
| bsw/jbe@1309 | 44         ui.heading { attr = { class = "mdl-card__title-text" }, level = 2, content = _"Details" } | 
| bsw/jbe@1309 | 45       end } | 
| bsw@1045 | 46 | 
| bsw/jbe@1309 | 47       ui.container{ attr = { class = "mdl-card__content" }, content = function() | 
| bsw/jbe@1309 | 48         local policy = issue.policy | 
| bsw/jbe@1309 | 49         ui.form{ | 
| bsw/jbe@1309 | 50           record = issue, | 
| bsw/jbe@1309 | 51           readonly = true, | 
| bsw/jbe@1309 | 52           attr = { class = "sectionRow form" }, | 
| bsw/jbe@1309 | 53           content = function() | 
| bsw@1629 | 54             local latest_snapshot = Snapshot:latest_by_issue_id(issue.id) | 
| bsw@1629 | 55             if latest_snapshot then | 
| bsw@1629 | 56               ui.field.timestamp{ label = _"Last counting:", value = latest_snapshot.calculated } | 
| bsw/jbe@1309 | 57             end | 
| bsw/jbe@1309 | 58             ui.field.text{       label = _"Population",            name = "population" } | 
| bsw/jbe@1309 | 59             ui.field.timestamp{  label = _"Created at",            name = "created" } | 
| bsw/jbe@1309 | 60             if policy.polling then | 
| bsw/jbe@1309 | 61               ui.field.text{       label = _"Admission time",        value = _"Implicitly admitted" } | 
| bsw/jbe@1309 | 62             else | 
| bsw/jbe@1309 | 63               ui.field.text{       label = _"Minimum admission time",        value = format.interval_text(issue.min_admission_time_text) } | 
| bsw/jbe@1309 | 64               ui.field.text{       label = _"Maximum admission time",        value = format.interval_text(issue.max_admission_time_text) } | 
| bsw/jbe@1309 | 65               ui.field.text{ label = _"Issue quorum", value = issue.issue_quorum } | 
| bsw/jbe@1309 | 66             end | 
| bsw/jbe@1309 | 67             if issue.accepted then | 
| bsw/jbe@1309 | 68               ui.field.timestamp{  label = _"Accepted at",           name = "accepted" } | 
| bsw/jbe@1309 | 69             end | 
| bsw/jbe@1309 | 70             ui.field.text{       label = _"Discussion time",       value = format.interval_text(issue.discussion_time_text) } | 
| bsw/jbe@1309 | 71             if issue.half_frozen then | 
| bsw/jbe@1309 | 72               ui.field.timestamp{  label = _"Half frozen at",        name = "half_frozen" } | 
| bsw/jbe@1309 | 73             end | 
| bsw/jbe@1309 | 74             ui.field.text{       label = _"Verification time",     value = format.interval_text(issue.verification_time_text) } | 
| bsw@1436 | 75             local quorums = {} | 
| bsw@1436 | 76             if policy.initiative_quorum_num / policy.initiative_quorum_den then | 
| bsw@1436 | 77               table.insert(quorums, format.percentage(policy.initiative_quorum_num / policy.initiative_quorum_den)) | 
| bsw@1436 | 78             end | 
| bsw@1436 | 79             if policy.initiative_quorum then | 
| bsw@1436 | 80               table.insert(quorums, policy.initiative_quorum) | 
| bsw@1436 | 81             end | 
| bsw/jbe@1309 | 82             ui.field.text{ | 
| bsw/jbe@1309 | 83               label   = _"Initiative quorum", | 
| bsw@1436 | 84               value = table.concat(quorums, " / ") | 
| bsw/jbe@1309 | 85             } | 
| bsw/jbe@1309 | 86             if issue.fully_frozen then | 
| bsw/jbe@1309 | 87               ui.field.timestamp{  label = _"Fully frozen at",       name = "fully_frozen" } | 
| bsw/jbe@1309 | 88             end | 
| bsw/jbe@1309 | 89             ui.field.text{       label = _"Voting time",           value = format.interval_text(issue.voting_time_text) } | 
| bsw/jbe@1309 | 90             if issue.closed then | 
| bsw/jbe@1309 | 91               ui.field.timestamp{  label = _"Closed",                name = "closed" } | 
| bsw/jbe@1309 | 92             end | 
| bsw/jbe@1309 | 93           end | 
| bsw/jbe@1309 | 94         } | 
| bsw@719 | 95 | 
| bsw/jbe@1309 | 96         if issue.initiatives[1].rank == 1 then | 
| bsw/jbe@1309 | 97           execute.view{ module = "initiative", view = "_sidebar_state", params = { | 
| bsw/jbe@1309 | 98             initiative = issue.initiatives[1] | 
| bsw/jbe@1309 | 99           } } | 
| bsw/jbe@1309 | 100         end | 
| bsw/jbe@1309 | 101 | 
| bsw/jbe@1309 | 102       end } | 
| bsw/jbe@1309 | 103 | 
| bsw/jbe@1309 | 104     end } | 
| bsw/jbe@1309 | 105 | 
| bsw/jbe@1309 | 106   end } | 
| bsw/jbe@1309 | 107 | 
| bsw/jbe@1309 | 108   ui.cell_sidebar{ content = function() | 
| bsw/jbe@1309 | 109     if config.logo then | 
| bsw/jbe@1309 | 110       config.logo() | 
| bsw/jbe@1309 | 111     end | 
| bsw@1602 | 112 | 
| bsw@1045 | 113     execute.view { | 
| bsw/jbe@1309 | 114       module = "issue", view = "_sidebar", | 
| bsw/jbe@1309 | 115       params = { | 
| bsw@1045 | 116         issue = issue, | 
| bsw/jbe@1309 | 117         member = app.session.member | 
| bsw@1045 | 118       } | 
| bsw@1045 | 119     } | 
| bsw/jbe@19 | 120 | 
| bsw/jbe@1309 | 121     execute.view { | 
| bsw/jbe@1309 | 122       module = "issue", view = "_sidebar_whatcanido", | 
| bsw/jbe@1309 | 123       params = { | 
| bsw/jbe@1309 | 124         issue = issue, | 
| bsw/jbe@1309 | 125         member = app.session.member | 
| bsw/jbe@1309 | 126       } | 
| bsw/jbe@1309 | 127     } | 
| bsw/jbe@1309 | 128 | 
| bsw/jbe@1309 | 129     if not config.voting_only or issue.state ~= "voting" then | 
| bsw/jbe@1309 | 130       execute.view { | 
| bsw/jbe@1309 | 131         module = "issue", view = "_sidebar_members", params = { | 
| bsw/jbe@1309 | 132           issue = issue | 
| bsw@1045 | 133         } | 
| bsw@1045 | 134       } | 
| bsw@1045 | 135     end | 
| bsw/jbe@1309 | 136   end } | 
| bsw/jbe@19 | 137 | 
| bsw/jbe@1309 | 138 end } |