liquid_feedback_frontend

diff app/main/issue/show.lua @ 1309:32cc544d5a5b

Cumulative patch for upcoming frontend version 4
author bsw/jbe
date Sun Jul 15 14:07:29 2018 +0200 (2018-07-15)
parents 8288027edb54
children 7ab60da388fe
line diff
     1.1 --- a/app/main/issue/show.lua	Thu Jun 23 03:30:57 2016 +0200
     1.2 +++ b/app/main/issue/show.lua	Sun Jul 15 14:07:29 2018 +0200
     1.3 @@ -1,11 +1,15 @@
     1.4  local issue = Issue:by_id ( param.get_id () )
     1.5  
     1.6  if not issue then
     1.7 -  execute.view { module = "index", view = "404" }
     1.8 -  request.set_status("404 Not Found")
     1.9 -  return
    1.10 +  return execute.view { module = "index", view = "404" }
    1.11  end
    1.12  
    1.13 +app.current_issue = issue
    1.14 +
    1.15 +issue.area:load_delegation_info_once_for_member_id(app.session.member_id)
    1.16 +
    1.17 +execute.view{ module = "issue", view = "_head", params = { issue = issue } }
    1.18 +
    1.19  local initiatives = issue.initiatives
    1.20  
    1.21  if app.session.member_id then
    1.22 @@ -17,111 +21,109 @@
    1.23    app.html_title.title = _("Issue ##{id}", { id = issue.id })
    1.24  end
    1.25  
    1.26 -execute.view {
    1.27 -  module = "issue", view = "_head", 
    1.28 -  params = { issue = issue, member = app.session.member }
    1.29 -}
    1.30 -
    1.31 -execute.view{ module = "issue", view = "_sidebar_state", params = {
    1.32 -  issue = issue
    1.33 -} }
    1.34 +ui.grid{ content = function()
    1.35 +  
    1.36 +  ui.cell_main{ content = function()
    1.37  
    1.38 -execute.view { 
    1.39 -  module = "issue", view = "_sidebar_whatcanido", params = {
    1.40 -    issue = issue
    1.41 -  }
    1.42 -}
    1.43 +    ui.container { attr = { class = "mdl-card mdl-shadow--2dp mdl-card__fullwidth" }, content = function()
    1.44 +      ui.container{ attr = { class = "mdl-card__title mdl-card--border" }, content = function()
    1.45 +        ui.heading { attr = { class = "mdl-card__title-text" }, level = 2, content = _"Competing initiatives" }
    1.46 +      end }
    1.47 +      execute.view {
    1.48 +        module = "initiative", view = "_list",
    1.49 +        params = { 
    1.50 +          issue = issue,
    1.51 +          initiatives = initiatives
    1.52 +        }
    1.53 +      }
    1.54 +    end }
    1.55  
    1.56 -execute.view { 
    1.57 -  module = "issue", view = "_sidebar_members", params = {
    1.58 -    issue = issue
    1.59 -  }
    1.60 -}
    1.61 +    ui.container { attr = { class = "mdl-card mdl-shadow--2dp mdl-card__fullwidth" }, content = function()
    1.62 +
    1.63 +      ui.container{ attr = { class = "mdl-card__title mdl-card--border" }, content = function()
    1.64 +        ui.heading { attr = { class = "mdl-card__title-text" }, level = 2, content = _"Details" }
    1.65 +      end }
    1.66  
    1.67 -ui.section( function ()
    1.68 -  
    1.69 -  execute.view{ 
    1.70 -    module = "issue", view = "_head2", params = {
    1.71 -      issue = issue
    1.72 -    }
    1.73 -  }
    1.74 +      ui.container{ attr = { class = "mdl-card__content" }, content = function()
    1.75 +        local policy = issue.policy
    1.76 +        ui.form{
    1.77 +          record = issue,
    1.78 +          readonly = true,
    1.79 +          attr = { class = "sectionRow form" },
    1.80 +          content = function()
    1.81 +            if issue.snapshot then
    1.82 +              ui.field.timestamp{ label = _"Last counting:", value = issue.snapshot }
    1.83 +            end
    1.84 +            ui.field.text{       label = _"Population",            name = "population" }
    1.85 +            ui.field.timestamp{  label = _"Created at",            name = "created" }
    1.86 +            if policy.polling then
    1.87 +              ui.field.text{       label = _"Admission time",        value = _"Implicitly admitted" }
    1.88 +            else
    1.89 +              ui.field.text{       label = _"Minimum admission time",        value = format.interval_text(issue.min_admission_time_text) }
    1.90 +              ui.field.text{       label = _"Maximum admission time",        value = format.interval_text(issue.max_admission_time_text) }
    1.91 +              ui.field.text{ label = _"Issue quorum", value = issue.issue_quorum }
    1.92 +            end
    1.93 +            if issue.accepted then
    1.94 +              ui.field.timestamp{  label = _"Accepted at",           name = "accepted" }
    1.95 +            end
    1.96 +            ui.field.text{       label = _"Discussion time",       value = format.interval_text(issue.discussion_time_text) }
    1.97 +            if issue.half_frozen then
    1.98 +              ui.field.timestamp{  label = _"Half frozen at",        name = "half_frozen" }
    1.99 +            end
   1.100 +            ui.field.text{       label = _"Verification time",     value = format.interval_text(issue.verification_time_text) }
   1.101 +            ui.field.text{
   1.102 +              label   = _"Initiative quorum",
   1.103 +              value = format.percentage(policy.initiative_quorum_num / policy.initiative_quorum_den)
   1.104 +            }
   1.105 +            if issue.fully_frozen then
   1.106 +              ui.field.timestamp{  label = _"Fully frozen at",       name = "fully_frozen" }
   1.107 +            end
   1.108 +            ui.field.text{       label = _"Voting time",           value = format.interval_text(issue.voting_time_text) }
   1.109 +            if issue.closed then
   1.110 +              ui.field.timestamp{  label = _"Closed",                name = "closed" }
   1.111 +            end
   1.112 +          end
   1.113 +        }
   1.114  
   1.115 -  if issue.initiatives[1].rank == 1 then
   1.116 -    execute.view{ module = "initiative", view = "_sidebar_state", params = {
   1.117 -      initiative = issue.initiatives[1]
   1.118 -    } }
   1.119 -  end
   1.120 -  
   1.121 -  ui.sectionRow( function ()
   1.122 +        if issue.initiatives[1].rank == 1 then
   1.123 +          execute.view{ module = "initiative", view = "_sidebar_state", params = {
   1.124 +            initiative = issue.initiatives[1]
   1.125 +          } }
   1.126 +        end
   1.127 +    
   1.128 +      end }
   1.129 +      
   1.130 +    end }
   1.131 +      
   1.132 +  end }
   1.133 +
   1.134 +  ui.cell_sidebar{ content = function()
   1.135 +    if config.logo then
   1.136 +      config.logo()
   1.137 +    end
   1.138      execute.view {
   1.139 -      module = "initiative", view = "_list",
   1.140 -      params = { 
   1.141 +      module = "issue", view = "_sidebar", 
   1.142 +      params = {
   1.143          issue = issue,
   1.144 -        initiatives = initiatives
   1.145 +        member = app.session.member
   1.146        }
   1.147      }
   1.148 -  end )
   1.149 -
   1.150 -end )
   1.151  
   1.152 -ui.section(function()
   1.153 -  ui.sectionHead( function()
   1.154 -    ui.heading { level = 1, content = _"Details" }
   1.155 -  end )
   1.156 -  local policy = issue.policy
   1.157 -  ui.form{
   1.158 -    record = issue,
   1.159 -    readonly = true,
   1.160 -    attr = { class = "sectionRow form" },
   1.161 -    content = function()
   1.162 -      if issue.snapshot then
   1.163 -        ui.field.timestamp{ label = _"Last counting:", value = issue.snapshot }
   1.164 -      end
   1.165 -      ui.field.text{       label = _"Population",            name = "population" }
   1.166 -      ui.field.timestamp{  label = _"Created at",            name = "created" }
   1.167 -      if policy.polling then
   1.168 -        ui.field.text{       label = _"Admission time",        value = _"Implicitly admitted" }
   1.169 -      else
   1.170 -        ui.field.text{       label = _"Minimum admission time",        value = format.interval_text(issue.min_admission_time_text) }
   1.171 -        ui.field.text{       label = _"Maximum admission time",        value = format.interval_text(issue.max_admission_time_text) }
   1.172 -        ui.field.text{
   1.173 -          label = _"Issue quorum",
   1.174 -          value = format.percentage(policy.issue_quorum_num / policy.issue_quorum_den)
   1.175 +    execute.view {
   1.176 +      module = "issue", view = "_sidebar_whatcanido", 
   1.177 +      params = {
   1.178 +        issue = issue,
   1.179 +        member = app.session.member
   1.180 +      }
   1.181 +    }
   1.182 +
   1.183 +    if not config.voting_only or issue.state ~= "voting" then
   1.184 +      execute.view { 
   1.185 +        module = "issue", view = "_sidebar_members", params = {
   1.186 +          issue = issue
   1.187          }
   1.188 -        if issue.population then
   1.189 -          ui.field.text{
   1.190 -            label = _"Currently required",
   1.191 -            value = math.ceil(issue.population * policy.issue_quorum_num / policy.issue_quorum_den)
   1.192 -          }
   1.193 -        end
   1.194 -      end
   1.195 -      if issue.accepted then
   1.196 -        ui.field.timestamp{  label = _"Accepted at",           name = "accepted" }
   1.197 -      end
   1.198 -      ui.field.text{       label = _"Discussion time",       value = format.interval_text(issue.discussion_time_text) }
   1.199 -      if issue.half_frozen then
   1.200 -        ui.field.timestamp{  label = _"Half frozen at",        name = "half_frozen" }
   1.201 -      end
   1.202 -      ui.field.text{       label = _"Verification time",     value = format.interval_text(issue.verification_time_text) }
   1.203 -      ui.field.text{
   1.204 -        label   = _"Initiative quorum",
   1.205 -        value = format.percentage(policy.initiative_quorum_num / policy.initiative_quorum_den)
   1.206        }
   1.207 -      if issue.population then
   1.208 -        ui.field.text{
   1.209 -          label   = _"Currently required",
   1.210 -          value = math.ceil(issue.population * (issue.policy.initiative_quorum_num / issue.policy.initiative_quorum_den)),
   1.211 -        }
   1.212 -      end
   1.213 -      if issue.fully_frozen then
   1.214 -        ui.field.timestamp{  label = _"Fully frozen at",       name = "fully_frozen" }
   1.215 -      end
   1.216 -      ui.field.text{       label = _"Voting time",           value = format.interval_text(issue.voting_time_text) }
   1.217 -      if issue.closed then
   1.218 -        ui.field.timestamp{  label = _"Closed",                name = "closed" }
   1.219 -      end
   1.220      end
   1.221 -  }
   1.222 +  end }
   1.223  
   1.224 -end )
   1.225 -
   1.226 +end }

Impressum / About Us