liquid_feedback_frontend

changeset 1601:7da942c0ed5d

Removed unused views
author bsw
date Mon Feb 01 12:58:17 2021 +0100 (2021-02-01)
parents d47d2b0cd7c2
children a3a7120a67be
files app/main/area/show.lua app/main/issue/_head2.lua app/main/issue/_list2.lua app/main/unit/show.lua
line diff
     1.1 --- a/app/main/area/show.lua	Sun Jan 31 22:12:27 2021 +0100
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,73 +0,0 @@
     1.4 -local area = Area:by_id(param.get_id())
     1.5 -
     1.6 -if not area then
     1.7 -  execute.view { module = "index", view = "404" }
     1.8 -  request.set_status("404 Not Found")
     1.9 -  return
    1.10 -end
    1.11 -
    1.12 -app.current_area = area
    1.13 -
    1.14 -
    1.15 -area:load_delegation_info_once_for_member_id(app.session.member_id)
    1.16 -
    1.17 -app.html_title.title = area.name
    1.18 -app.html_title.subtitle = _("Area")
    1.19 -
    1.20 -ui.container{ attr = { class = "mdl-grid" }, content = function()
    1.21 -  ui.container{ attr = { class = "mdl-cell mdl-cell--12-col" }, content = function()
    1.22 -    ui.heading{ content = area.unit.name .. " / " .. area.name }
    1.23 -
    1.24 -    execute.view {
    1.25 -      module = "area", view = "_head", params = {
    1.26 -        area = area, member = app.session.member
    1.27 -      }
    1.28 -    }
    1.29 -
    1.30 -    execute.view {
    1.31 -      module = "area", view = "_sidebar_whatcanido", params = {
    1.32 -        area = area
    1.33 -      }
    1.34 -    }
    1.35 -
    1.36 -    execute.view {
    1.37 -      module = "area", view = "_sidebar_members", params = {
    1.38 -        area = area
    1.39 -      }
    1.40 -    }
    1.41 -
    1.42 -    local function getOpenIssuesSelector()
    1.43 -      return area:get_reference_selector("issues")
    1.44 -        :add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.max_admission_time) - now()")
    1.45 -    end
    1.46 -
    1.47 -    local admission_selector = getOpenIssuesSelector()
    1.48 -      :add_where("issue.state = 'admission'");
    1.49 -
    1.50 -    local discussion_selector = getOpenIssuesSelector()
    1.51 -      :add_where("issue.state = 'discussion'");
    1.52 -
    1.53 -    local verification_selector = getOpenIssuesSelector()
    1.54 -      :add_where("issue.state = 'verification'");
    1.55 -
    1.56 -    local voting_selector = getOpenIssuesSelector()
    1.57 -      :add_where("issue.state = 'voting'");
    1.58 -
    1.59 -
    1.60 -    local closed_selector = area:get_reference_selector("issues")
    1.61 -      :add_where("issue.closed NOTNULL")
    1.62 -      :add_order_by("issue.closed DESC")
    1.63 -
    1.64 -    local members_selector = area:get_reference_selector("members"):add_where("member.active")
    1.65 -    local delegations_selector = area:get_reference_selector("delegations")
    1.66 -      :join("member", "truster", "truster.id = delegation.truster_id AND truster.active")
    1.67 -      :join("member", "trustee", "trustee.id = delegation.trustee_id AND trustee.active")
    1.68 -
    1.69 -
    1.70 -    execute.view {
    1.71 -      module = "issue",
    1.72 -      view = "_list",
    1.73 -      params = { for_area = area }
    1.74 -    }
    1.75 -  end }
    1.76 -end }
     2.1 --- a/app/main/issue/_head2.lua	Sun Jan 31 22:12:27 2021 +0100
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,96 +0,0 @@
     2.4 -local issue = param.get("issue", "table")
     2.5 -local for_history = param.get("for_history", atom.boolean)
     2.6 -
     2.7 -ui.sectionHead( "issueInfo", function ()
     2.8 -  ui.container { attr = { class = "left" }, content = function()
     2.9 -    ui.heading { level = 1, content = issue.name }
    2.10 -  end }
    2.11 -  if app.session.member then
    2.12 -    ui.container { attr = { class = "right" }, content = function ()
    2.13 -      if issue.fully_frozen then
    2.14 -        if issue.member_info.direct_voted then
    2.15 -          ui.image { attr = { class = "icon48 right" }, static = "icons/48/voted_ok.png" }
    2.16 -          ui.tag { content = _"You have voted" }
    2.17 -          slot.put(" ")
    2.18 -          if not issue.closed then
    2.19 -            slot.put("<br />")
    2.20 -            ui.link {
    2.21 -              module = "vote", view = "list", 
    2.22 -              params = { issue_id = issue.id },
    2.23 -              text = _"change vote"
    2.24 -            }
    2.25 -          else
    2.26 -            ui.link {
    2.27 -              module = "vote", view = "list", 
    2.28 -              params = { issue_id = issue.id },
    2.29 -              text = _"show vote"
    2.30 -            }
    2.31 -          end
    2.32 -          slot.put(" ")
    2.33 -        elseif active_trustee_id then
    2.34 -          ui.tag { content = _"You have voted via delegation" }
    2.35 -          ui.link {
    2.36 -            content = _"Show voting ballot",
    2.37 -            module = "vote", view = "list", params = {
    2.38 -              issue_id = issue.id, member_id = active_trustee_id
    2.39 -            }
    2.40 -          }
    2.41 -        elseif not issue.closed then
    2.42 -          ui.link {
    2.43 -            attr = { class = "btn btn-default" },
    2.44 -            module = "vote", view = "list", 
    2.45 -            params = { issue_id = issue.id },
    2.46 -            text = _"vote now"
    2.47 -          }
    2.48 -        end
    2.49 -      elseif not issue.closed then
    2.50 -        if issue.member_info.own_participation then
    2.51 -          ui.image { attr = { class = "icon48 right" }, static = "icons/48/eye.png" }
    2.52 -          ui.tag{ content = _"You are interested in this issue" }
    2.53 -          slot.put("<br />")
    2.54 -          ui.link {
    2.55 -            module = "interest", action = "update", 
    2.56 -            params = { issue_id = issue.id, delete = true },
    2.57 -            routing = { default = {
    2.58 -              mode = "redirect", module = "issue", view = "show", id = issue.id
    2.59 -            } },
    2.60 -            text = _"remove my interest"
    2.61 -          }
    2.62 -        else
    2.63 -          ui.link {
    2.64 -            attr = { class = "btn btn-default" },
    2.65 -            module = "interest", action = "update", 
    2.66 -            params = { issue_id = issue.id },
    2.67 -            routing = { default = {
    2.68 -              mode = "redirect", module = "issue", view = "show", id = issue.id
    2.69 -            } },
    2.70 -            text = _"add my interest"
    2.71 -          }
    2.72 -        end
    2.73 -      end
    2.74 -    end }
    2.75 -  end
    2.76 -end)
    2.77 -  
    2.78 -ui.container {
    2.79 -  attr = { class = "ui_filter", style="clear: left; margin-top: 4px;" },
    2.80 -  content = function ()
    2.81 -    ui.container {
    2.82 -      attr = { class = "ui_filter_head" },
    2.83 -      content = function ()
    2.84 -        
    2.85 -        ui.link{
    2.86 -          attr = { class = not for_history and "active" or nil },
    2.87 -          text = _"Initiatives",
    2.88 -          module = "issue", view = "show", id = issue.id
    2.89 -        }
    2.90 -        slot.put(" ")
    2.91 -        ui.link{
    2.92 -          attr = { class = for_history and "active" or nil },
    2.93 -          text = _"History",
    2.94 -          module = "issue", view = "history", id = issue.id
    2.95 -        }
    2.96 -      end
    2.97 -    }
    2.98 -  end
    2.99 -}
     3.1 --- a/app/main/issue/_list2.lua	Sun Jan 31 22:12:27 2021 +0100
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,376 +0,0 @@
     3.4 -local for_member = param.get ( "for_member", "table" )
     3.5 -local for_unit =   param.get ( "for_unit",   "table" )
     3.6 -local for_area =   param.get ( "for_area",   "table" )
     3.7 -local for_issue =  param.get ( "for_issue",  "table" )
     3.8 -local for_initiative =  param.get ( "for_initiative",  "table" )
     3.9 -local for_sidebar = param.get("for_sidebar", atom.boolean)
    3.10 -local no_filter =  param.get ( "no_filter",  atom.boolean )
    3.11 -local search =     param.get ( "search" )
    3.12 -
    3.13 -local limit = 25
    3.14 -
    3.15 -local mode = request.get_param{ name = "mode" } or "issue"
    3.16 -
    3.17 -if for_initiative or for_issue or for_member then
    3.18 -  mode = "timeline"
    3.19 -end
    3.20 -
    3.21 -local selector
    3.22 -
    3.23 -if search then
    3.24 -
    3.25 -  selector = Issue:get_search_selector(search)
    3.26 -
    3.27 -  
    3.28 -elseif mode == "timeline" then
    3.29 -
    3.30 -  local event_max_id = request.get_param_strings()["event_max_id"]
    3.31 -
    3.32 -  selector = Event:new_selector()
    3.33 -    :add_order_by("event.id DESC")
    3.34 -    :join("issue", nil, "issue.id = event.issue_id")
    3.35 -    :add_field("now() - event.occurrence", "time_ago")
    3.36 -    :limit(limit + 1)
    3.37 -    
    3.38 -  if event_max_id then
    3.39 -    selector:add_where{ "event.id < ?", event_max_id }
    3.40 -  end
    3.41 -
    3.42 -  if for_member then
    3.43 -    selector:add_where{ "event.member_id = ?", for_member.id }
    3.44 -  end
    3.45 -
    3.46 -  if for_initiative then
    3.47 -    selector:add_where{ "event.initiative_id = ?", for_initiative.id }
    3.48 -  end
    3.49 -
    3.50 -  
    3.51 -elseif mode == "issue" then
    3.52 -  
    3.53 -  selector = Issue:new_selector()
    3.54 -
    3.55 -end
    3.56 -
    3.57 -if for_unit then
    3.58 -  selector:join("area", nil, "area.id = issue.area_id")
    3.59 -  selector:add_where{ "area.unit_id = ?", for_unit.id }
    3.60 -elseif for_area then
    3.61 -  selector:add_where{ "issue.area_id = ?", for_area.id }
    3.62 -elseif for_issue then
    3.63 -  selector:add_where{ "issue.id = ?", for_issue.id }
    3.64 -end
    3.65 -  
    3.66 -if not search and app.session.member_id then
    3.67 -  selector
    3.68 -    :left_join("interest", "_interest", { 
    3.69 -      "_interest.issue_id = issue.id AND _interest.member_id = ?", app.session.member.id 
    3.70 -    } )
    3.71 -    :add_field("(_interest.member_id NOTNULL)", "is_interested")
    3.72 -    :left_join("delegating_interest_snapshot", "_delegating_interest", { [[
    3.73 -      _delegating_interest.issue_id = issue.id AND 
    3.74 -      _delegating_interest.member_id = ? AND
    3.75 -      _delegating_interest.event = issue.latest_snapshot_event
    3.76 -    ]], app.session.member.id } )
    3.77 -    :add_field("_delegating_interest.delegate_member_ids[1]", "is_interested_by_delegation_to_member_id")
    3.78 -    :add_field("_delegating_interest.delegate_member_ids[array_upper(_delegating_interest.delegate_member_ids, 1)]", "is_interested_via_member_id")    
    3.79 -    :add_field("array_length(_delegating_interest.delegate_member_ids, 1)", "delegation_chain_length")
    3.80 -end
    3.81 -
    3.82 -local function doit()
    3.83 -
    3.84 -  local last_event_id
    3.85 -
    3.86 -  local items = selector:exec()
    3.87 -
    3.88 -  if #items < 1 then
    3.89 -    ui.section( function()
    3.90 -      ui.sectionRow( function()
    3.91 -        ui.heading{ level = 2, content = _"No results for this selection" }
    3.92 -      end )
    3.93 -    end )
    3.94 -    return
    3.95 -  end
    3.96 -  
    3.97 -  local row_class = "sectionRow"
    3.98 -  if for_sidebar then
    3.99 -    row_class = "sidebarRow"
   3.100 -  end
   3.101 -  
   3.102 -  if mode == "timeline" then
   3.103 -    local issues = items:load ( "issue" )
   3.104 -    local initiative = items:load ( "initiative" )
   3.105 -    items:load ( "suggestion" )
   3.106 -    items:load ( "member" )
   3.107 -    issues:load_everything_for_member_id ( app.session.member_id )
   3.108 -    initiative:load_everything_for_member_id ( app.session.member_id )
   3.109 -  elseif mode == "issue" then
   3.110 -    items:load_everything_for_member_id ( app.session.member_id )
   3.111 -  end
   3.112 -
   3.113 -  local class = "section"
   3.114 -  if mode == "timeline" then
   3.115 -    class = class .. " events"
   3.116 -  elseif mode == "issue" then
   3.117 -    class = class .. " issues"
   3.118 -  end
   3.119 -  
   3.120 -  ui.container{ attr = { class = class }, content = function()
   3.121 -
   3.122 -    local last_event_date
   3.123 -    for i, item in ipairs(items) do
   3.124 -      local event
   3.125 -      local issue
   3.126 -      if mode == "timeline" then
   3.127 -        event = item
   3.128 -        issue = item.issue
   3.129 -      elseif mode == "issue" then
   3.130 -        event = {}
   3.131 -        issue = item
   3.132 -      end
   3.133 -      
   3.134 -      last_event_id = event.id
   3.135 -
   3.136 -      local class = "event " .. row_class
   3.137 -      if event.suggestion_id then
   3.138 -        class = class .. " suggestion"
   3.139 -      end
   3.140 -      
   3.141 -      ui.container{ attr = { class = class }, content = function()
   3.142 -        local event_name 
   3.143 -        local negative_event = false
   3.144 -        
   3.145 -        local days_ago_text
   3.146 -  
   3.147 -        if mode == "timeline" then
   3.148 -          event_name = event.event_name
   3.149 -                  
   3.150 -            if event.event == "issue_state_changed" then
   3.151 -              if event.state == "discussion" then
   3.152 -                event_name = _"Discussion started"
   3.153 -              elseif event.state == "verification" then
   3.154 -                event_name = _"Verification started"
   3.155 -              elseif event.state == "voting" then
   3.156 -                event_name = _"Voting started"
   3.157 -              elseif event.state == "finished_with_winner" then
   3.158 -                event_name = event.state_name
   3.159 -              elseif event.state == "finished_without_winner" then
   3.160 -                event_name = event.state_name
   3.161 -                negative_event = true
   3.162 -              else
   3.163 -                event_name = event.state_name
   3.164 -                negative_event = true
   3.165 -              end
   3.166 -            elseif event.event == "initiative_revoked" then
   3.167 -              negative_event = true
   3.168 -            end
   3.169 -
   3.170 -          if event.time_ago == 0 then
   3.171 -            days_ago_text = _("today at #{time}", { time = format.time(event.occurrence) })
   3.172 -          elseif event.time_ago == 1 then
   3.173 -            days_ago_text = _("yesterday at #{time}", { time = format.time(event.occurrence) })
   3.174 -          else
   3.175 -            days_ago_text = _("#{interval} ago", { interval = format.interval_text ( event.time_ago ) } )
   3.176 -          end
   3.177 -          
   3.178 -        elseif mode == "issue" then
   3.179 -          event_name = issue.state_name
   3.180 -          if issue.state_time_left:sub(1,1) ~= "-" then
   3.181 -            days_ago_text = _( "#{interval} left", {
   3.182 -              interval = format.interval_text ( issue.state_time_left )
   3.183 -            })
   3.184 -          elseif issue.closed then
   3.185 -            days_ago_text = _( "#{interval} ago", {
   3.186 -              interval = format.interval_text ( issue.closed_ago )
   3.187 -            })
   3.188 -          else
   3.189 -            days_ago_text = _"phase ends soon" 
   3.190 -          end
   3.191 -          if issue.closed and not issue.fully_frozen then
   3.192 -            negative_event = true
   3.193 -          end
   3.194 -          if issue.state == "finished_without_winner" then
   3.195 -            negative_event = true
   3.196 -          end
   3.197 -          if issue.state == "canceled_no_initiative_admitted" then
   3.198 -            negative_event = true
   3.199 -          end
   3.200 -          if issue.state == "canceled_by_admin" then
   3.201 -            negative_event = true
   3.202 -          end
   3.203 -        end
   3.204 -
   3.205 -        local class= "event_info"
   3.206 -        
   3.207 -        if negative_event then
   3.208 -          class = class .. " negative"
   3.209 -        end
   3.210 -
   3.211 -        if mode == "timeline" then
   3.212 -          ui.container{ attr = { class = class }, content = function ()
   3.213 -            ui.tag { content = event_name }
   3.214 -            slot.put ( " " )
   3.215 -            ui.tag{ attr = { class = "event_time" }, content = days_ago_text }
   3.216 -          end }
   3.217 -        end
   3.218 -
   3.219 -        if not for_issue and not for_initiative then
   3.220 -          ui.container{ attr = { class = "issue_context" }, content = function()
   3.221 -            ui.link{
   3.222 -              module = "unit", view = "show", id = issue.area.unit_id,
   3.223 -              attr = { class = "unit" }, text = issue.area.unit.name
   3.224 -            }
   3.225 -            slot.put ( " " )
   3.226 -            ui.link{
   3.227 -              module = "area", view = "show", id = issue.area_id,
   3.228 -              attr = { class = "area" }, text = issue.area.name
   3.229 -            }
   3.230 -            slot.put ( " " )
   3.231 -            execute.view{ 
   3.232 -              module = "delegation", view = "_info", params = { 
   3.233 -                issue = issue, member = for_member 
   3.234 -              }
   3.235 -            }
   3.236 -          end }
   3.237 -          ui.container{ attr = { class = "issue_info" }, content = function()
   3.238 -            ui.link{
   3.239 -              attr = { class = "issue" },
   3.240 -              text = _("#{policy} ##{id}", { policy = issue.policy.name, id = issue.id }),
   3.241 -              module = "issue",
   3.242 -              view = "show",
   3.243 -              id = issue.id
   3.244 -            }
   3.245 -
   3.246 -          end }
   3.247 -        end
   3.248 -        
   3.249 -        if mode ~= "timeline"
   3.250 -            or event.state == "finished_with_winner"
   3.251 -            or event.state == "finished_without_winner"
   3.252 -        then
   3.253 -          local initiative = issue.initiatives[1]
   3.254 -          if initiative then
   3.255 -            util.initiative_pie(initiative)
   3.256 -          end
   3.257 -        end
   3.258 -        
   3.259 -        if mode == "issue" then
   3.260 -          ui.container{ attr = { class = class }, content = function ()
   3.261 -            ui.tag { content = event_name }
   3.262 -            slot.put ( " " )
   3.263 -            ui.tag{ attr = { class = "event_time" }, content = days_ago_text }
   3.264 -          end }
   3.265 -        elseif mode == "timeline"
   3.266 -          and not for_issue
   3.267 -          and event.event ~= "issue_state_changed"
   3.268 -        then
   3.269 -          slot.put("<br />")
   3.270 -        end
   3.271 -
   3.272 -        if event.suggestion_id then
   3.273 -          ui.container{ attr = { class = "suggestion" }, content = function()
   3.274 -            ui.link{
   3.275 -              text = format.string(event.suggestion.name, {
   3.276 -                truncate_at = 160, truncate_suffix = true
   3.277 -              }),
   3.278 -              module = "initiative", view = "show", id = event.initiative.id,
   3.279 -              params = { suggestion_id = event.suggestion_id },
   3.280 -              anchor = "s" .. event.suggestion_id
   3.281 -            }
   3.282 -          end }
   3.283 -        end
   3.284 -
   3.285 -        if not for_initiative and (not for_issue or event.initiative_id) then
   3.286 -          
   3.287 -          ui.container{ attr = { class = "initiative_list" }, content = function()
   3.288 -            if event.initiative_id then
   3.289 -              local initiative = event.initiative
   3.290 -                
   3.291 -              execute.view{ module = "initiative", view = "_list", params = { 
   3.292 -                issue = issue,
   3.293 -                initiative = initiative,
   3.294 -                for_event = mode == "timeline" and not (event.state == issue.state)
   3.295 -
   3.296 -              } }
   3.297 -            else
   3.298 -              local initiatives = issue.initiatives
   3.299 -              execute.view{ module = "initiative", view = "_list", params = { 
   3.300 -                issue = issue,
   3.301 -                initiatives = initiatives,
   3.302 -                for_event = mode == "timeline" and not (event.state == issue.state)
   3.303 -              } }
   3.304 -            end
   3.305 -          end }
   3.306 -        end
   3.307 -        
   3.308 -      end }
   3.309 -    end
   3.310 -    
   3.311 -    if mode == "timeline" then
   3.312 -      if for_sidebar then
   3.313 -        ui.container { attr = { class = row_class }, content = function ()
   3.314 -          ui.link{
   3.315 -            attr = { class = "moreLink" },
   3.316 -            text = _"Show full history",
   3.317 -            module = "initiative", view = "history", id = for_initiative.id
   3.318 -          }
   3.319 -        end }
   3.320 -      elseif #items > limit then
   3.321 -        ui.container { attr = { class = row_class }, content = function ()
   3.322 -          local params = request.get_param_strings()
   3.323 -          ui.link{
   3.324 -            attr = { class = "moreLink" },
   3.325 -            text = _"Show older events",
   3.326 -            module = request.get_module(),
   3.327 -            view = request.get_view(),
   3.328 -            id = for_unit and for_unit.id or for_area and for_area.id or for_issue and for_issue.id or for_member and for_member.id,
   3.329 -            params = {
   3.330 -              mode = "timeline",
   3.331 -              event_max_id = last_event_id,
   3.332 -              tab = params["tab"],
   3.333 -              phase = params["phase"],
   3.334 -              closed = params["closed"]
   3.335 -            }
   3.336 -          }
   3.337 -        end }
   3.338 -      elseif #items < 1 then
   3.339 -        ui.container { attr = { class = row_class }, content = _"No more events available" }
   3.340 -      end
   3.341 -    end
   3.342 -    
   3.343 -  end }
   3.344 -
   3.345 -end
   3.346 -
   3.347 -
   3.348 -local filters = {}
   3.349 -
   3.350 -if not for_initiative and not for_issue and not no_filter then
   3.351 -  
   3.352 -  filters = execute.chunk{
   3.353 -    module = "issue", chunk = "_filters", params = {
   3.354 -    for_events = mode == "timeline" and true or false,
   3.355 -    member = app.session.member, 
   3.356 -    for_member = for_member, 
   3.357 -    state = for_state, 
   3.358 -    for_unit = for_unit and true or false, 
   3.359 -    for_area = for_area and true or false
   3.360 -  }}
   3.361 -end
   3.362 -
   3.363 -filters.opened = true
   3.364 -filters.selector = selector
   3.365 -
   3.366 -if mode == "timeline" then
   3.367 -  filters.content = doit
   3.368 -else
   3.369 -  filters.content = function()
   3.370 -    ui.paginate{
   3.371 -      selector = selector,
   3.372 -      per_page = 25,
   3.373 -      content = doit
   3.374 -    }
   3.375 -  end
   3.376 -end
   3.377 -
   3.378 -ui.filters(filters)
   3.379 -      
     4.1 --- a/app/main/unit/show.lua	Sun Jan 31 22:12:27 2021 +0100
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,98 +0,0 @@
     4.4 -local unit_id = config.single_unit_id or param.get_id()
     4.5 -
     4.6 -local unit = Unit:by_id(unit_id)
     4.7 -
     4.8 -if not unit or unit.attr.hidden then
     4.9 -  execute.view { module = "index", view = "404" }
    4.10 -  request.set_status("404 Not Found")
    4.11 -  return
    4.12 -end
    4.13 -
    4.14 -app.current_unit = unit
    4.15 -
    4.16 -unit:load_delegation_info_once_for_member_id(app.session.member_id)
    4.17 -
    4.18 -local areas_selector = Area:build_selector{ active = true, unit_id = unit_id }
    4.19 -areas_selector:add_order_by("member_weight DESC")
    4.20 -
    4.21 -local members_selector = Member:build_selector{
    4.22 -  active = true,
    4.23 -  voting_right_for_unit_id = unit.id
    4.24 -}
    4.25 -
    4.26 -local delegations_selector = Delegation:new_selector()
    4.27 -  :join("member", "truster", "truster.id = delegation.truster_id AND truster.active")
    4.28 -  :join("privilege", "truster_privilege", "truster_privilege.member_id = truster.id AND truster_privilege.unit_id = delegation.unit_id AND truster_privilege.voting_right")
    4.29 -  :join("member", "trustee", "trustee.id = delegation.trustee_id AND truster.active")
    4.30 -  :join("privilege", "trustee_privilege", "trustee_privilege.member_id = trustee.id AND trustee_privilege.unit_id = delegation.unit_id AND trustee_privilege.voting_right")
    4.31 -  :add_where{ "delegation.unit_id = ?", unit.id }
    4.32 -
    4.33 -local open_issues_selector = Issue:new_selector()
    4.34 -  :join("area", nil, "area.id = issue.area_id")
    4.35 -  :add_where{ "area.unit_id = ?", unit.id }
    4.36 -  :add_where("issue.closed ISNULL")
    4.37 -  :add_order_by("coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.max_admission_time) - now()")
    4.38 -
    4.39 -local closed_issues_selector = Issue:new_selector()
    4.40 -  :join("area", nil, "area.id = issue.area_id")
    4.41 -  :add_where{ "area.unit_id = ?", unit.id }
    4.42 -  :add_where("issue.closed NOTNULL")
    4.43 -  :add_order_by("issue.closed DESC")
    4.44 -
    4.45 -  ui.container{ attr = { class = "mdl-grid" }, content = function()
    4.46 -    ui.container{ attr = { class = "mdl-cell mdl-cell--12-col" }, content = function()
    4.47 -        
    4.48 -      ui.heading{ content = unit.name }
    4.49 -
    4.50 -      execute.view { module = "unit", view = "_head", params = { unit = unit } }
    4.51 -
    4.52 -      execute.view { 
    4.53 -        module = "unit", view = "_sidebar", params = { 
    4.54 -          unit = unit
    4.55 -        }
    4.56 -      }
    4.57 -
    4.58 -      execute.view { 
    4.59 -        module = "unit", view = "_sidebar_whatcanido", params = { 
    4.60 -          unit = unit
    4.61 -        }
    4.62 -      }
    4.63 -
    4.64 -      execute.view { 
    4.65 -        module = "unit", view = "_sidebar_members", params = { 
    4.66 -          unit = unit
    4.67 -        }
    4.68 -      }
    4.69 -
    4.70 -      execute.view {
    4.71 -        module = "issue",
    4.72 -        view = "_list",
    4.73 -        params = { for_unit = unit, head = function ()
    4.74 -          ui.heading { attr = { class = "left" }, level = 1, content = unit.name }
    4.75 -        end }
    4.76 -      }
    4.77 -    end }
    4.78 -  end }
    4.79 -
    4.80 ---[[
    4.81 -if app.session:has_access("all_pseudonymous") then
    4.82 -  tabs[#tabs+1] = {
    4.83 -    name = "eligible_voters",
    4.84 -    label = _"Eligible voters",
    4.85 -    module = "member",
    4.86 -    view = "_list",
    4.87 -    params = { members_selector = members_selector }
    4.88 -  }
    4.89 -
    4.90 -  tabs[#tabs+1] = {
    4.91 -    name = "delegations",
    4.92 -    label = _"Delegations",
    4.93 -    module = "delegation",
    4.94 -    view = "_list",
    4.95 -    params = { delegations_selector = delegations_selector }
    4.96 -  }
    4.97 -end
    4.98 -
    4.99 -ui.tabs(tabs)
   4.100 -
   4.101 ---]]

Impressum / About Us