liquid_feedback_frontend

diff app/main/issue/_list.lua @ 525:63d6549cc00b

Delegation chain preview improved, better visualisation of current context, code cleanup
author bsw
date Fri May 18 19:07:07 2012 +0200 (2012-05-18)
parents 52c4a6ce5ef4
children 57a261a81c5a
line diff
     1.1 --- a/app/main/issue/_list.lua	Tue Apr 17 00:07:04 2012 +0200
     1.2 +++ b/app/main/issue/_list.lua	Fri May 18 19:07:07 2012 +0200
     1.3 @@ -12,17 +12,6 @@
     1.4    issues_selector:add_where("issue.closed NOTNULL")
     1.5  end
     1.6  
     1.7 -if app.session.member_id then
     1.8 -  issues_selector
     1.9 -    :left_join("interest", "_interest", { "_interest.issue_id = issue.id AND _interest.member_id = ?", member.id } )
    1.10 -    :add_field("(_interest.member_id NOTNULL)", "is_interested")
    1.11 -  issues_selector
    1.12 -    :left_join("delegating_interest_snapshot", "_delegating_interest", { "_delegating_interest.issue_id = issue.id AND _delegating_interest.member_id = ? AND _delegating_interest.event = issue.latest_snapshot_event", member.id } )
    1.13 -    :add_field("_delegating_interest.delegate_member_ids[1]", "is_interested_by_delegation_to_member_id")
    1.14 -    :add_field("_delegating_interest.delegate_member_ids[array_upper(_delegating_interest.delegate_member_ids, 1)]", "is_interested_via_member_id")
    1.15 -    :add_field("array_length(_delegating_interest.delegate_member_ids, 1)", "delegation_chain_length")
    1.16 -end
    1.17 -
    1.18  ui.add_partial_param_names{
    1.19    "filter",
    1.20    "filter_open",
    1.21 @@ -42,159 +31,14 @@
    1.22      content = function()
    1.23        local highlight_string = param.get("highlight_string", "string")
    1.24        local issues = issues or issues_selector:exec()
    1.25 +      issues:load('policy')
    1.26        -- issues:load(initiatives)
    1.27        ui.container{ attr = { class = "issues" }, content = function()
    1.28  
    1.29          for i, issue in ipairs(issues) do
    1.30  
    1.31 -          local class = "issue"
    1.32 -          if issue.is_interested then
    1.33 -            class = class .. " interested"
    1.34 -          elseif issue.is_interested_by_delegation_to_member_id then
    1.35 -            class = class .. " interested_by_delegation"
    1.36 -          end
    1.37 -          ui.container{ attr = { class = class }, content = function()
    1.38 -
    1.39 -            ui.container{ attr = { class = "issue_info" }, content = function()
    1.40 -            
    1.41 -              if issue.is_interested then
    1.42 -                ui.tag{
    1.43 -                  tag = "div", attr = { class = "interest_by_delegation"},
    1.44 -                  content = function()
    1.45 -                    local text = "You are interested in this issue"
    1.46 -                    ui.image{ attr = { alt = text, title = text }, static = "icons/16/eye.png" }
    1.47 -                  end
    1.48 -                }
    1.49 -                
    1.50 -              elseif issue.is_interested_by_delegation_to_member_id then
    1.51 -                ui.tag{
    1.52 -                  tag = "div", attr = { class = "interest_by_delegation"},
    1.53 -                  content = function()
    1.54 -                    local member = Member:by_id(issue.is_interested_by_delegation_to_member_id)
    1.55 -                    local text = _"delegated to"
    1.56 -                    ui.image{
    1.57 -                      attr = { class = "delegation_arrow", alt = text, title = text },
    1.58 -                      static = "delegation_arrow_24_horizontal.png"
    1.59 -                    }
    1.60 -                    execute.view{
    1.61 -                      module = "member_image",
    1.62 -                      view = "_show",
    1.63 -                      params = {
    1.64 -                        member = member,
    1.65 -                        image_type = "avatar",
    1.66 -                        show_dummy = true,
    1.67 -                        class = "micro_avatar",
    1.68 -                        popup_text = member.name
    1.69 -                      }
    1.70 -                    }
    1.71 -                    if issue.is_interested_by_delegation_to_member_id ~= issue.is_interested_via_member_id then
    1.72 -                      if issue.delegation_chain_length > 2 then
    1.73 -                        local text = _"delegated to"
    1.74 -                        ui.image{
    1.75 -                          attr = { class = "delegation_arrow", alt = text, title = text },
    1.76 -                          static = "delegation_arrow_24_horizontal.png"
    1.77 -                        }
    1.78 -                        ui.tag{ content = "..." }
    1.79 -                      end
    1.80 -                    local text = _"delegated to"
    1.81 -                      ui.image{
    1.82 -                        attr = { class = "delegation_arrow", alt = text, title = text },
    1.83 -                        static = "delegation_arrow_24_horizontal.png"
    1.84 -                      }
    1.85 -                      local member = Member:by_id(issue.is_interested_via_member_id)
    1.86 -                      execute.view{
    1.87 -                        module = "member_image",
    1.88 -                        view = "_show",
    1.89 -                        params = {
    1.90 -                          member = member,
    1.91 -                          image_type = "avatar",
    1.92 -                          show_dummy = true,
    1.93 -                          class = "micro_avatar",
    1.94 -                          popup_text = member.name
    1.95 -                        }
    1.96 -                      }
    1.97 -                    end
    1.98 -                  end
    1.99 -                }
   1.100 -              end
   1.101 -            
   1.102 -              ui.tag{
   1.103 -                tag = "div",
   1.104 -                content = function()
   1.105 -                  ui.link{
   1.106 -                    attr = { class = "issue_id" },
   1.107 -                    text = _("Issue ##{id}", { id = tostring(issue.id) }),
   1.108 -                    module = "issue",
   1.109 -                    view = "show",
   1.110 -                    id = issue.id
   1.111 -                  }
   1.112 -
   1.113 -                  slot.put(" · ")
   1.114 -                  ui.tag{ content = issue.policy.name }
   1.115 -                  slot.put(" · ")
   1.116 -                  ui.tag{ content = issue.area.name }
   1.117 -                  slot.put(" · ")
   1.118 -                  ui.tag{ content = issue.area.unit.name }
   1.119 -
   1.120 -              end
   1.121 -              }
   1.122 -              ui.tag{
   1.123 -                attr = { class = "issue_policy_info" },
   1.124 -                tag = "div",
   1.125 -                content = function()
   1.126 -                
   1.127 -                  ui.tag{ attr = { class = "event_name" }, content = issue.state_name }
   1.128 -
   1.129 -                  if issue.state_time_left then
   1.130 -                    slot.put(" · ")
   1.131 -                    if issue.state_time_left:sub(1,1) == "-" then
   1.132 -                      if issue.state == "new" then
   1.133 -                        ui.tag{ content = _("Discussion starts soon") }
   1.134 -                      elseif issue.state == "discussion" then
   1.135 -                        ui.tag{ content = _("Verification starts soon") }
   1.136 -                      elseif issue.state == "frozen" then
   1.137 -                        ui.tag{ content = _("Voting starts soon") }
   1.138 -                      elseif issue.state == "voting" then
   1.139 -                        ui.tag{ content = _("Counting starts soon") }
   1.140 -                      end
   1.141 -                    else
   1.142 -                      ui.tag{ content = _("#{time_left} left", { time_left = issue.state_time_left:gsub("days", _"days"):gsub("day", _"day") }) }
   1.143 -                    end
   1.144 -                  end
   1.145 -
   1.146 -                end
   1.147 -              }
   1.148 -
   1.149 -              
   1.150 -              if issue.old_state then
   1.151 -                ui.field.text{ value = format.time(issue.sort) }
   1.152 -                ui.field.text{ value = Issue:get_state_name_for_state(issue.old_state) .. " > " .. Issue:get_state_name_for_state(issue.new_state) }
   1.153 -              else
   1.154 -              end
   1.155 -            end }
   1.156 -
   1.157 -            ui.container{ attr = { class = "initiative_list" }, content = function()
   1.158 -
   1.159 -              local initiatives_selector = issue:get_reference_selector("initiatives")
   1.160 -              local highlight_string = param.get("highlight_string")
   1.161 -              if highlight_string then
   1.162 -                initiatives_selector:add_field( {'"highlight"("initiative"."name", ?)', highlight_string }, "name_highlighted")
   1.163 -              end
   1.164 -              execute.view{
   1.165 -                module = "initiative",
   1.166 -                view = "_list",
   1.167 -                params = {
   1.168 -                  issue = issue,
   1.169 -                  initiatives_selector = initiatives_selector,
   1.170 -                  highlight_string = highlight_string,
   1.171 -                  per_page = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3,
   1.172 -                  no_sort = true,
   1.173 -                  limit = app.session.member_id and tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3) or 3,
   1.174 -                  for_member = for_member
   1.175 -                }
   1.176 -              }
   1.177 -            end }
   1.178 -          end }
   1.179 +          execute.view{ module = "issue", view = "_show", params = { issue = issue, for_listing = true } }
   1.180 +          
   1.181          end
   1.182        end }
   1.183      end

Impressum / About Us