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