From: Roman Bazalevsky Date: Wed, 22 Jan 2020 03:51:26 +0000 (+0300) Subject: На узких дисплеях не отображать максимальное-минимальное значение на графиках, втиски... X-Git-Url: https://git.rvb.name/weathermon.git/commitdiff_plain/24b943a6e7b7490d7cb5b9fb02b5561a8b74c697?ds=sidebyside На узких дисплеях не отображать максимальное-минимальное значение на графиках, втискивать все в одну строку. --- diff --git a/bin/weather-lcd b/bin/weather-lcd index 17436ef..9ecadfa 100755 --- a/bin/weather-lcd +++ b/bin/weather-lcd @@ -155,11 +155,13 @@ function setup_pages(conn) write_command(conn,"screen_add "..pageid) write_command(conn,"screen_set "..pageid.." -cursor off -name "..pagetitle.." -duration "..graph_duration) write_command(conn,"widget_add "..pageid.." "..pageid..".title title") - write_command(conn,"widget_add "..pageid.." "..pageid..".max string") - write_command(conn,"widget_add "..pageid.." "..pageid..".min string") - for k = 3,height-1 do - write_command(conn,"widget_add "..pageid.." "..pageid..".place"..trim(tostring(k)).." string") - end + if height>2 then + write_command(conn,"widget_add "..pageid.." "..pageid..".max string") + write_command(conn,"widget_add "..pageid.." "..pageid..".min string") + for k = 3,height-1 do + write_command(conn,"widget_add "..pageid.." "..pageid..".place"..trim(tostring(k)).." string") + end + end write_command(conn,"widget_set "..pageid.." "..pageid..".title \"".. pagetitle.."\"") end end @@ -196,6 +198,7 @@ function process_graphs() local vals = {} local maxval = -99999999 local minval = 99999999 + local len for k=width,1,-1 do if row then val = row["val"] * def["scale"] @@ -208,15 +211,19 @@ function process_graphs() if val and (val < minval) then minval = val; end end minval = math.floor(minval) - local minvalstr = trim(tostring(minval)) maxval = math.ceil(maxval) - local maxvalstr = trim(tostring(maxval)) - local len = math.max(string.len(minvalstr),string.len(maxvalstr)) - write_command(conn,"widget_set "..pageid.." "..pageid..".max "..trim(tostring(width-string.len(maxvalstr)+1)).." 2 "..maxvalstr) - for k = 3,height-1 do - write_command(conn,"widget_set "..pageid.." "..pageid..".place"..trim(tostring(k)).." "..trim(tostring(width-len+1)).." "..k.." \" "..string.rep("-",len-1).."\"") - end - write_command(conn,"widget_set "..pageid.." "..pageid..".min "..trim(tostring(width-string.len(minvalstr)+1)).." "..height.." "..minvalstr) + if height>2 then + local minvalstr = trim(tostring(minval)) + local maxvalstr = trim(tostring(maxval)) + len = math.max(string.len(minvalstr),string.len(maxvalstr)) + write_command(conn,"widget_set "..pageid.." "..pageid..".max "..trim(tostring(width-string.len(maxvalstr)+1)).." 2 "..maxvalstr) + write_command(conn,"widget_set "..pageid.." "..pageid..".min "..trim(tostring(width-string.len(minvalstr)+1)).." "..height.." "..minvalstr) + for k = 3,height-1 do + write_command(conn,"widget_set "..pageid.." "..pageid..".place"..trim(tostring(k)).." "..trim(tostring(width-len+1)).." "..k.." \" "..string.rep("-",len-1).."\"") + end + else + len = 0 + end local m = width for k=1,width do write_command(conn,"widget_del "..pageid.." "..pageid..".bar"..trim(tostring(k)))