liquid_feedback_frontend
annotate app/main/timeline/_list.lua @ 154:6b6c82f9ca9f
speedup member image loading when non set
we can add the location of the default file directy instead of going through another slow request
we can add the location of the default file directy instead of going through another slow request
author | Daniel Poelzleithner <poelzi@poelzi.org> |
---|---|
date | Fri Oct 08 15:25:10 2010 +0200 (2010-10-08) |
parents | 90520c9fca44 |
children | d37dce888225 |
rev | line source |
---|---|
bsw@11 | 1 local timeline_selector = param.get("timeline_selector", "table") |
bsw@11 | 2 local event_names = param.get("event_names", "table") |
bsw@11 | 3 local initiatives_per_page = param.get("initiatives_per_page", atom.number) or 3 |
bsw@11 | 4 |
poelzi@136 | 5 |
poelzi@136 | 6 -- test if selector is valid |
poelzi@136 | 7 local test_selector = timeline_selector:get_db_conn():new_selector() |
poelzi@136 | 8 test_selector:add_field('count(1)') |
poelzi@136 | 9 test_selector:add_from(timeline_selector) |
poelzi@136 | 10 test_selector:single_object_mode() |
poelzi@136 | 11 |
poelzi@136 | 12 err, x = test_selector:try_exec() |
bsw/jbe@19 | 13 |
poelzi@136 | 14 if err then |
poelzi@136 | 15 slot.put_into("error", _"Invalid query") |
poelzi@136 | 16 else |
poelzi@136 | 17 ui.paginate{ |
poelzi@136 | 18 per_page = param.get("per_page", atom.number) or 25, |
poelzi@136 | 19 selector = timeline_selector, |
poelzi@145 | 20 container_attr = { class = "ui_paginate timeline_results" }, |
poelzi@136 | 21 content = function() |
poelzi@136 | 22 local timelines = timeline_selector:exec() |
poelzi@136 | 23 timelines:load("issue") |
poelzi@136 | 24 timelines:load("initiative") |
poelzi@136 | 25 timelines:load("member") |
poelzi@136 | 26 ui.list{ |
poelzi@136 | 27 attr = { class = "nohover" }, |
poelzi@136 | 28 records = timelines, |
poelzi@136 | 29 columns = { |
poelzi@136 | 30 { |
poelzi@136 | 31 field_attr = { style = "width: 10em;" }, |
poelzi@136 | 32 content = function(timeline) |
bsw/jbe@19 | 33 ui.field.text{ |
poelzi@136 | 34 attr = { style = "font-size: 75%; font-weight: bold; background-color: #ccc; display: block; margin-bottom: 1ex;"}, |
poelzi@136 | 35 value = format.time(timeline.occurrence) |
bsw/jbe@19 | 36 } |
poelzi@136 | 37 |
poelzi@136 | 38 ui.field.text{ |
poelzi@136 | 39 attr = { style = "font-size: 75%; font-weight: bold;"}, |
poelzi@136 | 40 value = event_names[timeline.event] or timeline.event |
poelzi@136 | 41 } |
poelzi@136 | 42 if timeline.event == "draft_created" and timeline.count > 1 then |
poelzi@136 | 43 ui.field.text{ |
poelzi@136 | 44 attr = { style = "font-size: 75%;"}, |
poelzi@136 | 45 value = _("(#{more_count} duplicates removed)", { more_count = timeline.count - 1 }) |
bsw@11 | 46 } |
bsw@11 | 47 end |
bsw@11 | 48 end |
poelzi@136 | 49 }, |
poelzi@136 | 50 { |
poelzi@136 | 51 content = function(timeline) |
poelzi@136 | 52 local issue |
poelzi@136 | 53 local initiative |
poelzi@136 | 54 if timeline.issue then |
poelzi@136 | 55 issue = timeline.issue |
poelzi@136 | 56 elseif timeline.initiative then |
poelzi@136 | 57 initiative = timeline.initiative |
poelzi@136 | 58 issue = initiative.issue |
poelzi@136 | 59 elseif timeline.draft then |
poelzi@136 | 60 initiative = timeline.draft.initiative |
poelzi@136 | 61 issue = initiative.issue |
poelzi@136 | 62 elseif timeline.suggestion then |
poelzi@136 | 63 initiative = timeline.suggestion.initiative |
poelzi@136 | 64 issue = initiative.issue |
poelzi@136 | 65 end |
poelzi@136 | 66 if issue then |
poelzi@136 | 67 if timeline.is_interested then |
poelzi@136 | 68 local label = _"You are interested in this issue", |
poelzi@136 | 69 ui.image{ |
poelzi@136 | 70 attr = { alt = label, title = label, style = "float: left; margin-right: 0.5em;" }, |
poelzi@136 | 71 static = "icons/16/eye.png" |
poelzi@136 | 72 } |
poelzi@136 | 73 end |
poelzi@136 | 74 slot.put(" ") |
poelzi@136 | 75 ui.tag{ |
poelzi@136 | 76 tag = "span", |
poelzi@136 | 77 attr = { style = "font-size: 75%; font-weight: bold; background-color: #ccc; display: block; margin-bottom: 1ex;"}, |
poelzi@136 | 78 content = issue.area.name .. ", " .. _("Issue ##{id}", { id = issue.id }) |
poelzi@136 | 79 } |
poelzi@136 | 80 else |
poelzi@136 | 81 ui.tag{ |
poelzi@136 | 82 tag = "span", |
poelzi@136 | 83 attr = { style = "font-size: 75%; background-color: #ccc; display: block; margin-bottom: 1ex;"}, |
poelzi@136 | 84 content = function() slot.put(" ") end |
poelzi@136 | 85 } |
poelzi@136 | 86 end |
poelzi@136 | 87 |
poelzi@136 | 88 if timeline.member then |
poelzi@136 | 89 execute.view{ |
poelzi@136 | 90 module = "member_image", |
poelzi@136 | 91 view = "_show", |
poelzi@136 | 92 params = { |
poelzi@136 | 93 member = timeline.member, |
poelzi@136 | 94 image_type = "avatar", |
poelzi@136 | 95 show_dummy = true |
poelzi@136 | 96 } |
bsw@11 | 97 } |
poelzi@136 | 98 ui.link{ |
poelzi@136 | 99 content = timeline.member.name, |
poelzi@136 | 100 module = "member", |
poelzi@136 | 101 view = "show", |
poelzi@136 | 102 id = timeline.member.id |
poelzi@136 | 103 } |
poelzi@136 | 104 end |
poelzi@136 | 105 if timeline.issue then |
poelzi@136 | 106 local initiatives_selector = timeline.issue |
poelzi@136 | 107 :get_reference_selector("initiatives") |
poelzi@136 | 108 execute.view{ |
poelzi@136 | 109 module = "initiative", |
poelzi@136 | 110 view = "_list", |
poelzi@136 | 111 params = { |
poelzi@136 | 112 issue = timeline.issue, |
poelzi@136 | 113 initiatives_selector = initiatives_selector, |
poelzi@136 | 114 per_page = initiatives_per_page, |
poelzi@136 | 115 no_sort = true, |
poelzi@136 | 116 limit = initiatives_per_page |
poelzi@136 | 117 } |
bsw@11 | 118 } |
poelzi@136 | 119 elseif initiative then |
poelzi@136 | 120 execute.view{ |
poelzi@136 | 121 module = "initiative", |
poelzi@136 | 122 view = "_list", |
poelzi@136 | 123 params = { |
poelzi@136 | 124 issue = initiative.issue, |
poelzi@136 | 125 initiatives_selector = Initiative:new_selector():add_where{ "initiative.id = ?", initiative.id }, |
poelzi@136 | 126 per_page = initiatives_per_page, |
poelzi@136 | 127 no_sort = true |
poelzi@136 | 128 } |
poelzi@136 | 129 } |
poelzi@136 | 130 end |
poelzi@136 | 131 if timeline.suggestion then |
poelzi@136 | 132 ui.link{ |
poelzi@136 | 133 module = "suggestion", |
poelzi@136 | 134 view = "show", |
poelzi@136 | 135 id = timeline.suggestion.id, |
poelzi@136 | 136 content = timeline.suggestion.name |
poelzi@136 | 137 } |
poelzi@136 | 138 end |
bsw@11 | 139 end |
poelzi@136 | 140 }, |
poelzi@136 | 141 } |
bsw@11 | 142 } |
poelzi@136 | 143 end |
poelzi@136 | 144 } |
poelzi@136 | 145 end |