Mercurial > hg > egg-tcls
changeset 497:c2209251fa33
weather: Make things a bit more generic.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 23 Jan 2020 05:58:24 +0200 |
parents | 0b73fd8ee4cd |
children | 01f226d6a992 |
files | weather.tcl |
diffstat | 1 files changed, 16 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/weather.tcl Thu Jan 23 05:56:20 2020 +0200 +++ b/weather.tcl Thu Jan 23 05:58:24 2020 +0200 @@ -145,21 +145,27 @@ } -# Translate cloudiness status -proc weather_get_cloudiness_status {uvalue} { - global weather_msg_cloudiness_status +proc weather_get_raw_table_value {utable uvalue} { + # If the data was not got, return empty value + if {$uvalue == "" || $uvalue == "NaN"} { + return "" + } + return "[expr int($uvalue) + 1]/[llength $utable]" +} + + +# "Translate" a straight table index (0-N) to table value +proc weather_get_table_value {utable uvalue} { # If the data was not got, return empty value if {$uvalue == "" || $uvalue == "NaN"} { return "" } set uvalue [expr int($uvalue)] - - set ulen [llength $weather_msg_cloudiness_status] + set ulen [llength $utable] if {$uvalue >= 0 && $uvalue < $ulen} { - set umsg [lindex $weather_msg_cloudiness_status $uvalue] - return "$umsg ($uvalue/[expr $ulen - 1])" + return [lindex $utable $uvalue] } else { return "ERROR ($uvalue)" } @@ -169,6 +175,7 @@ #------------------------------------------------------------------------- # Produce one location of weather data as a string proc weather_get_str {udata umsg} { + global weather_msg_cloudiness array unset uvals set uvals(station) [lindex $udata 0] @@ -182,7 +189,8 @@ set uvals(wind_speed) [lindex $udata 8] set uvals(wind_direction) [weather_get_wind_direction [lindex $udata 9]] set uvals(wind_direction_deg) [lindex $udata 9] - set uvals(cloudiness) [weather_get_cloudiness_status [lindex $udata 10]] + set uvals(cloudiness) [weather_get_table_value $weather_msg_cloudiness [lindex $udata 10]] + set uvals(cloudiness_val) [weather_get_raw_table_value $weather_msg_cloudiness [lindex $udata 10]] set uvals(road_surface_temp) [lindex $udata 11] set uvals(precipitation) [lindex $udata 12] set uvals(visibility) [lindex $udata 13]