# HG changeset patch # User bsw # Date 1406141277 -7200 # Node ID cb9e75ac968f597ce23e33bd03d9699b86824005 # Parent 3b33eb84288e51c04817aabccf48837113ca8eca Better ordering of interested members diff -r 3b33eb84288e -r cb9e75ac968f app/main/issue/_sidebar_members.lua --- a/app/main/issue/_sidebar_members.lua Wed Jul 23 19:38:15 2014 +0200 +++ b/app/main/issue/_sidebar_members.lua Wed Jul 23 20:47:57 2014 +0200 @@ -4,6 +4,7 @@ if app.session:has_access("all_pseudonymous") then ui.sidebar ( "tab-members", function () + ui.tag { tag = "a", attr = { name = "members" }, content = "" } local text = _"Interested members" if issue.state == "finished_with_winner" or issue.state == "finished_without_winner" then text = _"Voters" @@ -53,7 +54,7 @@ issue = issue, initiative = initiative, members_selector = interested_members_selector, - no_filter = true, + paginator_name = "members", member_class = "sidebarRow sidebarRowNarrow", for_votes = issue.state == "finished_with_winner" or issue.state == "finished_without_winner" } diff -r 3b33eb84288e -r cb9e75ac968f app/main/member/_list.lua --- a/app/main/member/_list.lua Wed Jul 23 19:38:15 2014 +0200 +++ b/app/main/member/_list.lua Wed Jul 23 20:47:57 2014 +0200 @@ -25,44 +25,53 @@ ui.add_partial_param_names{ "member_list" } -local filter = { name = "member_list" } +local filter = { name = "member_filter" } -filter[#filter+1] = { - name = "last_activity", - label = _"Latest activity", - selector_modifier = function(selector) selector:add_order_by("last_login DESC NULLS LAST, id DESC") end -} -filter[#filter+1] = { - name = "newest", - label = _"Newest", - selector_modifier = function(selector) selector:add_order_by("activated DESC, id DESC") end -} -filter[#filter+1] = { - name = "oldest", - label = _"Oldest", - selector_modifier = function(selector) selector:add_order_by("activated, id") end -} +if issue or initiative then + filter[#filter+1] = { + name = "weight", + label = _"ordered by delegation count", + selector_modifier = function(members_selector) + if for_votes then + members_selector:add_order_by("voter_weight DESC") + else + members_selector:add_order_by("weight DESC") + end + -- pseudo random ordering of members with same weight + -- (using 45th and 47th fibonacci number) + members_selector:add_order_by("(issue.id # member.id) * 1134903170::INT8 % 2971215073") + members_selector:add_order_by("member.id") + end + } +else + filter[#filter+1] = { + name = "last_activity", + label = _"by latest activity", + selector_modifier = function(selector) selector:add_order_by("last_login DESC NULLS LAST, id DESC") end + } + filter[#filter+1] = { + name = "newest", + label = _"newest first", + selector_modifier = function(selector) selector:add_order_by("activated DESC, id DESC") end + } + filter[#filter+1] = { + name = "oldest", + label = _"oldest first", + selector_modifier = function(selector) selector:add_order_by("activated, id") end + } +end filter[#filter+1] = { name = "name", - label = _"A-Z", + label = _"by A-Z", selector_modifier = function(selector) selector:add_order_by("name") end } filter[#filter+1] = { name = "name_desc", - label = _"Z-A", + label = _"by Z-A", selector_modifier = function(selector) selector:add_order_by("name DESC") end } -if issue or initiative then - no_filter = true - if for_votes then - members_selector:add_order_by("voter_weight DESC, name, id") - else - members_selector:add_order_by("weight DESC, name, id") - end -end - function list_members() local ui_paginate = ui.paginate diff -r 3b33eb84288e -r cb9e75ac968f static/lf3.css --- a/static/lf3.css Wed Jul 23 19:38:15 2014 +0200 +++ b/static/lf3.css Wed Jul 23 20:47:57 2014 +0200 @@ -455,17 +455,23 @@ .sidebarSection .sidebarHead .icon24 { margin-top: -3.6px; } -.sidebarSection .sidebarRow { +.sidebarSection .sidebarRow, +.sidebarSection .ui_filter_head, +.sidebarSection .ui_paginate_foot { clear: right; display: block; - border-top: 1px solid #aaaaaa; padding: 4.5px 9px; min-height: 20px; } +.sidebarSection .sidebarRow { + border-top: 1px solid #aaaaaa; +} .sidebarSection .sidebarRow.highlighted { background-color: #e7f0ff; } -.sidebarSection .sidebarRow.sidebarRowNarrow { +.sidebarSection .sidebarRow.sidebarRowNarrow, +.sidebarSection .ui_filter_head, +.sidebarSection .ui_paginate_foot { padding: 2.25px 9px; } .sidebarSection .sidebarRow.moreLink { @@ -1066,7 +1072,7 @@ border-top: 3px solid #397ab6; } .suggestions .suggestion.folded .suggestion-text { - max-height: 150px; + height: 150px; overflow: hidden; } .suggestions .suggestion.folded .suggestion-more { diff -r 3b33eb84288e -r cb9e75ac968f static/lf3.less --- a/static/lf3.less Wed Jul 23 19:38:15 2014 +0200 +++ b/static/lf3.less Wed Jul 23 20:47:57 2014 +0200 @@ -559,18 +559,22 @@ } } - .sidebarRow { + .sidebarRow, .ui_filter_head, .ui_paginate_foot { clear: right; display: block; - border-top: 1px solid @main-seperator-color; padding: @pad/2 @pad; min-height: 20px; } + + .sidebarRow { + border-top: 1px solid @main-seperator-color; + } + .sidebarRow.highlighted { background-color: @main-highlight-bg-color; } - .sidebarRow.sidebarRowNarrow { + .sidebarRow.sidebarRowNarrow, .ui_filter_head, .ui_paginate_foot{ padding: @pad / 4 @pad; }