liquid_feedback_frontend

view app/main/member/_list.lua @ 1859:02c34183b6df

Fixed wrong filename in INSTALL file
author bsw
date Tue Nov 28 18:54:51 2023 +0100 (5 months ago)
parents a5e1de39e19a
children
line source
1 local members_selector = param.get("members_selector", "table")
2 members_selector:add_where("member.activated NOTNULL")
4 local initiative = param.get("initiative", "table")
5 local issue = param.get("issue", "table")
6 local trustee = param.get("trustee", "table")
7 local initiator = param.get("initiator", "table")
8 local for_votes = param.get("for_votes", atom.boolean)
9 local no_filter = param.get ( "no_filter", atom.boolean )
10 local no_paginate = param.get ( "no_paginate", atom.boolean )
12 local paginator_name = param.get("paginator_name")
14 local member_class = param.get("member_class")
16 if initiative or issue then
17 if for_votes then
18 members_selector:left_join("delegating_voter", "_member_list__delegating_voter", { "_member_list__delegating_voter.issue_id = issue.id AND _member_list__delegating_voter.member_id = ?", app.session.member_id })
19 members_selector:add_field("member.id = ANY(_member_list__delegating_voter.delegate_member_ids)", "in_delegation_chain")
20 else
21 members_selector:left_join("delegating_interest_snapshot", "_member_list__delegating_interest", { "_member_list__delegating_interest.snapshot_id = issue.latest_snapshot_id AND _member_list__delegating_interest.issue_id = issue.id AND _member_list__delegating_interest.member_id = ?", app.session.member_id })
22 members_selector:add_field("member.id = ANY(_member_list__delegating_interest.delegate_member_ids)", "in_delegation_chain")
23 end
24 end
26 local filter = { name = "member_filter" }
28 if issue or initiative then
29 filter[#filter+1] = {
30 name = "weight",
31 label = _"ordered by delegation count",
32 selector_modifier = function(members_selector)
33 if for_votes then
34 members_selector:add_order_by("voter_weight DESC")
35 else
36 members_selector:add_order_by("weight DESC")
37 end
38 -- pseudo random ordering of members with same weight
39 -- (using 45th and 47th fibonacci number)
40 members_selector:add_order_by("(issue.id # member.id) * 1134903170::INT8 % 2971215073")
41 members_selector:add_order_by("member.id")
42 end
43 }
44 else
45 filter[#filter+1] = {
46 name = "last_activity",
47 label = _"by latest activity",
48 selector_modifier = function(selector) selector:add_order_by("last_login DESC NULLS LAST, id DESC") end
49 }
50 filter[#filter+1] = {
51 name = "newest",
52 label = _"newest first",
53 selector_modifier = function(selector) selector:add_order_by("activated DESC, id DESC") end
54 }
55 filter[#filter+1] = {
56 name = "oldest",
57 label = _"oldest first",
58 selector_modifier = function(selector) selector:add_order_by("activated, id") end
59 }
60 end
62 filter[#filter+1] = {
63 name = "name",
64 label = _"by A-Z",
65 selector_modifier = function(selector) selector:add_order_by("name") end
66 }
67 filter[#filter+1] = {
68 name = "name_desc",
69 label = _"by Z-A",
70 selector_modifier = function(selector) selector:add_order_by("name DESC") end
71 }
74 local function list_members()
75 ui.tag{ tag = "a", attr = { name = "member_list" }, content = "" }
76 local ui_paginate = ui.paginate
77 if no_paginate then
78 ui_paginate = function (args) args.content() end
79 end
80 ui_paginate{
81 name = paginator_name,
82 anchor = paginator_name,
83 selector = members_selector,
84 per_page = 100,
85 content = function()
86 ui.container{
87 attr = { class = "member_list" },
88 content = function()
89 local members = members_selector:exec()
91 for i, member in ipairs(members) do
92 execute.view{
93 module = "member",
94 view = "_show_thumb",
95 params = {
96 class = member_class,
97 member = member,
98 initiative = initiative,
99 issue = issue,
100 trustee = trustee,
101 initiator = initiator
102 }
103 }
104 end
107 end
108 }
109 end
110 }
111 end
114 if no_filter then
115 list_members()
116 else
117 ui.filters {
118 label = _"Change order",
119 selector = members_selector,
120 content = list_members,
121 filter
122 }
123 end

Impressum / About Us