| rev | 
   line source | 
| 
bsw/jbe@0
 | 
     1 local issues_selector = param.get("issues_selector", "table")
 | 
| 
bsw/jbe@0
 | 
     2 
 | 
| 
bsw@11
 | 
     3 issues_selector
 | 
| 
bsw@11
 | 
     4   :left_join("interest", "_interest", { "_interest.issue_id = issue.id AND _interest.member_id = ?", app.session.member.id} )
 | 
| 
bsw@11
 | 
     5   :add_field("(_interest.member_id NOTNULL)", "is_interested")
 | 
| 
bsw@11
 | 
     6 
 | 
| 
bsw/jbe@19
 | 
     7 ui.add_partial_param_names{
 | 
| 
bsw/jbe@19
 | 
     8   "filter",
 | 
| 
bsw/jbe@19
 | 
     9   "filter_open",
 | 
| 
bsw/jbe@19
 | 
    10   "filter_voting",
 | 
| 
bsw/jbe@19
 | 
    11   "filter_interest",
 | 
| 
bsw/jbe@19
 | 
    12   "issue_list" 
 | 
| 
bsw/jbe@19
 | 
    13 }
 | 
| 
bsw/jbe@0
 | 
    14 
 | 
| 
bsw/jbe@19
 | 
    15 local filters = {}
 | 
| 
bsw@10
 | 
    16 
 | 
| 
bsw/jbe@19
 | 
    17 filters[#filters+1] = {
 | 
| 
bsw/jbe@19
 | 
    18   label = _"Filter",
 | 
| 
bsw/jbe@19
 | 
    19   {
 | 
| 
bsw/jbe@19
 | 
    20     name = "open",
 | 
| 
bsw/jbe@19
 | 
    21     label = _"Open",
 | 
| 
bsw/jbe@19
 | 
    22     selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
    23         selector:add_where("issue.closed ISNULL")
 | 
| 
bsw/jbe@19
 | 
    24     end
 | 
| 
bsw/jbe@19
 | 
    25   },
 | 
| 
bsw/jbe@19
 | 
    26   {
 | 
| 
bsw/jbe@19
 | 
    27     name = "new",
 | 
| 
bsw/jbe@19
 | 
    28     label = _"New",
 | 
| 
bsw/jbe@19
 | 
    29     selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
    30       selector:add_where("issue.accepted ISNULL AND issue.closed ISNULL")
 | 
| 
bsw/jbe@19
 | 
    31     end
 | 
| 
bsw/jbe@19
 | 
    32   },
 | 
| 
bsw/jbe@19
 | 
    33   {
 | 
| 
bsw/jbe@19
 | 
    34     name = "accepted",
 | 
| 
bsw/jbe@19
 | 
    35     label = _"In discussion",
 | 
| 
bsw/jbe@19
 | 
    36     selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
    37       selector:add_where("issue.accepted NOTNULL AND issue.half_frozen ISNULL AND issue.closed ISNULL")
 | 
| 
bsw/jbe@19
 | 
    38     end
 | 
| 
bsw/jbe@19
 | 
    39   },
 | 
| 
bsw/jbe@19
 | 
    40   {
 | 
| 
bsw/jbe@19
 | 
    41     name = "half_frozen",
 | 
| 
bsw/jbe@19
 | 
    42     label = _"Frozen",
 | 
| 
bsw/jbe@19
 | 
    43     selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
    44       selector:add_where("issue.half_frozen NOTNULL AND issue.fully_frozen ISNULL")
 | 
| 
bsw/jbe@19
 | 
    45     end
 | 
| 
bsw/jbe@19
 | 
    46   },
 | 
| 
bsw/jbe@19
 | 
    47   {
 | 
| 
bsw/jbe@19
 | 
    48     name = "frozen",
 | 
| 
bsw/jbe@19
 | 
    49     label = _"Voting",
 | 
| 
bsw/jbe@19
 | 
    50     selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
    51       selector:add_where("issue.fully_frozen NOTNULL AND issue.closed ISNULL")
 | 
| 
bsw/jbe@19
 | 
    52       filter_voting = true
 | 
| 
bsw/jbe@19
 | 
    53     end
 | 
| 
bsw/jbe@19
 | 
    54   },
 | 
| 
bsw/jbe@19
 | 
    55   {
 | 
| 
bsw/jbe@19
 | 
    56     name = "finished",
 | 
| 
bsw/jbe@19
 | 
    57     label = _"Finished",
 | 
| 
bsw/jbe@19
 | 
    58     selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
    59       selector:add_where("issue.closed NOTNULL AND issue.fully_frozen NOTNULL")
 | 
| 
bsw/jbe@19
 | 
    60     end
 | 
| 
bsw/jbe@19
 | 
    61   },
 | 
| 
bsw/jbe@19
 | 
    62   {
 | 
| 
bsw/jbe@19
 | 
    63     name = "cancelled",
 | 
| 
bsw/jbe@19
 | 
    64     label = _"Cancelled",
 | 
| 
bsw/jbe@19
 | 
    65     selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
    66       selector:add_where("issue.closed NOTNULL AND issue.accepted ISNULL")
 | 
| 
bsw/jbe@19
 | 
    67     end
 | 
| 
bsw/jbe@19
 | 
    68   },
 | 
| 
bsw/jbe@19
 | 
    69   {
 | 
| 
bsw/jbe@19
 | 
    70     name = "any",
 | 
| 
bsw/jbe@19
 | 
    71     label = _"Any",
 | 
| 
bsw/jbe@19
 | 
    72     selector_modifier = function(selector) end
 | 
| 
bsw/jbe@19
 | 
    73   },
 | 
| 
bsw/jbe@19
 | 
    74 }
 | 
| 
bsw/jbe@19
 | 
    75 
 | 
| 
bsw/jbe@19
 | 
    76 
 | 
| 
bsw/jbe@19
 | 
    77 if param.get("filter") == "frozen" then
 | 
| 
bsw/jbe@19
 | 
    78   filters[#filters+1] = {
 | 
| 
bsw/jbe@19
 | 
    79     label = _"Filter",
 | 
| 
bsw/jbe@19
 | 
    80     name = "filter_voting",
 | 
| 
bsw@2
 | 
    81     {
 | 
| 
bsw/jbe@19
 | 
    82       name = "any",
 | 
| 
bsw/jbe@19
 | 
    83       label = _"Any",
 | 
| 
bsw/jbe@19
 | 
    84       selector_modifier = function()  end
 | 
| 
bsw@2
 | 
    85     },
 | 
| 
bsw/jbe@0
 | 
    86     {
 | 
| 
bsw/jbe@19
 | 
    87       name = "not_voted",
 | 
| 
bsw/jbe@19
 | 
    88       label = _"Not voted",
 | 
| 
bsw/jbe@19
 | 
    89       selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
    90         selector:left_join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id })
 | 
| 
bsw/jbe@19
 | 
    91         selector:add_where("direct_voter.member_id ISNULL")
 | 
| 
bsw@2
 | 
    92       end
 | 
| 
bsw@2
 | 
    93     },
 | 
| 
bsw@2
 | 
    94     {
 | 
| 
bsw/jbe@19
 | 
    95       name = "voted",
 | 
| 
bsw/jbe@19
 | 
    96       label = _"Voted",
 | 
| 
bsw/jbe@19
 | 
    97       selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
    98         selector:join("direct_voter", nil, { "direct_voter.issue_id = issue.id AND direct_voter.member_id = ?", app.session.member.id })
 | 
| 
bsw@2
 | 
    99       end
 | 
| 
bsw@2
 | 
   100     },
 | 
| 
bsw/jbe@19
 | 
   101   }
 | 
| 
bsw/jbe@19
 | 
   102 end
 | 
| 
bsw/jbe@19
 | 
   103 
 | 
| 
bsw/jbe@19
 | 
   104 
 | 
| 
bsw/jbe@19
 | 
   105 filters[#filters+1] = {
 | 
| 
bsw/jbe@19
 | 
   106   label = _"Filter",
 | 
| 
bsw/jbe@19
 | 
   107   name = "filter_interest",
 | 
| 
bsw/jbe@19
 | 
   108   {
 | 
| 
bsw/jbe@19
 | 
   109     name = "any",
 | 
| 
bsw/jbe@19
 | 
   110     label = _"Any",
 | 
| 
bsw/jbe@19
 | 
   111     selector_modifier = function()  end
 | 
| 
bsw/jbe@19
 | 
   112   },
 | 
| 
bsw/jbe@19
 | 
   113   {
 | 
| 
bsw/jbe@19
 | 
   114     name = "my",
 | 
| 
bsw/jbe@19
 | 
   115     label = _"Interested",
 | 
| 
bsw/jbe@19
 | 
   116     selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
   117       selector:join("interest", "filter_interest", { "filter_interest.issue_id = issue.id AND filter_interest.member_id = ? ", app.session.member.id })
 | 
| 
bsw/jbe@19
 | 
   118     end
 | 
| 
bsw/jbe@19
 | 
   119   },
 | 
| 
bsw/jbe@19
 | 
   120   {
 | 
| 
bsw/jbe@19
 | 
   121     name = "supported",
 | 
| 
bsw/jbe@19
 | 
   122     label = _"Supported",
 | 
| 
bsw/jbe@19
 | 
   123     selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
   124       selector:add_where({ "EXISTS (SELECT 1 FROM initiative JOIN supporter ON supporter.initiative_id = initiative.id AND supporter.member_id = ? LEFT JOIN opinion ON opinion.initiative_id = initiative.id AND opinion.member_id = ? AND ((opinion.degree = 2 AND NOT fulfilled) OR (opinion.degree = -2 AND fulfilled)) WHERE initiative.issue_id = issue.id AND opinion.member_id ISNULL LIMIT 1)", app.session.member.id, app.session.member.id })
 | 
| 
bsw/jbe@19
 | 
   125     end
 | 
| 
bsw/jbe@19
 | 
   126   },
 | 
| 
bsw/jbe@19
 | 
   127   {
 | 
| 
bsw/jbe@19
 | 
   128     name = "potentially_supported",
 | 
| 
bsw/jbe@19
 | 
   129     label = _"Potential supported",
 | 
| 
bsw/jbe@19
 | 
   130     selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
   131       selector:add_where({ "EXISTS (SELECT 1 FROM initiative JOIN supporter ON supporter.initiative_id = initiative.id AND supporter.member_id = ? JOIN opinion ON opinion.initiative_id = initiative.id AND opinion.member_id = ? AND ((opinion.degree = 2 AND NOT fulfilled) OR (opinion.degree = -2 AND fulfilled)) WHERE initiative.issue_id = issue.id LIMIT 1)", app.session.member.id, app.session.member.id })
 | 
| 
bsw/jbe@19
 | 
   132     end
 | 
| 
bsw/jbe@19
 | 
   133   },
 | 
| 
bsw/jbe@19
 | 
   134   {
 | 
| 
bsw/jbe@19
 | 
   135     name = "initiated",
 | 
| 
bsw/jbe@19
 | 
   136     label = _"Initiated",
 | 
| 
bsw/jbe@19
 | 
   137     selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
   138       selector:add_where({ "EXISTS (SELECT 1 FROM initiative JOIN initiator ON initiator.initiative_id = initiative.id AND initiator.member_id = ? WHERE initiative.issue_id = issue.id)", app.session.member.id })
 | 
| 
bsw/jbe@19
 | 
   139     end
 | 
| 
bsw/jbe@19
 | 
   140   },
 | 
| 
bsw/jbe@19
 | 
   141 }
 | 
| 
bsw/jbe@19
 | 
   142 
 | 
| 
bsw/jbe@19
 | 
   143 if not param.get("no_sort", atom.boolean) then
 | 
| 
bsw/jbe@19
 | 
   144   filters[#filters+1] = {
 | 
| 
bsw/jbe@19
 | 
   145     label = _"Order by",
 | 
| 
bsw/jbe@19
 | 
   146     name = "issue_list",
 | 
| 
bsw@2
 | 
   147     {
 | 
| 
bsw/jbe@19
 | 
   148       name = "max_potential_support",
 | 
| 
bsw/jbe@19
 | 
   149       label = _"Max potential support",
 | 
| 
bsw/jbe@19
 | 
   150       selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
   151         selector:add_order_by("(SELECT max(supporter_count) FROM initiative WHERE initiative.issue_id = issue.id) DESC")
 | 
| 
bsw@2
 | 
   152       end
 | 
| 
bsw@2
 | 
   153     },
 | 
| 
bsw@2
 | 
   154     {
 | 
| 
bsw/jbe@19
 | 
   155       name = "max_support",
 | 
| 
bsw/jbe@19
 | 
   156       label = _"Max support",
 | 
| 
bsw/jbe@19
 | 
   157       selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
   158         selector:add_order_by("(SELECT max(satisfied_supporter_count) FROM initiative WHERE initiative.issue_id = issue.id) DESC")
 | 
| 
bsw/jbe@19
 | 
   159       end
 | 
| 
bsw/jbe@19
 | 
   160     },
 | 
| 
bsw/jbe@19
 | 
   161     {
 | 
| 
bsw/jbe@19
 | 
   162       name = "population",
 | 
| 
bsw/jbe@19
 | 
   163       label = _"Population",
 | 
| 
bsw/jbe@19
 | 
   164       selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
   165         selector:add_order_by("issue.population DESC")
 | 
| 
bsw/jbe@19
 | 
   166       end
 | 
| 
bsw/jbe@19
 | 
   167     },
 | 
| 
bsw/jbe@19
 | 
   168     {
 | 
| 
bsw/jbe@19
 | 
   169       name = "newest",
 | 
| 
bsw/jbe@19
 | 
   170       label = _"Newest",
 | 
| 
bsw/jbe@19
 | 
   171       selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
   172         selector:add_order_by("issue.created DESC")
 | 
| 
bsw@2
 | 
   173       end
 | 
| 
bsw@2
 | 
   174     },
 | 
| 
bsw/jbe@19
 | 
   175     {
 | 
| 
bsw/jbe@19
 | 
   176       name = "oldest",
 | 
| 
bsw/jbe@19
 | 
   177       label = _"Oldest",
 | 
| 
bsw/jbe@19
 | 
   178       selector_modifier = function(selector)
 | 
| 
bsw/jbe@19
 | 
   179         selector:add_order_by("issue.created")
 | 
| 
bsw/jbe@19
 | 
   180       end
 | 
| 
bsw/jbe@19
 | 
   181     }
 | 
| 
bsw/jbe@19
 | 
   182   }
 | 
| 
bsw/jbe@19
 | 
   183 end
 | 
| 
bsw/jbe@19
 | 
   184 
 | 
| 
bsw/jbe@19
 | 
   185 filters.content = function()
 | 
| 
bsw/jbe@19
 | 
   186   local ui_paginate = ui.paginate
 | 
| 
bsw/jbe@19
 | 
   187   if param.get("per_page") == "all" then
 | 
| 
bsw/jbe@19
 | 
   188     ui_paginate = function(args) args.content() end
 | 
| 
bsw/jbe@19
 | 
   189   end
 | 
| 
bsw/jbe@19
 | 
   190   ui_paginate{
 | 
| 
bsw/jbe@19
 | 
   191     per_page = tonumber(param.get("per_page")),
 | 
| 
bsw/jbe@19
 | 
   192     selector = issues_selector,
 | 
| 
bsw/jbe@19
 | 
   193     content = function()
 | 
| 
bsw/jbe@19
 | 
   194       local highlight_string = param.get("highlight_string", "string")
 | 
| 
bsw/jbe@19
 | 
   195       local issues = issues or issues_selector:exec()
 | 
| 
bsw/jbe@19
 | 
   196       -- issues:load(initiatives)
 | 
| 
bsw/jbe@19
 | 
   197       ui.list{
 | 
| 
bsw/jbe@19
 | 
   198         attr = { class = "issues" },
 | 
| 
bsw/jbe@19
 | 
   199         records = issues,
 | 
| 
bsw/jbe@19
 | 
   200         columns = {
 | 
| 
bsw/jbe@19
 | 
   201           {
 | 
| 
bsw/jbe@19
 | 
   202             label = _"Issue",
 | 
| 
bsw/jbe@19
 | 
   203             content = function(record)
 | 
| 
bsw/jbe@19
 | 
   204               if not param.get("for_area_list", atom.boolean) then
 | 
| 
bsw/jbe@19
 | 
   205                 ui.field.text{
 | 
| 
bsw/jbe@19
 | 
   206                   value = record.area.name
 | 
| 
bsw/jbe@19
 | 
   207                 }
 | 
| 
bsw/jbe@19
 | 
   208                 slot.put("<br />")
 | 
| 
bsw@11
 | 
   209               end
 | 
| 
bsw/jbe@19
 | 
   210               if record.is_interested then
 | 
| 
bsw/jbe@19
 | 
   211                 local label = _"You are interested in this issue",
 | 
| 
bsw/jbe@19
 | 
   212                 ui.image{
 | 
| 
bsw/jbe@19
 | 
   213                   attr = { alt = label, title = label },
 | 
| 
bsw/jbe@19
 | 
   214                   static = "icons/16/eye.png"
 | 
| 
bsw/jbe@5
 | 
   215                 }
 | 
| 
bsw/jbe@19
 | 
   216                 slot.put(" ")
 | 
| 
bsw/jbe@19
 | 
   217               end
 | 
| 
bsw/jbe@19
 | 
   218               ui.link{
 | 
| 
bsw/jbe@19
 | 
   219                 text = _("Issue ##{id}", { id = tostring(record.id) }),
 | 
| 
bsw/jbe@19
 | 
   220                 module = "issue",
 | 
| 
bsw/jbe@19
 | 
   221                 view = "show",
 | 
| 
bsw/jbe@19
 | 
   222                 id = record.id
 | 
| 
bsw/jbe@19
 | 
   223               }
 | 
| 
bsw/jbe@19
 | 
   224               if record.state == "new" then
 | 
| 
bsw/jbe@19
 | 
   225                 ui.image{
 | 
| 
bsw/jbe@19
 | 
   226                   static = "icons/16/new.png"
 | 
| 
bsw/jbe@5
 | 
   227                 }
 | 
| 
bsw/jbe@5
 | 
   228               end
 | 
| 
bsw/jbe@19
 | 
   229               slot.put("<br />")
 | 
| 
bsw/jbe@19
 | 
   230               slot.put("<br />")
 | 
| 
bsw/jbe@19
 | 
   231               if record.old_state then
 | 
| 
bsw/jbe@19
 | 
   232                 ui.field.text{ value = format.time(record.sort) }
 | 
| 
bsw/jbe@19
 | 
   233                 ui.field.text{ value = Issue:get_state_name_for_state(record.old_state) .. " > " .. Issue:get_state_name_for_state(record.new_state) }
 | 
| 
bsw/jbe@19
 | 
   234               else
 | 
| 
bsw/jbe@19
 | 
   235               end
 | 
| 
bsw/jbe@19
 | 
   236             end
 | 
| 
bsw/jbe@19
 | 
   237           },
 | 
| 
bsw/jbe@19
 | 
   238           {
 | 
| 
bsw/jbe@19
 | 
   239             label = _"State",
 | 
| 
bsw/jbe@19
 | 
   240             content = function(record)
 | 
| 
bsw/jbe@19
 | 
   241               if record.state == "voting" then
 | 
| 
bsw/jbe@19
 | 
   242                 ui.link{
 | 
| 
bsw/jbe@19
 | 
   243                   content = _"Voting",
 | 
| 
bsw/jbe@19
 | 
   244                   module = "vote",
 | 
| 
bsw/jbe@19
 | 
   245                   view = "list",
 | 
| 
bsw/jbe@19
 | 
   246                   params = { issue_id = record.id }
 | 
| 
bsw/jbe@19
 | 
   247                 }
 | 
| 
bsw/jbe@19
 | 
   248               else
 | 
| 
bsw/jbe@19
 | 
   249                 ui.field.issue_state{ value = record.state }
 | 
| 
bsw/jbe@19
 | 
   250               end
 | 
| 
bsw/jbe@19
 | 
   251             end
 | 
| 
bsw/jbe@19
 | 
   252           },
 | 
| 
bsw/jbe@19
 | 
   253           {
 | 
| 
bsw/jbe@19
 | 
   254             label = _"Initiatives",
 | 
| 
bsw/jbe@19
 | 
   255             content = function(record)
 | 
| 
bsw/jbe@19
 | 
   256               local initiatives_selector = record:get_reference_selector("initiatives")
 | 
| 
bsw/jbe@19
 | 
   257               local highlight_string = param.get("highlight_string")
 | 
| 
bsw/jbe@19
 | 
   258               if highlight_string then
 | 
| 
bsw/jbe@19
 | 
   259                 initiatives_selector:add_field( {'"highlight"("initiative"."name", ?)', highlight_string }, "name_highlighted")
 | 
| 
bsw/jbe@19
 | 
   260               end
 | 
| 
bsw/jbe@19
 | 
   261               execute.view{
 | 
| 
bsw/jbe@19
 | 
   262                 module = "initiative",
 | 
| 
bsw/jbe@19
 | 
   263                 view = "_list",
 | 
| 
bsw/jbe@19
 | 
   264                 params = {
 | 
| 
bsw/jbe@19
 | 
   265                   issue = record,
 | 
| 
bsw/jbe@19
 | 
   266                   initiatives_selector = initiatives_selector,
 | 
| 
bsw/jbe@19
 | 
   267                   highlight_string = highlight_string,
 | 
| 
bsw/jbe@19
 | 
   268                   per_page = tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3),
 | 
| 
bsw/jbe@19
 | 
   269                   no_sort = true,
 | 
| 
bsw/jbe@19
 | 
   270                   limit = tonumber(app.session.member:get_setting_value("initiatives_preview_limit") or 3)
 | 
| 
bsw/jbe@19
 | 
   271                 }
 | 
| 
bsw/jbe@19
 | 
   272               }
 | 
| 
bsw/jbe@19
 | 
   273             end
 | 
| 
bsw/jbe@19
 | 
   274           },
 | 
| 
bsw/jbe@0
 | 
   275         }
 | 
| 
bsw/jbe@19
 | 
   276       }
 | 
| 
bsw/jbe@19
 | 
   277     end
 | 
| 
bsw/jbe@19
 | 
   278   }
 | 
| 
bsw/jbe@19
 | 
   279 end
 | 
| 
bsw/jbe@19
 | 
   280 
 | 
| 
bsw/jbe@19
 | 
   281 filters.selector = issues_selector
 | 
| 
bsw/jbe@19
 | 
   282 filters.label = _"Change filters and order"
 | 
| 
bsw/jbe@19
 | 
   283 
 | 
| 
bsw/jbe@19
 | 
   284 if param.get("no_filter", atom.boolean) then
 | 
| 
bsw/jbe@19
 | 
   285   filters.content()
 | 
| 
bsw/jbe@19
 | 
   286 else
 | 
| 
bsw/jbe@19
 | 
   287   ui.filters(filters)
 | 
| 
bsw/jbe@19
 | 
   288 end
 | 
| 
bsw/jbe@19
 | 
   289 
 | 
| 
bsw/jbe@19
 | 
   290 if param.get("legend", atom.boolean) ~= false then
 | 
| 
bsw/jbe@19
 | 
   291   local filter = param.get_all_cgi().filter
 | 
| 
bsw/jbe@19
 | 
   292   if not filter or filter == "any" or filter ~= "finished" then
 | 
| 
bsw/jbe@19
 | 
   293     ui.bargraph_legend{
 | 
| 
bsw/jbe@19
 | 
   294       width = 25,
 | 
| 
bsw/jbe@19
 | 
   295       bars = {
 | 
| 
bsw/jbe@19
 | 
   296         { color = "#0a0", label = _"Supporter" },
 | 
| 
bsw/jbe@19
 | 
   297         { color = "#777", label = _"Potential supporter" },
 | 
| 
bsw/jbe@19
 | 
   298         { color = "#ddd", label = _"No support at all" },
 | 
| 
bsw/jbe@19
 | 
   299       }
 | 
| 
bsw/jbe@0
 | 
   300     }
 | 
| 
bsw/jbe@0
 | 
   301   end
 | 
| 
bsw/jbe@19
 | 
   302   if not filter or filter == "any" or filter == "finished" then
 | 
| 
bsw/jbe@19
 | 
   303     ui.bargraph_legend{
 | 
| 
bsw/jbe@19
 | 
   304       width = 25,
 | 
| 
bsw/jbe@19
 | 
   305       bars = {
 | 
| 
bsw/jbe@19
 | 
   306         { color = "#0a0", label = _"Yes" },
 | 
| 
bsw/jbe@19
 | 
   307         { color = "#aaa", label = _"Abstention" },
 | 
| 
bsw/jbe@19
 | 
   308         { color = "#a00", label = _"No" },
 | 
| 
bsw/jbe@19
 | 
   309       }
 | 
| 
bsw/jbe@19
 | 
   310     }
 | 
| 
bsw/jbe@19
 | 
   311   end
 | 
| 
bsw/jbe@19
 | 
   312 end
 | 
| 
bsw/jbe@19
 | 
   313 
 |