more clean up for Weather.lua

This commit is contained in:
petrucci4prez 2017-07-17 22:44:25 -04:00
parent 29cd5c43a4
commit 4602b4150d
1 changed files with 53 additions and 53 deletions

View File

@ -8,22 +8,22 @@ local util = require 'util'
local json = require 'json' local json = require 'json'
local schema = require 'default_patterns' local schema = require 'default_patterns'
local __string_match = string.match local __string_match = string.match
local __string_sub = string.sub local __string_sub = string.sub
local __string_upper = string.upper local __string_upper = string.upper
local __os_execute = os.execute local __os_execute = os.execute
local TIME_FORMAT = '%-I:%M %p' local TIME_FORMAT = '%-I:%M %p'
local DATE_FORMAT = '%A' local DATE_FORMAT = '%A'
local NUM_SECTIONS = 8 local NUM_ROWS = 8
local WEATHER_UPDATE_INTERVAL = 900 local WEATHER_UPDATE_INTERVAL = 900
local WEATHER_PATH = '/tmp/weather.json' local WEATHER_JSON_PATH = '/tmp/weather.json'
local ICON_PATH = _G_INIT_DATA_.ABS_PATH .. '/images/weather/' local ICON_DIR_PATH = _G_INIT_DATA_.ABS_PATH .. '/images/weather/'
local RECENTLY_UPDATED_PATH = '/tmp/weather_recently_updated' local RECENTLY_UPDATED_PATH = '/tmp/weather_recently_updated'
local NA = 'N/A' local NA = 'N/A'
local NA_IMAGE_PATH = ICON_PATH .. 'na.png' local NA_IMAGE_PATH = ICON_DIR_PATH .. 'na.png'
local _SPACING_ = 20 local _SPACING_ = 20
local _HEADER_PAD_ = 20 local _HEADER_PAD_ = 20
@ -31,74 +31,74 @@ local _ICON_SIDE_LENGTH_ = 75
local _TEMP_SECTION_WIDTH_ = 220 local _TEMP_SECTION_WIDTH_ = 220
local _SECTION_HEIGHT_ = _HEADER_PAD_ + _ICON_SIDE_LENGTH_ + 30 local _SECTION_HEIGHT_ = _HEADER_PAD_ + _ICON_SIDE_LENGTH_ + 30
local create_side_section = function(x_offset, y_offset, section_table) local create_side_rows = function(side_rows_x, side_rows_y, side_rows_tbl)
for i = 1, NUM_SECTIONS do for i = 1, NUM_ROWS do
section_table[i] = {} side_rows_tbl[i] = {}
local current_widget = section_table[i] local current_row = side_rows_tbl[i]
local current_y = y_offset + (i - 1) * _SECTION_HEIGHT_ local current_row_y = side_rows_y + (i - 1) * _SECTION_HEIGHT_
current_widget.desc = Widget.Text{ current_row.desc = Widget.Text{
x = x_offset, x = side_rows_x,
y = current_y, y = current_row_y,
text_color = schema.blue, text_color = schema.blue,
} }
current_widget.period = Widget.Text{ current_row.period = Widget.Text{
x = x_offset + _G_INIT_DATA_.SECTION_WIDTH, x = side_rows_x + _G_INIT_DATA_.SECTION_WIDTH,
y = current_y, y = current_row_y,
x_align = 'right', x_align = 'right',
text_color = schema.blue text_color = schema.blue
} }
current_widget.icon = Widget.ScaledImage{ current_row.icon = Widget.ScaledImage{
x = x_offset, x = side_rows_x,
y = current_y + _HEADER_PAD_, y = current_row_y + _HEADER_PAD_,
width = _ICON_SIDE_LENGTH_, width = _ICON_SIDE_LENGTH_,
height = _ICON_SIDE_LENGTH_ height = _ICON_SIDE_LENGTH_
} }
current_widget.temp1 = Widget.Text{ current_row.temp1 = Widget.Text{
x = x_offset + _ICON_SIDE_LENGTH_ + _TEMP_SECTION_WIDTH_ / 2, x = side_rows_x + _ICON_SIDE_LENGTH_ + _TEMP_SECTION_WIDTH_ / 2,
y = current_y + _HEADER_PAD_ + 25, y = current_row_y + _HEADER_PAD_ + 25,
x_align = 'center', x_align = 'center',
font_size = 28, font_size = 28,
text_color = schema.blue text_color = schema.blue
} }
current_widget.temp2 = Widget.Text{ current_row.temp2 = Widget.Text{
x = x_offset + _ICON_SIDE_LENGTH_ + 0.5 * _TEMP_SECTION_WIDTH_, x = side_rows_x + _ICON_SIDE_LENGTH_ + _TEMP_SECTION_WIDTH_ / 2,
y = current_y + _HEADER_PAD_ + 55, y = current_row_y + _HEADER_PAD_ + 55,
x_align = 'center', x_align = 'center',
font_size = 11 font_size = 11
} }
current_widget.label_column = Widget.TextColumn{ current_row.label_column = Widget.TextColumn{
x = x_offset + _ICON_SIDE_LENGTH_ + _TEMP_SECTION_WIDTH_, x = side_rows_x + _ICON_SIDE_LENGTH_ + _TEMP_SECTION_WIDTH_,
y = current_y + _HEADER_PAD_ + 15, y = current_row_y + _HEADER_PAD_ + 15,
spacing = _SPACING_, spacing = _SPACING_,
'H', 'H',
'P', 'P',
'W' 'W'
} }
current_widget.info_column = Widget.TextColumn{ current_row.info_column = Widget.TextColumn{
x = x_offset + _G_INIT_DATA_.SECTION_WIDTH, x = side_rows_x + _G_INIT_DATA_.SECTION_WIDTH,
y = current_y + _HEADER_PAD_ + 15, y = current_row_y + _HEADER_PAD_ + 15,
spacing = _SPACING_, spacing = _SPACING_,
x_align = 'right', x_align = 'right',
text_color = schema.blue, text_color = schema.blue,
num_rows = 3 num_rows = 3
} }
if i < NUM_SECTIONS then if i < NUM_ROWS then
current_widget.divider = Widget.Line{ current_row.separator = Widget.Line{
p1 = { p1 = {
x = x_offset, x = side_rows_x,
y = current_y + _SECTION_HEIGHT_ - 18 y = current_row_y + _SECTION_HEIGHT_ - 18
}, },
p2 = { p2 = {
x = x_offset + _G_INIT_DATA_.SECTION_WIDTH, x = side_rows_x + _G_INIT_DATA_.SECTION_WIDTH,
y = current_y + _SECTION_HEIGHT_ - 18 y = current_row_y + _SECTION_HEIGHT_ - 18
}, },
line_pattern = schema.mid_grey line_pattern = schema.mid_grey
} }
@ -117,7 +117,7 @@ local left = {
hours = {} hours = {}
} }
create_side_section(_G_INIT_DATA_.LEFT_X, left.header.bottom_y, left.hours) create_side_rows(_G_INIT_DATA_.LEFT_X, left.header.bottom_y, left.hours)
--CENTER --CENTER
local center = {} local center = {}
@ -234,7 +234,7 @@ local right = {
days = {} days = {}
} }
create_side_section(_G_INIT_DATA_.RIGHT_X, right.header.bottom_y, right.days) create_side_rows(_G_INIT_DATA_.RIGHT_X, right.header.bottom_y, right.days)
Widget = nil Widget = nil
schema = nil schema = nil
@ -308,23 +308,23 @@ local populate_center = function(center_section, cr, desc, icon_path, temp,
end end
local update_interface = function(cr) local update_interface = function(cr)
local file = util.read_file(WEATHER_PATH) local file = util.read_file(WEATHER_JSON_PATH)
local data = (file ~= '') and json.decode(file) local data = (file ~= '') and json.decode(file)
if data then if data then
data = data.response.responses data = data.response.responses
if data[1].success == false then if data[1].success == false then
for i = 1, NUM_SECTIONS do populate_section(left.hours[i], cr) end for i = 1, NUM_ROWS do populate_section(left.hours[i], cr) end
populate_center(center, cr, nil, nil, nil, nil, 'Invalid Location') populate_center(center, cr, nil, nil, nil, nil, 'Invalid Location')
for i = 1, NUM_SECTIONS do populate_section(right.days[i], cr) end for i = 1, NUM_ROWS do populate_section(right.days[i], cr) end
else else
--LEFT --LEFT
local hourly = data[2].response[1].periods local hourly = data[2].response[1].periods
for i = 1, NUM_SECTIONS do for i = 1, NUM_ROWS do
local hour_data = hourly[i] local hour_data = hourly[i]
populate_section( populate_section(
@ -332,7 +332,7 @@ local update_interface = function(cr)
cr, cr,
hour_data.weatherPrimary, hour_data.weatherPrimary,
hour_data.timestamp and util.convert_unix_time(hour_data.timestamp, TIME_FORMAT), hour_data.timestamp and util.convert_unix_time(hour_data.timestamp, TIME_FORMAT),
hour_data.icon and ICON_PATH..hour_data.icon, hour_data.icon and ICON_DIR_PATH..hour_data.icon,
hour_data.avgTempF and hour_data.avgTempF..'°F', hour_data.avgTempF and hour_data.avgTempF..'°F',
hour_data.feelslikeF and 'Feels like '..hour_data.feelslikeF..'°F', hour_data.feelslikeF and 'Feels like '..hour_data.feelslikeF..'°F',
hour_data.humidity and hour_data.humidity..' %', hour_data.humidity and hour_data.humidity..' %',
@ -365,7 +365,7 @@ local update_interface = function(cr)
center, center,
cr, cr,
ob.weather, ob.weather,
ob.icon and ICON_PATH..ob.icon, ob.icon and ICON_DIR_PATH..ob.icon,
ob.tempF and ob.tempF..'°F', ob.tempF and ob.tempF..'°F',
ob.timestamp and util.convert_unix_time(ob.timestamp, TIME_FORMAT), ob.timestamp and util.convert_unix_time(ob.timestamp, TIME_FORMAT),
place, place,
@ -388,7 +388,7 @@ local update_interface = function(cr)
--RIGHT --RIGHT
local daily = data[3].response[1].periods local daily = data[3].response[1].periods
for i = 1, NUM_SECTIONS do for i = 1, NUM_ROWS do
local day_data = daily[i] local day_data = daily[i]
populate_section( populate_section(
@ -397,7 +397,7 @@ local update_interface = function(cr)
day_data.weatherPrimary, day_data.weatherPrimary,
day_data.timestamp and __string_sub(util.convert_unix_time( day_data.timestamp and __string_sub(util.convert_unix_time(
day_data.timestamp, DATE_FORMAT), 1, 3), day_data.timestamp, DATE_FORMAT), 1, 3),
day_data.icon and ICON_PATH..day_data.icon, day_data.icon and ICON_DIR_PATH..day_data.icon,
day_data.maxTempF and day_data.maxTempF..'°F', day_data.maxTempF and day_data.maxTempF..'°F',
day_data.minTempF and 'Low of '..day_data.minTempF..'°F', day_data.minTempF and 'Low of '..day_data.minTempF..'°F',
day_data.humidity and day_data.humidity..' %', day_data.humidity and day_data.humidity..' %',
@ -407,19 +407,19 @@ local update_interface = function(cr)
end end
end end
else else
for i = 1, NUM_SECTIONS do populate_section(left.hours[i], cr) end for i = 1, NUM_ROWS do populate_section(left.hours[i], cr) end
populate_center(center, cr) populate_center(center, cr)
for i = 1, NUM_SECTIONS do populate_section(right.days[i], cr) end for i = 1, NUM_ROWS do populate_section(right.days[i], cr) end
end end
end end
local draw_sections = function(section_group, cr) local draw_sections = function(section_group, cr)
for i = 1, NUM_SECTIONS do for i = 1, NUM_ROWS do
local section = section_group[i] local section = section_group[i]
if i < NUM_SECTIONS then Line.draw(section.divider, cr) end if i < NUM_ROWS then Line.draw(section.separator, cr) end
Text.draw(section.desc, cr) Text.draw(section.desc, cr)
Text.draw(section.period, cr) Text.draw(section.period, cr)