liquid_feedback_frontend
view app/main/event/_list.lua @ 417:2570b9fff7e0
Fix displaying wrong delegation (again)
| author | bsw | 
|---|---|
| date | Sat Mar 10 17:41:55 2012 +0100 (2012-03-10) | 
| parents | 699b9fa7bc36 | 
| children | 977c5374a120 | 
 line source
     1 local global = param.get("global", atom.boolean)
     2 local for_member = param.get("for_member", "table")
     3 local for_unit = param.get("for_unit", "table")
     4 local for_area = param.get("for_area", "table")
     6 local event_selector = Event:new_selector()
     7   :add_order_by("event.id DESC")
     8   :limit(25)
     9   :join("issue", nil, "issue.id = event.issue_id")
    11 if for_member then
    12   event_selector:add_where{ "event.member_id = ?", for_member.id }
    13 elseif for_unit then
    14   event_selector:join("area", nil, "area.id = issue.area_id")
    15   event_selector:add_where{ "area.unit_id = ?", for_unit.id }
    16 elseif for_area then
    17   event_selector:add_where{ "issue.area_id = ?", for_area.id }
    18 elseif not global then
    19   event_selector:join("event_seen_by_member", nil, { "event_seen_by_member.id = event.id AND event_seen_by_member.seen_by_member_id = ?", app.session.member_id })
    20 end
    22 if app.session.member_id then
    23   event_selector
    24     :left_join("interest", "_interest", { "_interest.issue_id = issue.id AND _interest.member_id = ?", app.session.member.id } )
    25     :add_field("(_interest.member_id NOTNULL)", "is_interested")
    26     :left_join("delegating_interest_snapshot", "_delegating_interest", { "_delegating_interest.issue_id = issue.id AND _delegating_interest.member_id = ? AND _delegating_interest.event = issue.latest_snapshot_event", app.session.member.id } )
    27     :add_field("_delegating_interest.delegate_member_ids[1]", "is_interested_by_delegation_to_member_id")
    28     :add_field("_delegating_interest.delegate_member_ids[array_upper(_delegating_interest.delegate_member_ids, 1)]", "is_interested_via_member_id")
    29     :add_field("array_length(_delegating_interest.delegate_member_ids, 1)", "delegation_chain_length")
    30 end
    32 --local filters = execute.load_chunk{module="issue", chunk="_filters.lua", params = { member = app.session.member }}
    34 --filters.content = function()
    36   ui.container{ attr = { class = "issues events" }, content = function()
    38     local last_event_date
    39     for i, event in ipairs(event_selector:exec()) do
    40       if event.occurrence.date ~= last_event_date then
    41         ui.container{ attr = { class = "date" }, content = format.date(event.occurrence.date) }
    42         last_event_date = event.occurrence.date
    43       end
    44       local class = "issue"
    45       if event.is_interested then
    46         class = class .. " interested"
    47       elseif event.is_interested_by_delegation_to_member_id then
    48         class = class .. " interested_by_delegation"
    49       end
    50       ui.container{ attr = { class = class }, content = function()
    52         ui.container { attr = { class = "issue_info" }, content = function()
    54           ui.container{ content = function()
    55             ui.link{
    56               attr = { class = "issue_id" },
    57               text = _("Issue ##{id}", { id = tostring(event.issue_id) }),
    58               module = "issue",
    59               view = "show",
    60               id = event.issue_id
    61             }
    63             slot.put(" · ")
    64             ui.tag{ content = event.issue.area.name }
    65             slot.put(" · ")
    66             ui.tag{ content = event.issue.area.unit.name }
    67             slot.put(" · ")
    68             ui.tag{ content = event.issue.policy.name }
    69           end }
    71           ui.container{ attr = { class = "issue_policy_info" }, content = function()
    72             if event.member_id then
    73               ui.link{
    74                 content = function()
    75                   execute.view{
    76                     module = "member_image",
    77                     view = "_show",
    78                     params = {
    79                       member = event.member,
    80                       image_type = "avatar",
    81                       show_dummy = true,
    82                       class = "micro_avatar",
    83                       popup_text = text
    84                     }
    85                   }
    86                 end,
    87                 module = "member", view = "show", id = event.member_id
    88               }
    89               slot.put(" ")
    90               ui.link{
    91                 text = event.member.name,
    92                 module = "member", view = "show", id = event.member_id
    93               }
    94               slot.put(" · ") 
    95             end
    96             local event_name = event.event_name
    97             local event_image
    98             if event.event == "issue_state_changed" then
    99               if event.state == "discussion" then
   100                 event_name = _"Discussion started"
   101                 event_image = "new.png"
   102               elseif event.state == "verification" then
   103                 event_name = _"Verification started"
   104                 event_image = "lock.png"
   105               elseif event.state == "voting" then
   106                 event_name = _"Voting started"
   107                 event_image = "email_open.png"
   108               else
   109                 event_name = event.state_name
   110               end
   111               if event_image then
   112                 ui.image{ static = "icons/16/" .. event_image }
   113               end
   114             end
   115             ui.tag{ attr = { class = "event_name" }, content = event_name }
   116             slot.put(" · ") 
   117             ui.tag{ attr = { class = "time" }, content = format.time(event.occurrence) }
   118           end }
   120         end }
   122         if event.suggestion_id then
   123           ui.container{ attr = { class = "suggestion" }, content = function()
   124             ui.link{
   125               text = event.suggestion.name,
   126               module = "suggestion", view = "show", id = event.suggestion_id
   127             }
   128           end }   
   129         end
   131         ui.container{ attr = { class = "initiative_list" }, content = function()
   132           if not event.initiative_id then
   133             local initiatives_selector = Initiative:new_selector()
   134               :add_where{ "initiative.issue_id = ?", event.issue_id }
   135               :add_order_by("initiative.rank, initiative.supporter_count")
   136             execute.view{ module = "initiative", view = "_list", params = { 
   137               issue = event.issue,
   138               initiatives_selector = initiatives_selector,
   139               no_sort = true,
   140               limit = 3
   141             } }
   142           else
   143           local initiatives_selector = Initiative:new_selector()
   144             :add_where{ "initiative.id = ?", event.initiative_id }
   145             execute.view{ module = "initiative", view = "_list", params = { 
   146               issue = event.issue,
   147               initiatives_selector = initiatives_selector,
   148               no_sort = true,
   149               limit = 1
   150             } }
   151           end
   152         end }
   154         --[[      
   155         if event.initiative_id then
   156           ui.container{ attr = { class = "initiative_id" }, content = event.initiative_id }
   157         end
   158         if event.draft_id then
   159           ui.container{ attr = { class = "draft_id" }, content = event.draft_id }
   160         end
   161         if event.suggestion_id then
   162           ui.container{ attr = { class = "suggestion_id" }, content = event.suggestion_id }
   163         end
   164   --]]
   166       end }
   167     end
   169   end }
   171 --end
   173 --filters.selector = event_selector
   174 --ui.filters(filters)
