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
|
bsw@11
|
5 ui.paginate{
|
bsw@11
|
6 per_page = param.get("per_page", atom.number) or 25,
|
bsw@11
|
7 selector = timeline_selector,
|
bsw@11
|
8 content = function()
|
bsw@11
|
9 local timelines = timeline_selector:exec()
|
bsw@11
|
10 timelines:load("issue")
|
bsw@11
|
11 timelines:load("initiative")
|
bsw@11
|
12 timelines:load("member")
|
bsw@11
|
13 ui.list{
|
bsw@11
|
14 attr = { class = "nohover" },
|
bsw@11
|
15 records = timelines,
|
bsw@11
|
16 columns = {
|
bsw@11
|
17 {
|
bsw@11
|
18 field_attr = { style = "width: 10em;" },
|
bsw@11
|
19 content = function(timeline)
|
bsw@11
|
20 ui.field.text{
|
bsw@11
|
21 attr = { style = "font-size: 75%; font-weight: bold; background-color: #ccc; display: block; margin-bottom: 1ex;"},
|
bsw@11
|
22 value = format.time(timeline.occurrence)
|
bsw@11
|
23 }
|
bsw/jbe@19
|
24
|
bsw@11
|
25 ui.field.text{
|
bsw@11
|
26 attr = { style = "font-size: 75%; font-weight: bold;"},
|
bsw@11
|
27 value = event_names[timeline.event] or timeline.event
|
bsw@11
|
28 }
|
bsw/jbe@19
|
29 if timeline.event == "draft_created" and timeline.count > 1 then
|
bsw/jbe@19
|
30 ui.field.text{
|
bsw/jbe@19
|
31 attr = { style = "font-size: 75%;"},
|
bsw/jbe@19
|
32 value = _("(#{more_count} duplicates removed)", { more_count = timeline.count - 1 })
|
bsw/jbe@19
|
33 }
|
bsw/jbe@19
|
34 end
|
bsw@11
|
35 end
|
bsw@11
|
36 },
|
bsw@11
|
37 {
|
bsw@11
|
38 content = function(timeline)
|
bsw@11
|
39 local issue
|
bsw@11
|
40 local initiative
|
bsw@11
|
41 if timeline.issue then
|
bsw@11
|
42 issue = timeline.issue
|
bsw@11
|
43 elseif timeline.initiative then
|
bsw@11
|
44 initiative = timeline.initiative
|
bsw@11
|
45 issue = initiative.issue
|
bsw@11
|
46 elseif timeline.draft then
|
bsw@11
|
47 initiative = timeline.draft.initiative
|
bsw@11
|
48 issue = initiative.issue
|
bsw@11
|
49 elseif timeline.suggestion then
|
bsw@11
|
50 initiative = timeline.suggestion.initiative
|
bsw@11
|
51 issue = initiative.issue
|
bsw@11
|
52 end
|
bsw@11
|
53 if issue then
|
bsw@11
|
54 if timeline.is_interested then
|
bsw@11
|
55 local label = _"You are interested in this issue",
|
bsw@11
|
56 ui.image{
|
bsw@11
|
57 attr = { alt = label, title = label, style = "float: left; margin-right: 0.5em;" },
|
bsw@11
|
58 static = "icons/16/eye.png"
|
bsw@11
|
59 }
|
bsw@11
|
60 end
|
bsw@11
|
61 slot.put(" ")
|
bsw@11
|
62 ui.tag{
|
bsw@11
|
63 tag = "span",
|
bsw@11
|
64 attr = { style = "font-size: 75%; font-weight: bold; background-color: #ccc; display: block; margin-bottom: 1ex;"},
|
bsw@11
|
65 content = issue.area.name .. ", " .. _("Issue ##{id}", { id = issue.id })
|
bsw@11
|
66 }
|
bsw@11
|
67 else
|
bsw@11
|
68 ui.tag{
|
bsw@11
|
69 tag = "span",
|
bsw@11
|
70 attr = { style = "font-size: 75%; background-color: #ccc; display: block; margin-bottom: 1ex;"},
|
bsw@11
|
71 content = function() slot.put(" ") end
|
bsw@11
|
72 }
|
bsw@11
|
73 end
|
bsw@11
|
74
|
bsw@11
|
75 if timeline.member then
|
bsw@11
|
76 execute.view{
|
bsw@11
|
77 module = "member_image",
|
bsw@11
|
78 view = "_show",
|
bsw@11
|
79 params = {
|
bsw@11
|
80 member = timeline.member,
|
bsw@11
|
81 image_type = "avatar",
|
bsw@11
|
82 show_dummy = true
|
bsw@11
|
83 }
|
bsw@11
|
84 }
|
bsw@11
|
85 ui.link{
|
bsw@11
|
86 content = timeline.member.name,
|
bsw@11
|
87 module = "member",
|
bsw@11
|
88 view = "show",
|
bsw@11
|
89 id = timeline.member.id
|
bsw@11
|
90 }
|
bsw@11
|
91 end
|
bsw@11
|
92 if timeline.issue then
|
bsw@11
|
93 local initiatives_selector = timeline.issue
|
bsw@11
|
94 :get_reference_selector("initiatives")
|
bsw@11
|
95 execute.view{
|
bsw@11
|
96 module = "initiative",
|
bsw@11
|
97 view = "_list",
|
bsw@11
|
98 params = {
|
bsw@11
|
99 issue = timeline.issue,
|
bsw@11
|
100 initiatives_selector = initiatives_selector,
|
bsw@11
|
101 per_page = initiatives_per_page,
|
bsw@11
|
102 no_sort = true,
|
bsw@11
|
103 limit = initiatives_per_page
|
bsw@11
|
104 }
|
bsw@11
|
105 }
|
bsw@11
|
106 elseif initiative then
|
bsw@11
|
107 execute.view{
|
bsw@11
|
108 module = "initiative",
|
bsw@11
|
109 view = "_list",
|
bsw@11
|
110 params = {
|
bsw@11
|
111 issue = initiative.issue,
|
bsw@11
|
112 initiatives_selector = Initiative:new_selector():add_where{ "initiative.id = ?", initiative.id },
|
bsw@11
|
113 per_page = initiatives_per_page,
|
bsw@11
|
114 no_sort = true
|
bsw@11
|
115 }
|
bsw@11
|
116 }
|
bsw@11
|
117 end
|
bsw@11
|
118 if timeline.suggestion then
|
bsw@11
|
119 ui.link{
|
bsw@11
|
120 module = "suggestion",
|
bsw@11
|
121 view = "show",
|
bsw@11
|
122 id = timeline.suggestion.id,
|
bsw@11
|
123 content = timeline.suggestion.name
|
bsw@11
|
124 }
|
bsw@11
|
125 end
|
bsw@11
|
126 end
|
bsw@11
|
127 },
|
bsw@11
|
128 }
|
bsw@11
|
129 }
|
bsw@11
|
130 end
|
bsw@11
|
131 } |