liquid_feedback_frontend

annotate env/ui/bargraph.lua @ 1859:02c34183b6df

Fixed wrong filename in INSTALL file
author bsw
date Tue Nov 28 18:54:51 2023 +0100 (17 months ago)
parents 32cc544d5a5b
children
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@504 18 local rest = 0
bsw@504 19 local last_visiable_bar = 0
bsw@504 20 for i, bar in ipairs(args.bars) do
bsw@504 21 if bar.value > 0 then
bsw@504 22 last_visiable_bar = i
bsw@504 23 end
bsw@504 24 end
bsw/jbe@0 25 for i, bar in ipairs(args.bars) do
bsw@2 26 if bar.value > 0 then
bsw/jbe@19 27 at_least_one_bar = true
bsw/jbe@4 28 local value = bar.value * args.width / args.max_value
bsw/jbe@1309 29 if quorum and quorum <= length + value then
poelzi@159 30 local dlength = math.max(quorum - length - 1, 0)
bsw@504 31 local dlength_abs = math.floor(dlength)
bsw@504 32 local rest = rest + dlength - dlength_abs
poelzi@159 33 if dlength > 0 then
poelzi@159 34 ui.container{
poelzi@159 35 attr = {
bsw@504 36 style = "width: " .. tostring(dlength_abs) .. "px; background-color: " .. bar.color .. ";",
poelzi@159 37 },
bsw@1045 38 content = ""
poelzi@159 39 }
poelzi@159 40 end
poelzi@159 41 ui.container{
poelzi@159 42 attr = {
bsw@500 43 class = "quorum",
poelzi@159 44 style = "width: 1px; background-color: " .. (args.quorum_color or "blue") ..";",
poelzi@159 45 },
bsw@1045 46 content = ""
poelzi@159 47 }
poelzi@159 48 length = dlength + 1
poelzi@159 49 value = value - dlength
poelzi@159 50 quorum = nil
poelzi@159 51 end
bsw@504 52 local value_abs = math.floor(value)
bsw@504 53 rest = rest + value - value_abs
bsw@504 54 if i == last_visiable_bar then
bsw@504 55 value_abs = value_abs + rest
bsw@504 56 end
bsw@504 57 length = length + value_abs
bsw@2 58 ui.container{
bsw@2 59 attr = {
bsw@504 60 style = "width: " .. tostring(value_abs) .. "px; background-color: " .. bar.color .. ";",
bsw@2 61 },
bsw@1045 62 content = ""
bsw@2 63 }
bsw@2 64 end
bsw/jbe@0 65 end
bsw/jbe@19 66 if not at_least_one_bar then
bsw/jbe@19 67 slot.put("&nbsp;")
bsw/jbe@19 68 end
bsw/jbe@0 69 end
bsw/jbe@0 70 }
bsw/jbe@0 71 end

Impressum / About Us