annotate env/ui/bargraph.lua @ 497:d5935ef9b877
Placed script tags inside body not outside of it
author |
bsw |
date |
Sat Mar 17 13:04:25 2012 +0100 (2012-03-17) |
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
|