| rev | 
   line source | 
| 
bsw/jbe@0
 | 
     1 local areas_selector = param.get("areas_selector", "table")
 | 
| 
bsw/jbe@0
 | 
     2 
 | 
| 
bsw@9
 | 
     3 areas_selector
 | 
| 
bsw@9
 | 
     4   :reset_fields()
 | 
| 
bsw@9
 | 
     5   :add_field("area.id", nil, { "grouped" })
 | 
| 
bsw@9
 | 
     6   :add_field("area.name", nil, { "grouped" })
 | 
| 
bsw@9
 | 
     7   :add_field("member_weight", nil, { "grouped" })
 | 
| 
bsw@9
 | 
     8   :add_field("direct_member_count", nil, { "grouped" })
 | 
| 
bsw@9
 | 
     9   :add_field("(SELECT COUNT(*) FROM issue WHERE issue.area_id = area.id AND issue.accepted ISNULL AND issue.closed ISNULL)", "issues_new_count")
 | 
| 
bsw@9
 | 
    10   :add_field("(SELECT COUNT(*) FROM issue WHERE issue.area_id = area.id AND issue.accepted NOTNULL AND issue.half_frozen ISNULL AND issue.closed ISNULL)", "issues_discussion_count")
 | 
| 
bsw@9
 | 
    11   :add_field("(SELECT COUNT(*) FROM issue WHERE issue.area_id = area.id AND issue.half_frozen NOTNULL AND issue.fully_frozen ISNULL AND issue.closed ISNULL)", "issues_frozen_count")
 | 
| 
bsw@9
 | 
    12   :add_field("(SELECT COUNT(*) FROM issue WHERE issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed ISNULL)", "issues_voting_count")
 | 
| 
bsw@10
 | 
    13   :add_field("(SELECT COUNT(*) FROM issue WHERE issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed NOTNULL)", "issues_finished_count")
 | 
| 
bsw@10
 | 
    14   :add_field("(SELECT COUNT(*) FROM issue WHERE issue.area_id = area.id AND issue.fully_frozen ISNULL AND issue.closed NOTNULL)", "issues_cancelled_count")
 | 
| 
bsw@51
 | 
    15 
 | 
| 
bsw@51
 | 
    16 if app.session.member_id then
 | 
| 
bsw@51
 | 
    17   areas_selector
 | 
| 
bsw@51
 | 
    18     :add_field({ "(SELECT COUNT(*) FROM issue LEFT JOIN direct_voter ON direct_voter.issue_id = issue.id AND direct_voter.member_id = ? WHERE issue.area_id = area.id AND issue.fully_frozen NOTNULL AND issue.closed ISNULL AND direct_voter.member_id ISNULL)", app.session.member.id }, "issues_to_vote_count")
 | 
| 
bsw@51
 | 
    19     :left_join("membership", "_membership", { "_membership.area_id = area.id AND _membership.member_id = ?", app.session.member.id })
 | 
| 
bsw@51
 | 
    20     :add_field("_membership.member_id NOTNULL", "is_member", { "grouped" })
 | 
| 
mail@240
 | 
    21     :add_field({ "(SELECT member.name FROM delegation LEFT JOIN member ON delegation.trustee_id = member.id WHERE delegation.scope = 'area' AND delegation.area_id = area.id AND truster_id = ?)", app.session.member.id }, "area_delegation_name")
 | 
| 
bsw@51
 | 
    22 else
 | 
| 
bsw@51
 | 
    23   areas_selector:add_field("0", "issues_to_vote_count")
 | 
| 
bsw@51
 | 
    24 end
 | 
| 
bsw@9
 | 
    25 
 | 
| 
bsw/jbe@19
 | 
    26 local label_attr = { style = "text-align: right; width: 4em;" }
 | 
| 
bsw/jbe@19
 | 
    27 local field_attr = { style = "text-align: right; width: 4em;" }
 | 
| 
bsw/jbe@19
 | 
    28 
 | 
| 
bsw/jbe@19
 | 
    29 ui.filters{
 | 
| 
bsw/jbe@19
 | 
    30   label = _"Change order",
 | 
| 
bsw/jbe@0
 | 
    31   selector = areas_selector,
 | 
| 
bsw/jbe@19
 | 
    32   {
 | 
| 
bsw/jbe@19
 | 
    33     label = _"Order by",
 | 
| 
bsw/jbe@0
 | 
    34     {
 | 
| 
bsw/jbe@0
 | 
    35       name = "member_weight",
 | 
| 
bsw/jbe@0
 | 
    36       label = _"Population",
 | 
| 
bsw/jbe@19
 | 
    37       selector_modifier = function(selector) selector:add_order_by("area.member_weight DESC") end
 | 
| 
bsw/jbe@0
 | 
    38     },
 | 
| 
bsw/jbe@0
 | 
    39     {
 | 
| 
bsw/jbe@0
 | 
    40       name = "direct_member_count",
 | 
| 
bsw/jbe@0
 | 
    41       label = _"Direct member count",
 | 
| 
bsw/jbe@19
 | 
    42       selector_modifier = function(selector) selector:add_order_by("area.direct_member_count DESC") end
 | 
| 
bsw/jbe@0
 | 
    43     },
 | 
| 
bsw/jbe@0
 | 
    44     {
 | 
| 
bsw/jbe@0
 | 
    45       name = "az",
 | 
| 
bsw/jbe@0
 | 
    46       label = _"A-Z",
 | 
| 
bsw/jbe@19
 | 
    47       selector_modifier = function(selector) selector:add_order_by("area.name") end
 | 
| 
bsw/jbe@0
 | 
    48     },
 | 
| 
bsw/jbe@0
 | 
    49     {
 | 
| 
bsw/jbe@0
 | 
    50       name = "za",
 | 
| 
bsw/jbe@0
 | 
    51       label = _"Z-A",
 | 
| 
bsw/jbe@19
 | 
    52       selector_modifier = function(selector) selector:add_order_by("area.name DESC") end
 | 
| 
bsw/jbe@0
 | 
    53     }
 | 
| 
bsw/jbe@0
 | 
    54   },
 | 
| 
bsw/jbe@0
 | 
    55   content = function()
 | 
| 
bsw/jbe@0
 | 
    56     ui.list{
 | 
| 
bsw/jbe@19
 | 
    57       attr = { class = "area_list" },
 | 
| 
bsw/jbe@0
 | 
    58       records = areas_selector:exec(),
 | 
| 
bsw/jbe@0
 | 
    59       columns = {
 | 
| 
bsw/jbe@0
 | 
    60         {
 | 
| 
bsw/jbe@0
 | 
    61           content = function(record)
 | 
| 
bsw/jbe@19
 | 
    62             if record.is_member then
 | 
| 
bsw/jbe@19
 | 
    63               local text = _"Member of area"
 | 
| 
bsw/jbe@19
 | 
    64               ui.image{
 | 
| 
bsw/jbe@19
 | 
    65                 attr = { title = text, alt = text, style = "vertical-align: middle;" },
 | 
| 
bsw/jbe@19
 | 
    66                 static = "icons/16/user_gray.png",
 | 
| 
bsw/jbe@19
 | 
    67               }
 | 
| 
bsw/jbe@19
 | 
    68             end
 | 
| 
bsw/jbe@19
 | 
    69           end
 | 
| 
bsw/jbe@19
 | 
    70         },
 | 
| 
bsw/jbe@19
 | 
    71         {
 | 
| 
bsw/jbe@19
 | 
    72           content = function(record)
 | 
| 
mail@240
 | 
    73             if record.area_delegation_name then
 | 
| 
mail@240
 | 
    74               local text = _("Area delegated to '#{name}'", { name = record.area_delegation_name })
 | 
| 
mail@240
 | 
    75               ui.image{
 | 
| 
mail@240
 | 
    76                 attr = { title = text, alt = text, style = "vertical-align: middle;" },
 | 
| 
mail@240
 | 
    77                 static = "icons/16/link.png",
 | 
| 
mail@240
 | 
    78               }
 | 
| 
mail@240
 | 
    79             end
 | 
| 
mail@240
 | 
    80           end
 | 
| 
mail@240
 | 
    81         },
 | 
| 
mail@240
 | 
    82         {
 | 
| 
mail@240
 | 
    83           content = function(record)
 | 
| 
bsw/jbe@0
 | 
    84             if record.member_weight and record.direct_member_count then
 | 
| 
bsw/jbe@0
 | 
    85               local max_value = MemberCount:get()
 | 
| 
bsw/jbe@0
 | 
    86               ui.bargraph{
 | 
| 
bsw/jbe@0
 | 
    87                 max_value = max_value,
 | 
| 
bsw/jbe@4
 | 
    88                 width = 100,
 | 
| 
bsw/jbe@0
 | 
    89                 bars = {
 | 
| 
bsw/jbe@0
 | 
    90                   { color = "#444", value = record.direct_member_count },
 | 
| 
bsw/jbe@0
 | 
    91                   { color = "#777", value = record.member_weight - record.direct_member_count },
 | 
| 
bsw/jbe@0
 | 
    92                   { color = "#ddd", value = max_value - record.member_weight },
 | 
| 
bsw/jbe@0
 | 
    93                 }
 | 
| 
bsw/jbe@0
 | 
    94               }
 | 
| 
bsw/jbe@0
 | 
    95             end
 | 
| 
bsw/jbe@0
 | 
    96           end
 | 
| 
bsw/jbe@0
 | 
    97         },
 | 
| 
bsw/jbe@0
 | 
    98         {
 | 
| 
bsw/jbe@0
 | 
    99           content = function(record)
 | 
| 
bsw/jbe@0
 | 
   100             ui.link{
 | 
| 
bsw/jbe@0
 | 
   101               text = record.name,
 | 
| 
bsw/jbe@0
 | 
   102               module = "area",
 | 
| 
bsw/jbe@0
 | 
   103               view = "show",
 | 
| 
bsw/jbe@0
 | 
   104               id = record.id
 | 
| 
bsw/jbe@0
 | 
   105             }
 | 
| 
bsw/jbe@0
 | 
   106           end
 | 
| 
bsw@9
 | 
   107         },
 | 
| 
bsw@9
 | 
   108         {
 | 
| 
bsw/jbe@19
 | 
   109           label = function()
 | 
| 
bsw/jbe@19
 | 
   110             local title = _"New"
 | 
| 
bsw/jbe@19
 | 
   111             ui.image{
 | 
| 
bsw/jbe@19
 | 
   112               attr = { title = title, alt = title },
 | 
| 
bsw/jbe@19
 | 
   113               static = "icons/16/new.png"
 | 
| 
bsw/jbe@19
 | 
   114             }
 | 
| 
bsw/jbe@19
 | 
   115           end,
 | 
| 
bsw/jbe@19
 | 
   116           field_attr = field_attr,
 | 
| 
bsw/jbe@19
 | 
   117           label_attr = label_attr,
 | 
| 
bsw@9
 | 
   118           content = function(record)
 | 
| 
bsw@9
 | 
   119             ui.link{
 | 
| 
bsw@9
 | 
   120               text = tostring(record.issues_new_count),
 | 
| 
bsw@9
 | 
   121               module = "area",
 | 
| 
bsw@9
 | 
   122               view = "show",
 | 
| 
bsw@9
 | 
   123               id = record.id,
 | 
| 
bsw/jbe@19
 | 
   124               params = { filter = "new", tab = "issues" }
 | 
| 
bsw@9
 | 
   125             }
 | 
| 
bsw@9
 | 
   126           end
 | 
| 
bsw@9
 | 
   127         },
 | 
| 
bsw@9
 | 
   128         {
 | 
| 
bsw/jbe@19
 | 
   129           label = function()
 | 
| 
bsw/jbe@19
 | 
   130             local title = _"Discussion"
 | 
| 
bsw/jbe@19
 | 
   131             ui.image{
 | 
| 
bsw/jbe@19
 | 
   132               attr = { title = title, alt = title },
 | 
| 
bsw/jbe@19
 | 
   133               static = "icons/16/comments.png"
 | 
| 
bsw/jbe@19
 | 
   134             }
 | 
| 
bsw/jbe@19
 | 
   135           end,
 | 
| 
bsw/jbe@19
 | 
   136           field_attr = field_attr,
 | 
| 
bsw/jbe@19
 | 
   137           label_attr = label_attr,
 | 
| 
bsw@9
 | 
   138           content = function(record)
 | 
| 
bsw@9
 | 
   139             ui.link{
 | 
| 
bsw@9
 | 
   140               text = tostring(record.issues_discussion_count),
 | 
| 
bsw@9
 | 
   141               module = "area",
 | 
| 
bsw@9
 | 
   142               view = "show",
 | 
| 
bsw@9
 | 
   143               id = record.id,
 | 
| 
bsw/jbe@19
 | 
   144               params = { filter = "accepted", tab = "issues" }
 | 
| 
bsw@9
 | 
   145             }
 | 
| 
bsw@9
 | 
   146           end
 | 
| 
bsw@9
 | 
   147         },
 | 
| 
bsw@9
 | 
   148         {
 | 
| 
bsw/jbe@19
 | 
   149           label = function()
 | 
| 
bsw/jbe@19
 | 
   150             local title = _"Frozen"
 | 
| 
bsw/jbe@19
 | 
   151             ui.image{
 | 
| 
bsw/jbe@19
 | 
   152               attr = { title = title, alt = title },
 | 
| 
bsw/jbe@19
 | 
   153               static = "icons/16/lock.png"
 | 
| 
bsw/jbe@19
 | 
   154             }
 | 
| 
bsw/jbe@19
 | 
   155           end,
 | 
| 
bsw/jbe@19
 | 
   156           field_attr = field_attr,
 | 
| 
bsw/jbe@19
 | 
   157           label_attr = label_attr,
 | 
| 
bsw@9
 | 
   158           content = function(record)
 | 
| 
bsw@9
 | 
   159             ui.link{
 | 
| 
bsw@9
 | 
   160               text = tostring(record.issues_frozen_count),
 | 
| 
bsw@9
 | 
   161               module = "area",
 | 
| 
bsw@9
 | 
   162               view = "show",
 | 
| 
bsw@9
 | 
   163               id = record.id,
 | 
| 
bsw/jbe@19
 | 
   164               params = { filter = "half_frozen", tab = "issues" }
 | 
| 
bsw@9
 | 
   165             }
 | 
| 
bsw@9
 | 
   166           end
 | 
| 
bsw@9
 | 
   167         },
 | 
| 
bsw@9
 | 
   168         {
 | 
| 
bsw/jbe@19
 | 
   169           label = function()
 | 
| 
bsw/jbe@19
 | 
   170             local title = _"Voting"
 | 
| 
bsw/jbe@19
 | 
   171             ui.image{
 | 
| 
bsw/jbe@19
 | 
   172               attr = { title = title, alt = title },
 | 
| 
bsw/jbe@19
 | 
   173               static = "icons/16/email_open.png"
 | 
| 
bsw/jbe@19
 | 
   174             }
 | 
| 
bsw/jbe@19
 | 
   175           end,
 | 
| 
bsw/jbe@19
 | 
   176           field_attr = field_attr,
 | 
| 
bsw/jbe@19
 | 
   177           label_attr = label_attr,
 | 
| 
bsw@9
 | 
   178           content = function(record)
 | 
| 
bsw@9
 | 
   179             ui.link{
 | 
| 
bsw@9
 | 
   180               text = tostring(record.issues_voting_count),
 | 
| 
bsw@9
 | 
   181               module = "area",
 | 
| 
bsw@9
 | 
   182               view = "show",
 | 
| 
bsw@9
 | 
   183               id = record.id,
 | 
| 
bsw/jbe@19
 | 
   184               params = { filter = "frozen", tab = "issues" }
 | 
| 
bsw@9
 | 
   185             }
 | 
| 
bsw@9
 | 
   186           end
 | 
| 
bsw@9
 | 
   187         },
 | 
| 
bsw@9
 | 
   188         {
 | 
| 
bsw/jbe@19
 | 
   189           label = function()
 | 
| 
bsw/jbe@19
 | 
   190             local title = _"Finished"
 | 
| 
bsw/jbe@19
 | 
   191             ui.image{
 | 
| 
bsw/jbe@19
 | 
   192               attr = { title = title, alt = title },
 | 
| 
bsw/jbe@19
 | 
   193               static = "icons/16/tick.png"
 | 
| 
bsw@9
 | 
   194             }
 | 
| 
bsw/jbe@19
 | 
   195           end,
 | 
| 
bsw/jbe@19
 | 
   196           field_attr = field_attr,
 | 
| 
bsw/jbe@19
 | 
   197           label_attr = label_attr,
 | 
| 
bsw@10
 | 
   198           content = function(record)
 | 
| 
bsw@10
 | 
   199             ui.link{
 | 
| 
bsw@10
 | 
   200               text = tostring(record.issues_finished_count),
 | 
| 
bsw@10
 | 
   201               module = "area",
 | 
| 
bsw@10
 | 
   202               view = "show",
 | 
| 
bsw@10
 | 
   203               id = record.id,
 | 
| 
bsw/jbe@19
 | 
   204               params = { filter = "finished", issue_list = "newest", tab = "issues" }
 | 
| 
bsw@10
 | 
   205             }
 | 
| 
bsw@10
 | 
   206           end
 | 
| 
bsw@10
 | 
   207         },
 | 
| 
bsw@10
 | 
   208         {
 | 
| 
bsw/jbe@19
 | 
   209           label = function()
 | 
| 
bsw/jbe@19
 | 
   210             local title = _"Cancelled"
 | 
| 
bsw/jbe@19
 | 
   211             ui.image{
 | 
| 
bsw/jbe@19
 | 
   212               attr = { title = title, alt = title },
 | 
| 
bsw/jbe@19
 | 
   213               static = "icons/16/cross.png"
 | 
| 
bsw/jbe@19
 | 
   214             }
 | 
| 
bsw/jbe@19
 | 
   215           end,
 | 
| 
bsw/jbe@19
 | 
   216           field_attr = field_attr,
 | 
| 
bsw/jbe@19
 | 
   217           label_attr = label_attr,
 | 
| 
bsw@10
 | 
   218           content = function(record)
 | 
| 
bsw@10
 | 
   219             ui.link{
 | 
| 
bsw@10
 | 
   220               text = tostring(record.issues_cancelled_count),
 | 
| 
bsw@10
 | 
   221               module = "area",
 | 
| 
bsw@10
 | 
   222               view = "show",
 | 
| 
bsw@10
 | 
   223               id = record.id,
 | 
| 
bsw/jbe@19
 | 
   224               params = { filter = "cancelled", issue_list = "newest", tab = "issues" }
 | 
| 
bsw@10
 | 
   225             }
 | 
| 
bsw@10
 | 
   226           end
 | 
| 
bsw@10
 | 
   227         },
 | 
| 
bsw/jbe@19
 | 
   228         {
 | 
| 
bsw/jbe@19
 | 
   229           content = function(record)
 | 
| 
bsw/jbe@19
 | 
   230             if record.issues_to_vote_count > 0 then
 | 
| 
bsw/jbe@19
 | 
   231               ui.link{
 | 
| 
bsw/jbe@19
 | 
   232                 attr = { class = "not_voted" },
 | 
| 
bsw/jbe@19
 | 
   233                 text = _"Not yet voted" .. ": " .. tostring(record.issues_to_vote_count),
 | 
| 
bsw/jbe@19
 | 
   234                 module = "area",
 | 
| 
bsw/jbe@19
 | 
   235                 view = "show",
 | 
| 
bsw/jbe@19
 | 
   236                 id = record.id,
 | 
| 
bsw/jbe@19
 | 
   237                 params = {
 | 
| 
bsw/jbe@19
 | 
   238                   filter = "frozen",
 | 
| 
bsw/jbe@19
 | 
   239                   filter_voting = "not_voted",
 | 
| 
bsw/jbe@19
 | 
   240                   tab = "issues"
 | 
| 
bsw/jbe@19
 | 
   241                 }
 | 
| 
bsw/jbe@19
 | 
   242               }
 | 
| 
bsw/jbe@19
 | 
   243             end
 | 
| 
bsw/jbe@19
 | 
   244           end
 | 
| 
bsw/jbe@19
 | 
   245         },
 | 
| 
bsw/jbe@0
 | 
   246       }
 | 
| 
bsw/jbe@0
 | 
   247     }
 | 
| 
bsw/jbe@0
 | 
   248   end
 | 
| 
bsw/jbe@4
 | 
   249 }
 | 
| 
bsw/jbe@4
 | 
   250 
 | 
| 
bsw/jbe@4
 | 
   251 ui.bargraph_legend{
 | 
| 
bsw/jbe@4
 | 
   252   width = 25,
 | 
| 
bsw/jbe@4
 | 
   253   bars = {
 | 
| 
bsw/jbe@4
 | 
   254     { color = "#444", label = _"Direct membership" },
 | 
| 
bsw/jbe@4
 | 
   255     { color = "#777", label = _"Membership by delegation" },
 | 
| 
bsw/jbe@4
 | 
   256     { color = "#ddd", label = _"No membership at all" },
 | 
| 
bsw/jbe@4
 | 
   257   }
 | 
| 
bsw/jbe@4
 | 
   258 }
 | 
| 
bsw/jbe@4
 | 
   259 
 | 
| 
bsw/jbe@19
 | 
   260 slot.put("<br />   ")
 | 
| 
bsw/jbe@19
 | 
   261 
 | 
| 
bsw/jbe@19
 | 
   262 
 | 
| 
bsw@51
 | 
   263 if app.session.member_id then
 | 
| 
bsw@51
 | 
   264   ui.image{
 | 
| 
bsw@51
 | 
   265     attr = { title = title, alt = title },
 | 
| 
bsw@51
 | 
   266     static = "icons/16/user_gray.png"
 | 
| 
bsw@51
 | 
   267   }
 | 
| 
bsw@51
 | 
   268   slot.put(" ")
 | 
| 
bsw@51
 | 
   269   slot.put(_"Member of area")
 | 
| 
bsw@51
 | 
   270   slot.put("   ")
 | 
| 
mail@240
 | 
   271 
 | 
| 
mail@240
 | 
   272   ui.image{
 | 
| 
mail@240
 | 
   273     attr = { title = title, alt = title },
 | 
| 
mail@240
 | 
   274     static = "icons/16/link.png"
 | 
| 
mail@240
 | 
   275   }
 | 
| 
mail@240
 | 
   276   slot.put(" ")
 | 
| 
mail@240
 | 
   277   slot.put(_"Area delegated")
 | 
| 
mail@240
 | 
   278   slot.put("   ")
 | 
| 
bsw@51
 | 
   279 end
 | 
| 
bsw/jbe@19
 | 
   280 
 | 
| 
bsw/jbe@19
 | 
   281 ui.image{
 | 
| 
bsw/jbe@19
 | 
   282   attr = { title = title, alt = title },
 | 
| 
bsw/jbe@19
 | 
   283   static = "icons/16/new.png"
 | 
| 
bsw/jbe@19
 | 
   284 }
 | 
| 
bsw/jbe@19
 | 
   285 slot.put(" ")
 | 
| 
bsw/jbe@19
 | 
   286 slot.put(_"New")
 | 
| 
bsw/jbe@19
 | 
   287 slot.put("   ")
 | 
| 
bsw/jbe@19
 | 
   288 
 | 
| 
bsw/jbe@19
 | 
   289 ui.image{
 | 
| 
bsw/jbe@19
 | 
   290   attr = { title = title, alt = title },
 | 
| 
bsw/jbe@19
 | 
   291   static = "icons/16/comments.png"
 | 
| 
bsw/jbe@19
 | 
   292 }
 | 
| 
bsw/jbe@19
 | 
   293 slot.put(" ")
 | 
| 
bsw/jbe@19
 | 
   294 slot.put(_"Discussion")
 | 
| 
bsw/jbe@19
 | 
   295 slot.put("   ")
 | 
| 
bsw/jbe@19
 | 
   296 
 | 
| 
bsw/jbe@19
 | 
   297 ui.image{
 | 
| 
bsw/jbe@19
 | 
   298   attr = { title = title, alt = title },
 | 
| 
bsw/jbe@19
 | 
   299   static = "icons/16/lock.png"
 | 
| 
bsw/jbe@19
 | 
   300 }
 | 
| 
bsw/jbe@19
 | 
   301 slot.put(" ")
 | 
| 
bsw/jbe@19
 | 
   302 slot.put(_"Frozen")
 | 
| 
bsw/jbe@19
 | 
   303 slot.put("   ")
 | 
| 
bsw/jbe@19
 | 
   304 
 | 
| 
bsw/jbe@19
 | 
   305 ui.image{
 | 
| 
bsw/jbe@19
 | 
   306   attr = { title = title, alt = title },
 | 
| 
bsw/jbe@19
 | 
   307   static = "icons/16/email_open.png"
 | 
| 
bsw/jbe@19
 | 
   308 }
 | 
| 
bsw/jbe@19
 | 
   309 slot.put(" ")
 | 
| 
bsw/jbe@19
 | 
   310 slot.put(_"Voting")
 | 
| 
bsw/jbe@19
 | 
   311 slot.put("   ")
 | 
| 
bsw/jbe@19
 | 
   312 
 | 
| 
bsw/jbe@19
 | 
   313 ui.image{
 | 
| 
bsw/jbe@19
 | 
   314   attr = { title = title, alt = title },
 | 
| 
bsw/jbe@19
 | 
   315   static = "icons/16/tick.png"
 | 
| 
bsw/jbe@19
 | 
   316 }
 | 
| 
bsw/jbe@19
 | 
   317 slot.put(" ")
 | 
| 
bsw/jbe@19
 | 
   318 slot.put(_"Finished")
 | 
| 
bsw/jbe@19
 | 
   319 slot.put("   ")
 | 
| 
bsw/jbe@19
 | 
   320 
 | 
| 
bsw/jbe@19
 | 
   321 ui.image{
 | 
| 
bsw/jbe@19
 | 
   322   attr = { title = title, alt = title },
 | 
| 
bsw/jbe@19
 | 
   323   static = "icons/16/cross.png"
 | 
| 
bsw/jbe@19
 | 
   324 }
 | 
| 
bsw/jbe@19
 | 
   325 slot.put(" ")
 | 
| 
bsw/jbe@19
 | 
   326 slot.put(_"Cancelled")
 | 
| 
bsw/jbe@19
 | 
   327 
 |