liquid_feedback_frontend
annotate app/main/report/area.lua @ 118:93f4e465b50d
add initiator support in delegation
if a delegation is issued from the initiative view, the initiators
from that one are added to the delegation target list. this makes it easier to delegate to the author without the need to add him to the contact list.
if a delegation is issued from the initiative view, the initiators
from that one are added to the delegation target list. this makes it easier to delegate to the author without the need to add him to the contact list.
author | Daniel Poelzleithner <poelzi@poelzi.org> |
---|---|
date | Mon Sep 20 20:32:04 2010 +0200 (2010-09-20) |
parents | a851cc1d9903 |
children |
rev | line source |
---|---|
bsw@31 | 1 function show_issue(issue, initiatives_selector) |
bsw@31 | 2 ui.list{ |
bsw@31 | 3 records = initiatives_selector:exec(), |
bsw@31 | 4 columns = { |
bsw@31 | 5 { |
bsw@31 | 6 label = _"Date", |
bsw@31 | 7 label_attr = { style = "width: 7.5em;" }, |
bsw@31 | 8 content = function(initiative) |
bsw@31 | 9 slot.put(format.date(issue.closed)) |
bsw@31 | 10 end |
bsw@31 | 11 }, |
bsw@31 | 12 { |
bsw@31 | 13 label_attr = { style = "width: 8em;" }, |
bsw@31 | 14 label = _"Id", |
bsw@31 | 15 content = function(initiative) |
bsw@31 | 16 ui.link{ |
bsw@31 | 17 external = "", |
bsw@31 | 18 text = "#" .. tostring(issue.id) .. "." .. tostring(initiative.id), |
bsw@31 | 19 attr = { |
bsw@31 | 20 onclick = |
bsw@31 | 21 "openEl('initiative_" .. tostring(initiative.id) .. "');" .. |
bsw@31 | 22 "return(false);" |
bsw@31 | 23 } |
bsw@31 | 24 } |
bsw@31 | 25 end |
bsw@31 | 26 }, |
bsw@31 | 27 { |
bsw@31 | 28 label = _"Rank", |
bsw@31 | 29 label_attr = { style = "width: 3em;" }, |
bsw@31 | 30 field_attr = { style = "text-align: right;" }, |
bsw@31 | 31 content = function(initiative) |
bsw@31 | 32 ui.field.rank{ value = initiative.rank } |
bsw@31 | 33 end |
bsw@31 | 34 }, |
bsw@31 | 35 { |
bsw@31 | 36 label = _"Name", |
bsw@31 | 37 content = function(initiative) |
bsw@31 | 38 if initiative.rank and initiative.rank == 1 then |
bsw@31 | 39 slot.put("<b>") |
bsw@31 | 40 end |
bsw@31 | 41 ui.field.text{ value = initiative.name } |
bsw@31 | 42 if initiative.rank and initiative.rank == 1 then |
bsw@31 | 43 slot.put("</b>") |
bsw@31 | 44 end |
bsw@31 | 45 end |
bsw@31 | 46 } |
bsw@31 | 47 } |
bsw@31 | 48 } |
bsw@31 | 49 end |
bsw@31 | 50 |
bsw@31 | 51 function link_issue(issue) |
bsw@31 | 52 ui.link{ |
bsw@31 | 53 external = "", |
bsw@31 | 54 attr = { |
bsw@31 | 55 style = "text-decoration: none;", |
bsw@31 | 56 name = "issue_" .. tostring(issue.id), |
bsw@31 | 57 onclick = |
bsw@31 | 58 "openEl('issue_" .. tostring(issue.id) .. "');" .. |
bsw@31 | 59 "return(false);" |
bsw@31 | 60 }, |
bsw@31 | 61 content = function() |
bsw@31 | 62 ui.heading{ |
bsw@31 | 63 attr = { style = "background-color: #ddd; color: #000;" }, |
bsw@31 | 64 content = _("##{id}", { id = issue.id }) |
bsw@31 | 65 } |
bsw@31 | 66 end |
bsw@31 | 67 } |
bsw@31 | 68 end |
bsw@31 | 69 |
bsw@31 | 70 |
bsw@31 | 71 local area = param.get("area", "table") |
bsw@31 | 72 |
bsw@31 | 73 local issue_selector = Issue:new_selector() |
bsw@31 | 74 issue_selector:add_where{ "area_id = ?", area.id } |
bsw@31 | 75 issue_selector:add_where("closed NOTNULL") |
bsw@31 | 76 issue_selector:add_order_by("id") |
bsw@31 | 77 |
bsw@31 | 78 |
bsw@31 | 79 local issues = issue_selector:exec() |
bsw@31 | 80 |
bsw@31 | 81 ui.container{ |
bsw@31 | 82 attr = { |
bsw@31 | 83 id = "area_" .. tostring(area.id) |
bsw@31 | 84 }, |
bsw@31 | 85 content = function() |
bsw@31 | 86 |
bsw@31 | 87 link_area(area) |
bsw@31 | 88 |
bsw@31 | 89 for i, issue in ipairs(issues) do |
bsw@31 | 90 |
bsw@31 | 91 link_issue(issue) |
bsw@31 | 92 |
bsw@31 | 93 local initiatives_selector = issue:get_reference_selector("initiatives") |
bsw@31 | 94 |
bsw@31 | 95 local initiatives_count = initiatives_selector:count() |
bsw@31 | 96 |
bsw@31 | 97 initiatives_selector:add_order_by("rank") |
bsw@31 | 98 initiatives_selector:limit(3) |
bsw@31 | 99 |
bsw@31 | 100 show_issue(issue, initiatives_selector) |
bsw@31 | 101 |
bsw@31 | 102 if initiatives_count > 3 then |
bsw@31 | 103 ui.link{ |
bsw@31 | 104 attr = { |
bsw@31 | 105 style = "margin-left: 8em; font-style: italic;", |
bsw@31 | 106 onclick = "openEl('issue_" .. tostring(issue.id) .. "'); return(false);" |
bsw@31 | 107 }, |
bsw@31 | 108 content = _("and #{count} more initiatives", { count = initiatives_count - 3 }), |
bsw@31 | 109 external = "" |
bsw@31 | 110 } |
bsw@31 | 111 end |
bsw@31 | 112 |
bsw@31 | 113 slot.put("<br />") |
bsw@31 | 114 |
bsw@31 | 115 end |
bsw@31 | 116 |
bsw@31 | 117 end |
bsw@31 | 118 } |
bsw@31 | 119 |
bsw@34 | 120 ui.script{ script = "parents['area_" .. tostring(area.id) .. "'] = 'areas';" } |
bsw@34 | 121 |
bsw@31 | 122 local next_issue = issues[1] |
bsw@31 | 123 if next_issue then |
bsw@31 | 124 ui.script{ script = "next_issues['area_" .. tostring(area.id) .. "'] = 'issue_" .. tostring(next_issue.id) .. "';" } |
bsw@31 | 125 end |
bsw@31 | 126 |
bsw@31 | 127 if next_issue then |
bsw@31 | 128 local next_initiative = next_issue.initiatives[1] |
bsw@31 | 129 if next_initiative then |
bsw@31 | 130 ui.script{ script = "next_initiatives['area_" .. tostring(area.id) .. "'] = 'initiative_" .. tostring(next_initiative.id) .. "';" } |
bsw@31 | 131 end |
bsw@31 | 132 end |
bsw@31 | 133 |
bsw@31 | 134 |
bsw@31 | 135 for i, issue in ipairs(issues) do |
bsw@31 | 136 local initiatives_selector = issue:get_reference_selector("initiatives") |
bsw@31 | 137 :add_order_by("rank") |
bsw@31 | 138 |
bsw@31 | 139 local initiatives = initiatives_selector:exec() |
bsw@31 | 140 |
bsw@31 | 141 ui.container{ |
bsw@31 | 142 attr = { |
bsw@31 | 143 id = "issue_" .. tostring(issue.id) |
bsw@31 | 144 }, |
bsw@31 | 145 content = function() |
bsw@31 | 146 link_area(area) |
bsw@31 | 147 link_issue(issue) |
bsw@31 | 148 show_issue(issue, initiatives_selector) |
bsw@31 | 149 end |
bsw@31 | 150 } |
bsw@31 | 151 |
bsw@31 | 152 local previous_issue = issues[i-1] |
bsw@31 | 153 if previous_issue then |
bsw@31 | 154 ui.script{ script = "prev_issues['issue_" .. tostring(issue.id) .. "'] = 'issue_" .. tostring(previous_issue.id) .. "';" } |
bsw@31 | 155 end |
bsw@31 | 156 |
bsw@31 | 157 local next_initiative = initiatives[1] |
bsw@31 | 158 if next_initiative then |
bsw@31 | 159 ui.script{ script = "next_initiatives['issue_" .. tostring(issue.id) .. "'] = 'initiative_" .. tostring(next_initiative.id) .. "';" } |
bsw@31 | 160 end |
bsw@31 | 161 |
bsw@34 | 162 ui.script{ script = "parents['issue_" .. tostring(issue.id) .. "'] = 'area_" .. tostring(area.id) .. "';" } |
bsw@34 | 163 |
bsw@31 | 164 local next_issue = issues[i+1] |
bsw@31 | 165 if next_issue then |
bsw@31 | 166 ui.script{ script = "next_issues['issue_" .. tostring(issue.id) .. "'] = 'issue_" .. tostring(next_issue.id) .. "';" } |
bsw@31 | 167 end |
bsw@31 | 168 |
bsw@31 | 169 ui.script{ |
bsw@31 | 170 script = "document.getElementById('issue_" .. tostring(issue.id) .. "').style.display = 'none';" |
bsw@31 | 171 } |
bsw@31 | 172 |
bsw@31 | 173 |
bsw@31 | 174 for j, initiative in ipairs(initiatives) do |
bsw@31 | 175 |
bsw@31 | 176 ui.container{ |
bsw@31 | 177 attr = { |
bsw@31 | 178 id = "initiative_" .. tostring(initiative.id) |
bsw@31 | 179 }, |
bsw@31 | 180 content = function() |
bsw@31 | 181 execute.view{ |
bsw@31 | 182 module = "report", |
bsw@31 | 183 view = "initiative", |
bsw@31 | 184 params = { initiative = initiative } |
bsw@31 | 185 } |
bsw@31 | 186 slot.put("<br />") |
bsw@31 | 187 slot.put("<br />") |
bsw@31 | 188 slot.put("<br />") |
bsw@31 | 189 slot.put("<br />") |
bsw@31 | 190 slot.put("<br />") |
bsw@31 | 191 end |
bsw@31 | 192 } |
bsw@31 | 193 |
bsw@31 | 194 local previous_issue = issues[i-1] |
bsw@31 | 195 if previous_issue then |
bsw@31 | 196 ui.script{ script = "prev_issues['initiative_" .. tostring(initiative.id) .. "'] = 'issue_" .. tostring(previous_issue.id) .. "';" } |
bsw@31 | 197 end |
bsw@31 | 198 |
bsw@31 | 199 local previous_initiative = initiatives[j-1] |
bsw@31 | 200 if previous_initiative then |
bsw@31 | 201 ui.script{ script = "prev_initiatives['initiative_" .. tostring(initiative.id) .. "'] = 'initiative_" .. tostring(previous_initiative.id) .. "';" } |
bsw@31 | 202 end |
bsw@31 | 203 |
bsw@34 | 204 ui.script{ script = "parents['initiative_" .. tostring(initiative.id) .. "'] = 'issue_" .. tostring(issue.id) .. "';" } |
bsw@34 | 205 |
bsw@31 | 206 local next_initiative = initiatives[j+1] |
bsw@31 | 207 if next_initiative then |
bsw@31 | 208 ui.script{ script = "next_initiatives['initiative_" .. tostring(initiative.id) .. "'] = 'initiative_" .. tostring(next_initiative.id) .. "';" } |
bsw@31 | 209 end |
bsw@31 | 210 |
bsw@31 | 211 local next_issue = issues[i+1] |
bsw@31 | 212 if next_issue then |
bsw@31 | 213 ui.script{ script = "next_issues['initiative_" .. tostring(initiative.id) .. "'] = 'issue_" .. tostring(next_issue.id) .. "';" } |
bsw@31 | 214 end |
bsw@31 | 215 |
bsw@31 | 216 ui.script{ |
bsw@31 | 217 script = "document.getElementById('initiative_" .. tostring(initiative.id) .. "').style.display = 'none';" |
bsw@31 | 218 } |
bsw@31 | 219 |
bsw@31 | 220 end |
bsw@31 | 221 end |
bsw@31 | 222 |
bsw@31 | 223 ui.script{ |
bsw@31 | 224 script = "document.getElementById('area_" .. tostring(area.id) .. "').style.display = 'none';" |
bsw@31 | 225 } |
bsw@31 | 226 |