mirror of
https://github.com/opentx/opentx.git
synced 2025-07-25 17:25:13 +03:00
3djc/batt check widget (#3519)
* Completely rewrite drawing sections to allow MUCHO easier size or position change. * First take at large widget, missing fine tuning of displayed item, and background data collection * Comparing lower cell with their live counterparts is so much better * Make use of newly introduced update() function * Tidy up
This commit is contained in:
parent
cfbec2cad9
commit
d1e7b66f1a
1 changed files with 132 additions and 46 deletions
|
@ -18,18 +18,52 @@
|
||||||
|
|
||||||
|
|
||||||
local options = {
|
local options = {
|
||||||
{ "Sensor", SOURCE, 1 },
|
{ "Sensor", SOURCE, 1 },
|
||||||
{ "Color", COLOR, WHITE }
|
{ "Color", COLOR, WHITE }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- This function is runned once at the creation of the widget
|
||||||
local function create(zone, options)
|
local function create(zone, options)
|
||||||
local myZone = { zone=zone, options=options }
|
local myZone = { zone=zone, options=options, counter=0 }
|
||||||
|
histCellData = {}
|
||||||
return myZone
|
return myZone
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- This function allow updates when you change widgets settings
|
||||||
|
local function update(myZone, options)
|
||||||
|
myZone.options = options
|
||||||
|
end
|
||||||
|
|
||||||
|
-- A quick and dirty check for empty table
|
||||||
|
local function isEmpty(self)
|
||||||
|
for _, _ in pairs(self) do
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
--- This function returns a table with cels values
|
--- This function returns a table with cels values
|
||||||
local function getCels(sensor)
|
local function getCels(sensor)
|
||||||
return getValue(sensor)
|
liveCellData = getValue(sensor)
|
||||||
|
if type(liveCellData) == "table" then
|
||||||
|
-- initialize historical table if not done yet
|
||||||
|
if isEmpty(histCellData) then
|
||||||
|
for k, v in pairs(liveCellData) do
|
||||||
|
histCellData[k] = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- this is necessary for simu where cellcount can change
|
||||||
|
if #histCellData ~= #liveCellData then
|
||||||
|
for k, v in pairs(liveCellData) do
|
||||||
|
histCellData[k] = v
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- stores the lowest cell values in historical table
|
||||||
|
for k, v in pairs(liveCellData) do
|
||||||
|
if v < histCellData[k] then histCellData[k] = v end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return liveCellData
|
||||||
end
|
end
|
||||||
|
|
||||||
--- This function returns the number of cels
|
--- This function returns the number of cels
|
||||||
|
@ -93,11 +127,11 @@ end
|
||||||
-- This function returns green at 100%, red bellow 30% and graduate in betwwen
|
-- This function returns green at 100%, red bellow 30% and graduate in betwwen
|
||||||
local function getPercentColor(cpercent)
|
local function getPercentColor(cpercent)
|
||||||
if cpercent < 30 then
|
if cpercent < 30 then
|
||||||
return lcd.RGB(0xff,0,0)
|
return lcd.RGB(0xff, 0, 0)
|
||||||
else
|
else
|
||||||
g = math.floor(0xdf * cpercent / 100)
|
g = math.floor(0xdf * cpercent / 100)
|
||||||
r = 0xdf - g
|
r = 0xdf - g
|
||||||
return lcd.RGB(r,g,0)
|
return lcd.RGB(r, g, 0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -105,82 +139,84 @@ end
|
||||||
local function getRangeColor(value, gvalue, rvalue)
|
local function getRangeColor(value, gvalue, rvalue)
|
||||||
if gvalue > rvalue and not range==0 then
|
if gvalue > rvalue and not range==0 then
|
||||||
range = gvalue - rvalue
|
range = gvalue - rvalue
|
||||||
if value > gvalue then return lcd.RGB(0,0xdf,0) end
|
if value > gvalue then return lcd.RGB(0, 0xdf, 0) end
|
||||||
if value < rvalue then return lcd.RGB(0xdf,0,0) end
|
if value < rvalue then return lcd.RGB(0xdf, 0, 0) end
|
||||||
g = math.floor(0xdf * (value-rvalue) / range)
|
g = math.floor(0xdf * (value-rvalue) / range)
|
||||||
r = 0xdf - g
|
r = 0xdf - g
|
||||||
return lcd.RGB(r,g,0)
|
return lcd.RGB(r, g, 0)
|
||||||
else
|
else
|
||||||
range = rvalue - gvalue
|
range = rvalue - gvalue
|
||||||
if value > gvalue then return lcd.RGB(0,0xdf,0) end
|
if value > gvalue then return lcd.RGB(0, 0xdf, 0) end
|
||||||
if value < rvalue then return lcd.RGB(0xdf,0,0) end
|
if value < rvalue then return lcd.RGB(0xdf, 0, 0) end
|
||||||
r = math.floor(0xdf * (value-gvalue) / range)
|
r = math.floor(0xdf * (value-gvalue) / range)
|
||||||
g = 0xdf - r
|
g = 0xdf - r
|
||||||
return lcd.RGB(r,g,0)
|
return lcd.RGB(r, g, 0)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Size is 160x30
|
--- Size is 160x30
|
||||||
local function zoneSmall(zone)
|
local function zoneSmall(zone)
|
||||||
|
local myBatt = {["x"]=0, ["y"]=0, ["w"]=75, ["h"]=28, ["segments_w"]=15, ["color"]=WHITE, ["cath_w"]=6, ["cath_h"]=20}
|
||||||
local mySensor = getCels(zone.options.Sensor)
|
local mySensor = getCels(zone.options.Sensor)
|
||||||
|
|
||||||
lcd.setColor(TEXT_COLOR, zone.options.Color)
|
lcd.setColor(TEXT_COLOR, zone.options.Color)
|
||||||
if type(mySensor) == "table" then
|
if type(mySensor) == "table" then
|
||||||
local myString = tostring(getCellSum(mySensor)).."V ("..getCellCount(mySensor).."S)"
|
local myString = tostring(getCellSum(mySensor)).."V ("..getCellCount(mySensor).."S)"
|
||||||
local percent = getCellPercent(getCellAvg(mySensor))
|
local percent = getCellPercent(getCellAvg(mySensor))
|
||||||
lcd.drawText(zone.zone.x+90, zone.zone.y+22, myString, LEFT + SMLSIZE + TEXT_COLOR)
|
lcd.drawText(zone.zone.x + zone.zone.w, zone.zone.y + 22, myString, RIGHT + SMLSIZE + TEXT_COLOR)
|
||||||
lcd.drawText(zone.zone.x+95, zone.zone.y,percent.."%", LEFT + MIDSIZE + TEXT_COLOR)
|
lcd.drawText(zone.zone.x + zone.zone.w, zone.zone.y, percent.."%", RIGHT + MIDSIZE + TEXT_COLOR)
|
||||||
|
-- fils batt
|
||||||
lcd.setColor(CUSTOM_COLOR, getPercentColor(percent))
|
lcd.setColor(CUSTOM_COLOR, getPercentColor(percent))
|
||||||
lcd.drawGauge(zone.zone.x+2, zone.zone.y+2, 75, zone.zone.h - 4,percent,100, CUSTOM_COLOR)
|
lcd.drawGauge(zone.zone.x+2, zone.zone.y+2, 75, zone.zone.h - 4, percent, 100, CUSTOM_COLOR)
|
||||||
|
-- draws bat
|
||||||
lcd.setColor(CUSTOM_COLOR, WHITE)
|
lcd.setColor(CUSTOM_COLOR, WHITE)
|
||||||
for i=2,75,15 do
|
lcd.drawRectangle(zone.zone.x + myBatt.x, zone.zone.y + myBatt.y, myBatt.w, myBatt.h, CUSTOM_COLOR, 2)
|
||||||
lcd.drawRectangle(zone.zone.x+i, zone.zone.y+2, 15, zone.zone.h - 4, SOLID + CUSTOM_COLOR,1)
|
lcd.drawFilledRectangle(zone.zone.x + myBatt.x + myBatt.w, zone.zone.y + myBatt.h/2 - myBatt.cath_h/2, myBatt.cath_w, myBatt.cath_h, CUSTOM_COLOR)
|
||||||
|
for i=1, myBatt.w - myBatt.segments_w, myBatt.segments_w do
|
||||||
|
lcd.drawRectangle(zone.zone.x + myBatt.x + i, zone.zone.y + myBatt.y, myBatt.segments_w, myBatt.h, CUSTOM_COLOR, 1)
|
||||||
end
|
end
|
||||||
lcd.drawRectangle(zone.zone.x+2, zone.zone.y+2, 75, zone.zone.h - 4, SOLID + CUSTOM_COLOR,2)
|
|
||||||
lcd.drawFilledRectangle(zone.zone.x+77, zone.zone.y+8, 6, zone.zone.h - 16, SOLID + CUSTOM_COLOR)
|
|
||||||
else
|
else
|
||||||
lcd.drawText(zone.zone.x, zone.zone.y+10, "No Cels sensor data", LEFT + SMLSIZE + INVERS + TEXT_COLOR)
|
lcd.drawText(zone.zone.x, zone.zone.y+10, "No Cels sensor data", LEFT + SMLSIZE + INVERS + TEXT_COLOR)
|
||||||
end
|
end
|
||||||
lcd.setColor(CUSTOM_COLOR, BLACK)
|
|
||||||
lcd.setColor(TEXT_COLOR, BLACK)
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Size is 180x70
|
--- Size is 180x70
|
||||||
local function zoneMedium(zone)
|
local function zoneMedium(zone)
|
||||||
|
local myBatt = {["x"]=0, ["y"]=0, ["w"]=75, ["h"]=32, ["segments_w"]=15, ["color"]=WHITE, ["cath_w"]=6, ["cath_h"]=20}
|
||||||
local mySensor = getCels(zone.options.Sensor)
|
local mySensor = getCels(zone.options.Sensor)
|
||||||
|
|
||||||
lcd.setColor(TEXT_COLOR, zone.options.Color)
|
lcd.setColor(TEXT_COLOR, zone.options.Color)
|
||||||
if type(mySensor) == "table" then
|
if type(mySensor) == "table" then
|
||||||
local percent = getCellPercent(getCellAvg(mySensor))
|
local percent = getCellPercent(getCellAvg(mySensor))
|
||||||
lcd.drawText(zone.zone.x+102, zone.zone.y, percent.."%", LEFT + DBLSIZE + TEXT_COLOR)
|
lcd.drawText(zone.zone.x+102, zone.zone.y, percent.."%", LEFT + DBLSIZE + TEXT_COLOR)
|
||||||
|
-- fils batt
|
||||||
lcd.setColor(CUSTOM_COLOR, getPercentColor(percent))
|
lcd.setColor(CUSTOM_COLOR, getPercentColor(percent))
|
||||||
lcd.drawGauge(zone.zone.x+2, zone.zone.y+2, 75, 36 - 4,percent,100, CUSTOM_COLOR)
|
lcd.drawGauge(zone.zone.x + myBatt.x +myBatt.cath_w, zone.zone.y + myBatt.y, myBatt.w, myBatt.h, percent, 100, CUSTOM_COLOR)
|
||||||
mystring = ""
|
-- draw cells
|
||||||
pos = {{x=2,y=38}, {x=60,y=38}, {x=118,y=38}, {x=2,y=57}, {x=60,y=57}, {x=118,y=57}}
|
local pos = {{x=2, y=38}, {x=60, y=38}, {x=118, y=38}, {x=2, y=57}, {x=60, y=57}, {x=118, y=57}}
|
||||||
for i=1,getCellCount(mySensor),1 do
|
for i=1, getCellCount(mySensor), 1 do
|
||||||
lcd.setColor(CUSTOM_COLOR, getRangeColor(mySensor[i], getCellMax(mySensor), getCellMax(mySensor) - 0.2))
|
lcd.setColor(CUSTOM_COLOR, getRangeColor(mySensor[i], getCellMax(mySensor), getCellMax(mySensor) - 0.2))
|
||||||
lcd.drawFilledRectangle(zone.zone.x + pos[i].x,zone.zone.y + pos[i].y,58,20, CUSTOM_COLOR)
|
lcd.drawFilledRectangle(zone.zone.x + pos[i].x, zone.zone.y + pos[i].y, 58, 20, CUSTOM_COLOR)
|
||||||
lcd.drawText(zone.zone.x + pos[i].x+10,zone.zone.y + pos[i].y,string.format("%.2f",mySensor[i]))
|
lcd.drawText(zone.zone.x + pos[i].x+10, zone.zone.y + pos[i].y, string.format("%.2f", mySensor[i]))
|
||||||
lcd.drawRectangle(zone.zone.x + pos[i].x,zone.zone.y + pos[i].y,59,20)
|
lcd.drawRectangle(zone.zone.x + pos[i].x, zone.zone.y + pos[i].y, 59, 20)
|
||||||
end
|
end
|
||||||
lcd.drawText(zone.zone.x + 2, zone.zone.y + 40, mystring)
|
|
||||||
else
|
else
|
||||||
lcd.drawText(zone.zone.x, zone.zone.y+35, "No Cels sensor data", LEFT + SMLSIZE + INVERS + TEXT_COLOR)
|
lcd.drawText(zone.zone.x, zone.zone.y+35, "No Cels sensor data", LEFT + SMLSIZE + INVERS + TEXT_COLOR)
|
||||||
end
|
end
|
||||||
|
-- draws bat
|
||||||
lcd.setColor(CUSTOM_COLOR, WHITE)
|
lcd.setColor(CUSTOM_COLOR, WHITE)
|
||||||
for i=2,75,15 do
|
lcd.drawRectangle(zone.zone.x + myBatt.x , zone.zone.y + myBatt.y, myBatt.w, myBatt.h, CUSTOM_COLOR, 2)
|
||||||
lcd.drawRectangle(zone.zone.x+i, zone.zone.y+2, 15, 32, SOLID + CUSTOM_COLOR,1)
|
lcd.drawFilledRectangle(zone.zone.x + myBatt.x + myBatt.w, zone.zone.y + myBatt.h/2 - myBatt.cath_h/2, myBatt.cath_w, myBatt.cath_h, CUSTOM_COLOR)
|
||||||
|
for i=1, myBatt.w - myBatt.segments_w, myBatt.segments_w do
|
||||||
|
lcd.drawRectangle(zone.zone.x + myBatt.x + i, zone.zone.y + myBatt.y, myBatt.segments_w, myBatt.h, CUSTOM_COLOR, 1)
|
||||||
end
|
end
|
||||||
lcd.drawRectangle(zone.zone.x+2, zone.zone.y+2, 75, 32, SOLID + CUSTOM_COLOR,2)
|
|
||||||
lcd.drawFilledRectangle(zone.zone.x+77, zone.zone.y+8, 6, 20, SOLID + CUSTOM_COLOR)
|
|
||||||
lcd.setColor(CUSTOM_COLOR, BLACK)
|
|
||||||
lcd.setColor(TEXT_COLOR, BLACK)
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Size is 190x150
|
--- Size is 190x150
|
||||||
local function zoneLarge(zone)
|
local function zoneLarge(zone)
|
||||||
|
local myBatt = {["x"]=0, ["y"]=18, ["w"]=76, ["h"]=121, ["segments_h"]=30, ["color"]=WHITE, ["cath_w"]=30, ["cath_h"]=10}
|
||||||
local mySensor = getCels(zone.options.Sensor)
|
local mySensor = getCels(zone.options.Sensor)
|
||||||
|
|
||||||
lcd.setColor(TEXT_COLOR, zone.options.Color)
|
lcd.setColor(TEXT_COLOR, zone.options.Color)
|
||||||
|
@ -190,34 +226,84 @@ local function zoneLarge(zone)
|
||||||
lcd.drawText(zone.zone.x+zone.zone.w, zone.zone.y+44, tostring(getCellSum(mySensor)).."V", RIGHT + MIDSIZE + TEXT_COLOR)
|
lcd.drawText(zone.zone.x+zone.zone.w, zone.zone.y+44, tostring(getCellSum(mySensor)).."V", RIGHT + MIDSIZE + TEXT_COLOR)
|
||||||
lcd.drawText(zone.zone.x+zone.zone.w, zone.zone.y+65, getCellCount(mySensor).."S", RIGHT + MIDSIZE + TEXT_COLOR)
|
lcd.drawText(zone.zone.x+zone.zone.w, zone.zone.y+65, getCellCount(mySensor).."S", RIGHT + MIDSIZE + TEXT_COLOR)
|
||||||
lcd.setColor(CUSTOM_COLOR, getPercentColor(percent))
|
lcd.setColor(CUSTOM_COLOR, getPercentColor(percent))
|
||||||
lcd.drawFilledRectangle(zone.zone.x+2,zone.zone.y+(147-math.floor(percent*1.2)),74,math.floor(percent*1.2), CUSTOM_COLOR)
|
-- fils batt
|
||||||
pos = {{x=80,y=90}, {x=138,y=90}, {x=80,y=109}, {x=138,y=109}, {x=80,y=128}, {x=138,y=128}}
|
lcd.setColor(CUSTOM_COLOR, getPercentColor(percent))
|
||||||
for i=1,getCellCount(mySensor),1 do
|
lcd.drawFilledRectangle(zone.zone.x + myBatt.x, zone.zone.y + myBatt.y + myBatt.h + myBatt.cath_h - math.floor(percent/100 * myBatt.h), myBatt.w, math.floor(percent/100 * myBatt.h), CUSTOM_COLOR)
|
||||||
|
-- draw cells
|
||||||
|
local pos = {{x=80, y=90}, {x=138, y=90}, {x=80, y=109}, {x=138, y=109}, {x=80, y=128}, {x=138, y=128}}
|
||||||
|
for i=1, getCellCount(mySensor), 1 do
|
||||||
lcd.setColor(CUSTOM_COLOR, getRangeColor(mySensor[i], getCellMax(mySensor), getCellMax(mySensor) - 0.2))
|
lcd.setColor(CUSTOM_COLOR, getRangeColor(mySensor[i], getCellMax(mySensor), getCellMax(mySensor) - 0.2))
|
||||||
lcd.drawFilledRectangle(zone.zone.x + pos[i].x,zone.zone.y + pos[i].y,58,20, CUSTOM_COLOR)
|
lcd.drawFilledRectangle(zone.zone.x + pos[i].x, zone.zone.y + pos[i].y, 58, 20, CUSTOM_COLOR)
|
||||||
lcd.drawText(zone.zone.x + pos[i].x+10,zone.zone.y + pos[i].y,string.format("%.2f",mySensor[i]))
|
lcd.drawText(zone.zone.x + pos[i].x+10, zone.zone.y + pos[i].y, string.format("%.2f", mySensor[i]))
|
||||||
lcd.drawRectangle(zone.zone.x + pos[i].x,zone.zone.y + pos[i].y,59,20)
|
lcd.drawRectangle(zone.zone.x + pos[i].x, zone.zone.y + pos[i].y, 59, 20)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
lcd.drawText(zone.zone.x+5, zone.zone.y, "No Cels sensor data", LEFT + SMLSIZE + INVERS + TEXT_COLOR)
|
lcd.drawText(zone.zone.x+5, zone.zone.y, "No Cels sensor data", LEFT + SMLSIZE + INVERS + TEXT_COLOR)
|
||||||
end
|
end
|
||||||
|
-- draws bat
|
||||||
lcd.setColor(CUSTOM_COLOR, WHITE)
|
lcd.setColor(CUSTOM_COLOR, WHITE)
|
||||||
lcd.drawRectangle(zone.zone.x, zone.zone.y+28, 76, 121, SOLID + CUSTOM_COLOR,2)
|
lcd.drawRectangle(zone.zone.x + myBatt.x, zone.zone.y + myBatt.y + myBatt.cath_h , myBatt.w, myBatt.h, CUSTOM_COLOR, 2)
|
||||||
lcd.drawFilledRectangle(zone.zone.x+22, zone.zone.y+20, 30, 10, SOLID + CUSTOM_COLOR,2)
|
lcd.drawFilledRectangle(zone.zone.x + myBatt.x + myBatt.w/2 - myBatt.cath_w/2, zone.zone.y + myBatt.y, myBatt.cath_w, myBatt.cath_h, CUSTOM_COLOR)
|
||||||
for i=1,120,30 do
|
for i=1, myBatt.h - myBatt.segments_h, myBatt.segments_h do
|
||||||
lcd.drawRectangle(zone.zone.x, zone.zone.y+28+i, 76, 30, SOLID + CUSTOM_COLOR,1)
|
lcd.drawRectangle(zone.zone.x + myBatt.x, zone.zone.y + myBatt.y + myBatt.cath_h + i, myBatt.w, myBatt.segments_h, CUSTOM_COLOR, 1)
|
||||||
end
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Size is 390x170
|
--- Size is 390x170
|
||||||
local function zoneXLarge(zone)
|
local function zoneXLarge(zone)
|
||||||
|
local myBatt = {["x"]=10, ["y"]=20, ["w"]=80, ["h"]=121, ["segments_h"]=30, ["color"]=WHITE, ["cath_w"]=30, ["cath_h"]=10}
|
||||||
|
local mySensor = getCels(zone.options.Sensor)
|
||||||
|
|
||||||
|
lcd.setColor(TEXT_COLOR, zone.options.Color)
|
||||||
|
if type(mySensor) == "table" then
|
||||||
|
local percent = getCellPercent(getCellAvg(mySensor))
|
||||||
|
-- fils batt
|
||||||
|
lcd.setColor(CUSTOM_COLOR, getPercentColor(percent))
|
||||||
|
lcd.drawFilledRectangle(zone.zone.x + myBatt.x, zone.zone.y + myBatt.y + myBatt.h + myBatt.cath_h - math.floor(percent/100 * myBatt.h), myBatt.w, math.floor(percent/100 * myBatt.h), CUSTOM_COLOR)
|
||||||
|
local percent = getCellPercent(getCellAvg(mySensor))
|
||||||
|
-- draw right text section
|
||||||
|
lcd.drawText(zone.zone.x+zone.zone.w, zone.zone.y + myBatt.y, percent.."%", RIGHT + XXLSIZE + TEXT_COLOR)
|
||||||
|
lcd.drawText(zone.zone.x+zone.zone.w, zone.zone.y + myBatt.y + 67, tostring(getCellSum(mySensor)).."V", RIGHT + MIDSIZE + TEXT_COLOR)
|
||||||
|
lcd.drawText(zone.zone.x+zone.zone.w, zone.zone.y + myBatt.y + 110, getCellCount(mySensor).."S", RIGHT + MIDSIZE + TEXT_COLOR)
|
||||||
|
-- draw cells
|
||||||
|
local pos = {{x=110, y=38}, {x=160, y=38}, {x=210, y=38}, {x=110, y=57}, {x=160, y=57}, {x=210, y=57}}
|
||||||
|
for i=1, getCellCount(mySensor), 1 do
|
||||||
|
lcd.setColor(CUSTOM_COLOR, getRangeColor(mySensor[i], getCellMax(mySensor), getCellMax(mySensor) - 0.2))
|
||||||
|
lcd.drawFilledRectangle(zone.zone.x + pos[i].x, zone.zone.y + pos[i].y, 58, 20, CUSTOM_COLOR)
|
||||||
|
lcd.drawText(zone.zone.x + pos[i].x+10, zone.zone.y + pos[i].y, string.format("%.2f", mySensor[i]))
|
||||||
|
lcd.drawRectangle(zone.zone.x + pos[i].x, zone.zone.y + pos[i].y, 59, 20)
|
||||||
|
end
|
||||||
|
-- draw cells for lowest cells
|
||||||
|
local pos = {{x=110, y=110}, {x=160, y=110}, {x=210, y=110}, {x=110, y=129}, {x=160, y=129}, {x=210, y=129}}
|
||||||
|
for i=1, getCellCount(mySensor), 1 do
|
||||||
|
lcd.setColor(CUSTOM_COLOR, getRangeColor(histCellData[i], mySensor[i], mySensor[i] - 0.3))
|
||||||
|
lcd.drawFilledRectangle(zone.zone.x + pos[i].x, zone.zone.y + pos[i].y, 58, 20, CUSTOM_COLOR)
|
||||||
|
lcd.drawText(zone.zone.x + pos[i].x+10, zone.zone.y + pos[i].y, string.format("%.2f", histCellData[i]))
|
||||||
|
lcd.drawRectangle(zone.zone.x + pos[i].x, zone.zone.y + pos[i].y, 59, 20)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
lcd.drawText(zone.zone.x+5, zone.zone.y, "No Cels sensor data", LEFT + SMLSIZE + INVERS + TEXT_COLOR)
|
||||||
|
end
|
||||||
|
-- draws bat
|
||||||
|
lcd.setColor(CUSTOM_COLOR, WHITE)
|
||||||
|
lcd.drawRectangle(zone.zone.x + myBatt.x, zone.zone.y + myBatt.y + myBatt.cath_h , myBatt.w, myBatt.h, CUSTOM_COLOR, 2)
|
||||||
|
lcd.drawFilledRectangle(zone.zone.x + myBatt.x + myBatt.w/2 - myBatt.cath_w/2, zone.zone.y + myBatt.y, myBatt.cath_w, myBatt.cath_h, CUSTOM_COLOR)
|
||||||
|
for i=1, myBatt.h - myBatt.segments_h, myBatt.segments_h do
|
||||||
|
lcd.drawRectangle(zone.zone.x + myBatt.x, zone.zone.y + myBatt.y + myBatt.cath_h + i, myBatt.w, myBatt.segments_h, CUSTOM_COLOR, 1)
|
||||||
|
end
|
||||||
|
-- draw middle rectangles
|
||||||
|
lcd.drawRectangle(zone.zone.x + 110, zone.zone.y + 38, 160, 40, CUSTOM_COLOR, 1)
|
||||||
|
lcd.drawText(zone.zone.x + 270, zone.zone.y + 21, "Live data", RIGHT + SMLSIZE + INVERS + TEXT_COLOR)
|
||||||
|
lcd.drawRectangle(zone.zone.x + 110, zone.zone.y + 110, 160, 40, CUSTOM_COLOR, 1)
|
||||||
|
lcd.drawText(zone.zone.x + 270, zone.zone.y + 93, "Lowest data", RIGHT + SMLSIZE + INVERS + TEXT_COLOR)
|
||||||
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
function refresh(myZone)
|
function refresh(myZone)
|
||||||
if myZone.options.Sensor == 1 then
|
if myZone.options.Sensor == 1 then
|
||||||
lcd.drawText(myZone.zone.x+2, myZone.zone.y+2, "Widget not configured", LEFT + SMLSIZE + INVERS + TEXT_COLOR)
|
lcd.drawText(myZone.zone.x+2, myZone.zone.y+2, "BattCheck not configured", LEFT + SMLSIZE + INVERS + TEXT_COLOR)
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if myZone.zone.w > 380 and myZone.zone.h > 165 then zoneXLarge(myZone)
|
if myZone.zone.w > 380 and myZone.zone.h > 165 then zoneXLarge(myZone)
|
||||||
|
@ -227,4 +313,4 @@ function refresh(myZone)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return { name="BattCheck", options=options, create=create, refresh=refresh }
|
return { name="BattCheck", options=options, create=create, update=update, refresh=refresh }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue