| rev | 
   line source | 
| 
bsw/jbe@0
 | 
     1 local members_selector = param.get("members_selector", "table")
 | 
| 
bsw@3
 | 
     2 local initiative = param.get("initiative", "table")
 | 
| 
bsw@3
 | 
     3 local issue = param.get("issue", "table")
 | 
| 
bsw@3
 | 
     4 local trustee = param.get("trustee", "table")
 | 
| 
bsw@10
 | 
     5 local initiator = param.get("initiator", "table")
 | 
| 
bsw@3
 | 
     6 
 | 
| 
bsw/jbe@19
 | 
     7 ui.add_partial_param_names{ "member_list" }
 | 
| 
bsw/jbe@19
 | 
     8 
 | 
| 
bsw/jbe@19
 | 
     9 local filter = {
 | 
| 
bsw/jbe@19
 | 
    10   label = _"Order by",
 | 
| 
bsw/jbe@19
 | 
    11   name = "member_list",
 | 
| 
bsw/jbe@19
 | 
    12   {
 | 
| 
bsw/jbe@19
 | 
    13     name = "name",
 | 
| 
bsw/jbe@19
 | 
    14     label = _"A-Z",
 | 
| 
bsw/jbe@19
 | 
    15     selector_modifier = function(selector) selector:add_order_by("name") end
 | 
| 
bsw/jbe@19
 | 
    16   },
 | 
| 
bsw/jbe@19
 | 
    17   {
 | 
| 
bsw/jbe@19
 | 
    18     name = "name_desc",
 | 
| 
bsw/jbe@19
 | 
    19     label = _"Z-A",
 | 
| 
bsw/jbe@19
 | 
    20     selector_modifier = function(selector) selector:add_order_by("name DESC") end
 | 
| 
bsw/jbe@19
 | 
    21   },
 | 
| 
bsw@3
 | 
    22   {
 | 
| 
bsw@10
 | 
    23     name = "newest",
 | 
| 
bsw@10
 | 
    24     label = _"Newest",
 | 
| 
bsw/jbe@19
 | 
    25     selector_modifier = function(selector) selector:add_order_by("created DESC, id DESC") end
 | 
| 
bsw@10
 | 
    26   },
 | 
| 
bsw@10
 | 
    27   {
 | 
| 
bsw@10
 | 
    28     name = "oldest",
 | 
| 
bsw@10
 | 
    29     label = _"Oldest",
 | 
| 
bsw/jbe@19
 | 
    30     selector_modifier = function(selector) selector:add_order_by("created, id") end
 | 
| 
bsw@3
 | 
    31   },
 | 
| 
bsw@3
 | 
    32 }
 | 
| 
bsw@3
 | 
    33 
 | 
| 
bsw@3
 | 
    34 if initiative then
 | 
| 
bsw/jbe@19
 | 
    35   filter[#filter] = {
 | 
| 
bsw@3
 | 
    36     name = "delegations",
 | 
| 
bsw@3
 | 
    37     label = _"Delegations",
 | 
| 
bsw/jbe@19
 | 
    38     selector_modifier = function(selector) selector:add_order_by("weight DESC") end
 | 
| 
bsw@3
 | 
    39   }
 | 
| 
bsw@3
 | 
    40 end
 | 
| 
bsw/jbe@0
 | 
    41 
 | 
| 
bsw/jbe@19
 | 
    42 ui.filters{
 | 
| 
bsw/jbe@19
 | 
    43   label = _"Change order",
 | 
| 
bsw/jbe@0
 | 
    44   selector = members_selector,
 | 
| 
bsw/jbe@19
 | 
    45   filter,
 | 
| 
bsw@2
 | 
    46   content = function()
 | 
| 
bsw@2
 | 
    47     ui.paginate{
 | 
| 
bsw@2
 | 
    48       selector = members_selector,
 | 
| 
bsw@2
 | 
    49       per_page = 100,
 | 
| 
bsw@2
 | 
    50       content = function() 
 | 
| 
bsw@2
 | 
    51         ui.container{
 | 
| 
bsw@2
 | 
    52           attr = { class = "member_list" },
 | 
| 
bsw@2
 | 
    53           content = function()
 | 
| 
bsw@3
 | 
    54             local members = members_selector:exec()
 | 
| 
bsw@3
 | 
    55             local columns = { 
 | 
| 
bsw@3
 | 
    56               {
 | 
| 
bsw@3
 | 
    57                 label = _"Name",
 | 
| 
bsw@3
 | 
    58                 content = function(member)
 | 
| 
bsw@3
 | 
    59                   ui.link{
 | 
| 
bsw@3
 | 
    60                     module = "member",
 | 
| 
bsw@3
 | 
    61                     view = "show",
 | 
| 
bsw@3
 | 
    62                     id = member.id,
 | 
| 
bsw@3
 | 
    63                     content = function()
 | 
| 
bsw@3
 | 
    64                       ui.image{
 | 
| 
bsw@3
 | 
    65                         attr = { width = 48, height = 48 },
 | 
| 
bsw@3
 | 
    66                         module    = "member",
 | 
| 
bsw@3
 | 
    67                         view      = "avatar",
 | 
| 
bsw@3
 | 
    68                         id        = member.id,
 | 
| 
bsw@3
 | 
    69                         extension = "jpg"
 | 
| 
bsw@3
 | 
    70                       }
 | 
| 
bsw@3
 | 
    71                     end
 | 
| 
bsw@3
 | 
    72                   }
 | 
| 
bsw@3
 | 
    73                 end
 | 
| 
bsw@3
 | 
    74               },
 | 
| 
bsw@3
 | 
    75               {
 | 
| 
bsw@3
 | 
    76                 label = _"Name",
 | 
| 
bsw@3
 | 
    77                 content = function(member)
 | 
| 
bsw@3
 | 
    78                   ui.link{
 | 
| 
bsw@3
 | 
    79                     module = "member",
 | 
| 
bsw@3
 | 
    80                     view = "show",
 | 
| 
bsw@3
 | 
    81                     id = member.id,
 | 
| 
bsw@3
 | 
    82                     content = member.name
 | 
| 
bsw@3
 | 
    83                   }
 | 
| 
bsw@3
 | 
    84                   if member.admin then
 | 
| 
bsw@3
 | 
    85                     ui.image{
 | 
| 
bsw@3
 | 
    86                       attr = { 
 | 
| 
bsw@3
 | 
    87                         alt   = _"Administrator",
 | 
| 
bsw@3
 | 
    88                         title = _"Administrator"
 | 
| 
bsw@3
 | 
    89                       },
 | 
| 
bsw@3
 | 
    90                       static = "icons/16/cog.png"
 | 
| 
bsw@3
 | 
    91                     }
 | 
| 
bsw@3
 | 
    92                   end
 | 
| 
bsw@3
 | 
    93                   -- TODO performance
 | 
| 
bsw@3
 | 
    94                   local contact = Contact:by_pk(app.session.member.id, member.id)
 | 
| 
bsw@3
 | 
    95                   if contact then
 | 
| 
bsw@3
 | 
    96                     ui.image{
 | 
| 
bsw@3
 | 
    97                       attr = { 
 | 
| 
bsw@3
 | 
    98                         alt   = _"Saved as contact",
 | 
| 
bsw@3
 | 
    99                         title = _"Saved as contact"
 | 
| 
bsw@3
 | 
   100                       },
 | 
| 
bsw@3
 | 
   101                       static = "icons/16/book_edit.png"
 | 
| 
bsw@3
 | 
   102                     }
 | 
| 
bsw@3
 | 
   103                   end
 | 
| 
bsw@3
 | 
   104                 end
 | 
| 
bsw@3
 | 
   105               }
 | 
| 
bsw@3
 | 
   106             }
 | 
| 
bsw@3
 | 
   107 
 | 
| 
bsw@3
 | 
   108             if initiative then
 | 
| 
bsw@3
 | 
   109               columns[#columns+1] = {
 | 
| 
bsw@3
 | 
   110                 label = _"Delegations",
 | 
| 
bsw@3
 | 
   111                 field_attr = { style = "text-align: right;" },
 | 
| 
bsw@3
 | 
   112                 content = function(member)
 | 
| 
bsw@3
 | 
   113                   if member.weight > 1 then
 | 
| 
bsw@3
 | 
   114                     ui.link{
 | 
| 
bsw@3
 | 
   115                       content = member.weight,
 | 
| 
bsw@3
 | 
   116                       module = "support",
 | 
| 
bsw@3
 | 
   117                       view = "show_incoming",
 | 
| 
bsw@3
 | 
   118                       params = { member_id = member.id, initiative_id = initiative.id }
 | 
| 
bsw@3
 | 
   119                     }
 | 
| 
bsw@3
 | 
   120                   end
 | 
| 
bsw@3
 | 
   121                 end
 | 
| 
bsw@3
 | 
   122               }
 | 
| 
bsw@3
 | 
   123             end
 | 
| 
bsw@3
 | 
   124 
 | 
| 
bsw@3
 | 
   125             for i, member in ipairs(members) do
 | 
| 
bsw@2
 | 
   126               execute.view{
 | 
| 
bsw@2
 | 
   127                 module = "member",
 | 
| 
bsw@2
 | 
   128                 view = "_show_thumb",
 | 
| 
bsw@10
 | 
   129                 params = {
 | 
| 
bsw@10
 | 
   130                   member = member,
 | 
| 
bsw@10
 | 
   131                   initiative = initiative,
 | 
| 
bsw@10
 | 
   132                   issue = issue,
 | 
| 
bsw@10
 | 
   133                   trustee = trustee,
 | 
| 
bsw@10
 | 
   134                   initiator = initiator
 | 
| 
bsw@10
 | 
   135                 }
 | 
| 
bsw/jbe@0
 | 
   136               }
 | 
| 
bsw@2
 | 
   137             end
 | 
| 
bsw/jbe@19
 | 
   138 
 | 
| 
bsw/jbe@0
 | 
   139           end
 | 
| 
bsw/jbe@0
 | 
   140         }
 | 
| 
bsw@3
 | 
   141         slot.put('<br style="clear: left;" />')
 | 
| 
bsw@2
 | 
   142       end
 | 
| 
bsw/jbe@0
 | 
   143     }
 | 
| 
bsw/jbe@0
 | 
   144   end
 | 
| 
bsw/jbe@19
 | 
   145 }
 |