annotate env/ui/bargraph.lua @ 202:2be6bb086d95
Little improvements and corrections of the Esperanto text thanks to helpers
 | author | 
 Thomas Wuerfel | 
 | date | 
 Thu Jan 06 15:29:17 2011 +0100 (2011-01-06) | 
 | 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
 |