liquid_feedback_frontend
annotate env/ui/bargraph.lua @ 172:165f4bd02cf3
don't show the first draft of a new initiative as a new draft event in the timeline
new draft should only show changes of drafts drafts of new initiatives as they are handled by the new initiative event
new draft should only show changes of drafts drafts of new initiatives as they are handled by the new initiative event
| author | Daniel Poelzleithner <poelzi@poelzi.org> |
|---|---|
| date | Sun Oct 10 19:40:32 2010 +0200 (2010-10-10) |
| parents | 5d797c6706d5 |
| children | 03c205fc17f0 |
| rev | line source |
|---|---|
| bsw/jbe@0 | 1 function ui.bargraph(args) |
| bsw/jbe@19 | 2 local text = "" |
| bsw/jbe@19 | 3 for i, bar in ipairs(args.bars) do |
| bsw/jbe@19 | 4 if #text > 0 then |
| bsw/jbe@19 | 5 text = text .. " / " |
| bsw/jbe@19 | 6 end |
| bsw/jbe@19 | 7 text = text .. tostring(bar.value) |
| bsw/jbe@19 | 8 end |
| bsw/jbe@0 | 9 ui.container{ |
| bsw/jbe@0 | 10 attr = { |
| bsw/jbe@19 | 11 class = args.class or "bargraph", |
| bsw/jbe@19 | 12 title = tostring(text) |
| bsw/jbe@0 | 13 }, |
| bsw/jbe@0 | 14 content = function() |
| bsw/jbe@19 | 15 local at_least_one_bar = false |
| poelzi@159 | 16 local quorum = args.quorum and args.quorum * args.width / args.max_value or nil |
| poelzi@159 | 17 local length = 0 |
| bsw/jbe@0 | 18 for i, bar in ipairs(args.bars) do |
| bsw@2 | 19 if bar.value > 0 then |
| bsw/jbe@19 | 20 at_least_one_bar = true |
| bsw/jbe@4 | 21 local value = bar.value * args.width / args.max_value |
| poelzi@159 | 22 if quorum and quorum < length + value then |
| poelzi@159 | 23 local dlength = math.max(quorum - length - 1, 0) |
| poelzi@159 | 24 if dlength > 0 then |
| poelzi@159 | 25 ui.container{ |
| poelzi@159 | 26 attr = { |
| poelzi@159 | 27 style = "width: " .. tostring(dlength) .. "px; background-color: " .. bar.color .. ";", |
| poelzi@159 | 28 }, |
| poelzi@159 | 29 content = function() slot.put(" ") end |
| poelzi@159 | 30 } |
| poelzi@159 | 31 end |
| poelzi@159 | 32 ui.container{ |
| poelzi@159 | 33 attr = { |
| poelzi@159 | 34 style = "width: 1px; background-color: " .. (args.quorum_color or "blue") ..";", |
| poelzi@159 | 35 }, |
| poelzi@159 | 36 content = function() slot.put(" ") end |
| poelzi@159 | 37 } |
| poelzi@159 | 38 length = dlength + 1 |
| poelzi@159 | 39 value = value - dlength |
| poelzi@159 | 40 quorum = nil |
| poelzi@159 | 41 end |
| poelzi@159 | 42 length = length + value |
| bsw@2 | 43 ui.container{ |
| bsw@2 | 44 attr = { |
| bsw@2 | 45 style = "width: " .. tostring(value) .. "px; background-color: " .. bar.color .. ";", |
| bsw@2 | 46 }, |
| bsw@2 | 47 content = function() slot.put(" ") end |
| bsw@2 | 48 } |
| bsw@2 | 49 end |
| bsw/jbe@0 | 50 end |
| bsw/jbe@19 | 51 if not at_least_one_bar then |
| bsw/jbe@19 | 52 slot.put(" ") |
| bsw/jbe@19 | 53 end |
| bsw/jbe@0 | 54 end |
| bsw/jbe@0 | 55 } |
| bsw/jbe@0 | 56 end |