annotate env/ui/bargraph.lua @ 394:50d543a7fc05
Show areas on member page for page owner instead of current member
 | author | bsw | 
 | date | Mon Mar 05 22:38:01 2012 +0100 (2012-03-05) | 
 | 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 |