liquid_feedback_frontend

diff app/main/member/_list.lua @ 1080:cb9e75ac968f

Better ordering of interested members
author bsw
date Wed Jul 23 20:47:57 2014 +0200 (2014-07-23)
parents aba047e2bac4
children 904f6807f7fa
line diff
     1.1 --- a/app/main/member/_list.lua	Wed Jul 23 19:38:15 2014 +0200
     1.2 +++ b/app/main/member/_list.lua	Wed Jul 23 20:47:57 2014 +0200
     1.3 @@ -25,44 +25,53 @@
     1.4  
     1.5  ui.add_partial_param_names{ "member_list" }
     1.6  
     1.7 -local filter = { name = "member_list" }
     1.8 +local filter = { name = "member_filter" }
     1.9  
    1.10 -filter[#filter+1] = {
    1.11 -  name = "last_activity",
    1.12 -  label = _"Latest activity",
    1.13 -  selector_modifier = function(selector) selector:add_order_by("last_login DESC NULLS LAST, id DESC") end
    1.14 -}
    1.15 -filter[#filter+1] = {
    1.16 -  name = "newest",
    1.17 -  label = _"Newest",
    1.18 -  selector_modifier = function(selector) selector:add_order_by("activated DESC, id DESC") end
    1.19 -}
    1.20 -filter[#filter+1] = {
    1.21 -  name = "oldest",
    1.22 -  label = _"Oldest",
    1.23 -  selector_modifier = function(selector) selector:add_order_by("activated, id") end
    1.24 -}
    1.25 +if issue or initiative then
    1.26 +  filter[#filter+1] = {
    1.27 +    name = "weight",
    1.28 +    label = _"ordered by delegation count",
    1.29 +    selector_modifier = function(members_selector) 
    1.30 +      if for_votes then
    1.31 +          members_selector:add_order_by("voter_weight DESC")
    1.32 +      else
    1.33 +          members_selector:add_order_by("weight DESC")
    1.34 +      end
    1.35 +      -- pseudo random ordering of members with same weight
    1.36 +      -- (using 45th and 47th fibonacci number)
    1.37 +      members_selector:add_order_by("(issue.id # member.id) * 1134903170::INT8 % 2971215073")
    1.38 +      members_selector:add_order_by("member.id")
    1.39 +    end
    1.40 +  }
    1.41 +else
    1.42 +  filter[#filter+1] = {
    1.43 +    name = "last_activity",
    1.44 +    label = _"by latest activity",
    1.45 +    selector_modifier = function(selector) selector:add_order_by("last_login DESC NULLS LAST, id DESC") end
    1.46 +  }
    1.47 +  filter[#filter+1] = {
    1.48 +    name = "newest",
    1.49 +    label = _"newest first",
    1.50 +    selector_modifier = function(selector) selector:add_order_by("activated DESC, id DESC") end
    1.51 +  }
    1.52 +  filter[#filter+1] = {
    1.53 +    name = "oldest",
    1.54 +    label = _"oldest first",
    1.55 +    selector_modifier = function(selector) selector:add_order_by("activated, id") end
    1.56 +  }
    1.57 +end
    1.58  
    1.59  filter[#filter+1] = {
    1.60    name = "name",
    1.61 -  label = _"A-Z",
    1.62 +  label = _"by A-Z",
    1.63    selector_modifier = function(selector) selector:add_order_by("name") end
    1.64  }
    1.65  filter[#filter+1] = {
    1.66    name = "name_desc",
    1.67 -  label = _"Z-A",
    1.68 +  label = _"by Z-A",
    1.69    selector_modifier = function(selector) selector:add_order_by("name DESC") end
    1.70  }
    1.71  
    1.72 -if issue or initiative then
    1.73 -  no_filter = true
    1.74 -  if for_votes then
    1.75 -      members_selector:add_order_by("voter_weight DESC, name, id")
    1.76 -  else
    1.77 -      members_selector:add_order_by("weight DESC, name, id")
    1.78 -  end
    1.79 -end
    1.80 -
    1.81  
    1.82  function list_members()
    1.83    local ui_paginate = ui.paginate

Impressum / About Us