# HG changeset patch # User bsw # Date 1329050528 -3600 # Node ID fc14e76afe3104027f1e49488c3a26d33d534fae # Parent aec9df5b4cd32f746d708cf86ecfbc129c839b2a Made filter better useable diff -r aec9df5b4cd3 -r fc14e76afe31 app/main/initiative/show_support.lua --- a/app/main/initiative/show_support.lua Sun Feb 12 12:20:19 2012 +0100 +++ b/app/main/initiative/show_support.lua Sun Feb 12 13:42:08 2012 +0100 @@ -44,14 +44,14 @@ if not initiative.issue.fully_frozen and not initiative.issue.closed then if supporter then if not supporter:has_critical_opinion() then - ui.tag{ content = function() + ui.tag{ attr = { class = "supporter" }, content = function() ui.image{ static = "icons/16/thumb_up_green.png" } slot.put(_"Your are supporter") end } else - ui.tag{ content = function() + ui.tag{ attr = { class = "potential_supporter" }, content = function() ui.image{ static = "icons/16/thumb_up.png" } diff -r aec9df5b4cd3 -r fc14e76afe31 app/main/issue/_filters.lua --- a/app/main/issue/_filters.lua Sun Feb 12 12:20:19 2012 +0100 +++ b/app/main/issue/_filters.lua Sun Feb 12 13:42:08 2012 +0100 @@ -3,7 +3,6 @@ -- FIXME: the filter should be named like the corresponding issue.state value filters[#filters+1] = { - label = _"Filter", name = "filter", { name = "open", @@ -63,36 +62,7 @@ } -if app.session.member and param.get("filter") == "frozen" then - filters[#filters+1] = { - label = _"Filter", - name = "filter_voting", - { - name = "any", - label = _"Any", - selector_modifier = function() end - }, - { - name = "not_voted", - label = _"Not voted", - selector_modifier = function(selector) - selector:left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id }) - selector:add_where("direct_voter.member_id ISNULL") - end - }, - { - name = "voted", - label = _"Voted", - selector_modifier = function(selector) - selector:join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id }) - end - }, - } -end - - filters[#filters+1] = { - label = _"Filter", name = "filter_interest", { name = "any", @@ -130,44 +100,64 @@ } if not param.get("no_sort", atom.boolean) then + + local filter = { name = "order" } + + local text = _"Time left" + if f == "finished" or f == "cancelled" then + text = _"Recently closed" + end + filter[#filter+1] = { + name = "state_time", + label = text, + selector_modifier = function(selector) + selector:add_order_by("issue.closed DESC, coalesce(issue.fully_frozen + issue.voting_time, issue.half_frozen + issue.verification_time, issue.accepted + issue.discussion_time, issue.created + issue.admission_time) - now()") + end + } + + filter[#filter+1] = { + name = "max_potential_support", + label = _"Supporter count", + selector_modifier = function(selector) + selector:add_order_by("(SELECT max(supporter_count) FROM initiative WHERE initiative.issue_id = issue.id) DESC") + end + } + + filter[#filter+1] = { + name = "newest", + label = _"Newest", + selector_modifier = function(selector) + selector:add_order_by("issue.created DESC") + end + } + + filters[#filters+1] = filter + +end + +if app.session.member and param.get("filter") == "frozen" then filters[#filters+1] = { - label = _"Order by", - name = "issue_list", + name = "filter_voting", { - name = "max_potential_support", - label = _"Max potential support", - selector_modifier = function(selector) - selector:add_order_by("(SELECT max(supporter_count) FROM initiative WHERE initiative.issue_id = issue.id) DESC") - end + name = "any", + label = _"Any", + selector_modifier = function() end }, { - name = "max_support", - label = _"Max support", + name = "not_voted", + label = _"Not voted", selector_modifier = function(selector) - selector:add_order_by("(SELECT max(satisfied_supporter_count) FROM initiative WHERE initiative.issue_id = issue.id) DESC") + selector:left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id }) + selector:add_where("direct_voter.member_id ISNULL") end }, { - name = "population", - label = _"Population", + name = "voted", + label = _"Voted", selector_modifier = function(selector) - selector:add_order_by("issue.population DESC") + selector:join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id }) end }, - { - name = "newest", - label = _"Newest", - selector_modifier = function(selector) - selector:add_order_by("issue.created DESC") - end - }, - { - name = "oldest", - label = _"Oldest", - selector_modifier = function(selector) - selector:add_order_by("issue.created") - end - } } end diff -r aec9df5b4cd3 -r fc14e76afe31 app/main/issue/_list.lua --- a/app/main/issue/_list.lua Sun Feb 12 12:20:19 2012 +0100 +++ b/app/main/issue/_list.lua Sun Feb 12 13:42:08 2012 +0100 @@ -17,11 +17,7 @@ local filters = execute.load_chunk{module="issue", chunk="_filters.lua"} filters.content = function() - local ui_paginate = ui.paginate - if param.get("per_page") == "all" then - ui_paginate = function(args) args.content() end - end - ui_paginate{ + ui.paginate{ per_page = tonumber(param.get("per_page")), selector = issues_selector, content = function() @@ -111,8 +107,8 @@ } end +filters.opened = true filters.selector = issues_selector -filters.label = _"Change filters and order" if param.get("no_filter", atom.boolean) then filters.content() diff -r aec9df5b4cd3 -r fc14e76afe31 app/main/member/_list.lua --- a/app/main/member/_list.lua Sun Feb 12 12:20:19 2012 +0100 +++ b/app/main/member/_list.lua Sun Feb 12 13:42:08 2012 +0100 @@ -18,7 +18,6 @@ ui.add_partial_param_names{ "member_list" } local filter = { - label = _"Order by", name = "member_list", { name = "name", diff -r aec9df5b4cd3 -r fc14e76afe31 static/style.css --- a/static/style.css Sun Feb 12 12:20:19 2012 +0100 +++ b/static/style.css Sun Feb 12 13:42:08 2012 +0100 @@ -369,13 +369,13 @@ } .interest .head_active, -.slot_support .head_potential_supporter{ +.actions .potential_supporter{ background-color: #fec; box-shadow: #fff 0px 0px 10px 1px; border-radius: 5px; } -.slot_support .head_supporter { +.actions .supporter { background-color: #dfc; box-shadow: #fff 0px 0px 10px 1px; border-radius: 5px; @@ -410,6 +410,10 @@ font-size: 80%; } +.slot_actions .change_delegation { + float: left; +} + .vote_info .close { position: absolute; top: 0; @@ -630,23 +634,34 @@ * ui.filters */ +.ui_filter { + overflow: hidden; +} + .ui_filter_closed_head, .ui_filter_head { color: #777; margin-top: 1ex; margin-bottom: 1.5ex; font-size: 75%; + float: left; +} + +.ui_filter_head { + margin-right: 2em; } .ui_filter_head a { color: #777; padding: 0.5ex; + margin-right: 0.2em; } .ui_filter_head a.active { color: #fff; background-color: #777; padding: 0.5ex; + border-radius: 5px; } /************************************************************************* @@ -654,6 +669,7 @@ */ .ui_paginate_head { + display: none; margin-bottom: 1ex; } @@ -662,7 +678,7 @@ } .ui_paginate_select a { - padding: 0.5ex; + padding: 0.5em; } /*************************************************************************