# HG changeset patch # User Matti Hamalainen # Date 1594158125 -10800 # Node ID a513b98f2a377760bd832b80f480bc5df89c8188 # Parent a57822226ba068bbf8ccb4b88e48c9c38a1145d5 weather: Improve alias handling and do some work on stations listing. diff -r a57822226ba0 -r a513b98f2a37 config.weather.example --- a/config.weather.example Tue Jul 07 23:17:02 2020 +0300 +++ b/config.weather.example Wed Jul 08 00:42:05 2020 +0300 @@ -116,7 +116,7 @@ array set weather_messages { "usage_single" "@cmd@ \[paikka\]" - "usage_full" {"usage_single" "usage_stations" "usage_def_set" "usage_alias" "usage_unalias" "usage_nearest"} + "usage_full" {"usage_single" "usage_stations" "usage_def_set" "usage_nearest" "usage_alias" "usage_unalias" "usage_list" } "list_nearest" $weather_msg_list_station "nearest_stations" "Lähimmät mittausasemat (@1@, @2@): @3@" @@ -130,19 +130,24 @@ "def_set_to" "Vakio-havaintoasemiksi asetettu: \002@1@\002." "def_value" "Käyttäjän \002@1@\002 vakio-havaintoasemat ovat: \002@2@\002." "def_not_set" "Vakio-havaintoasemia ei asetettu käyttäjälle \002@1@\002." - "usage_def_set" "@cmd@ vakio \[;\] -- asettaa vakiohavaintoaseman\n@cmd@ vakio -- näyttää nykyisen" + "usage_def_set" "@cmd@ vakio \[;\] -- asettaa vakiohavaintoaseman\n@cmd@ vakio -- näyttää nykyisen vakiohavaintoaseman jos asetettu" - "alias_set" "Aliasoitiin \002@1@\002 = \002@2@\002." - "alias_unset" "Unaliasoitiin \002@1@\002." + "alias_set" "Luotiin alias \002@1@\002 = \002@2@\002." + "alias_updated" "Päivitettiin alias \002@1@\002 = \002@2@ -> @3@\002." + "alias_unset" "Poistettiin alias \002@1@ = @2@\002." "alias_item" "\002'@1@' = '@2@'\002" "alias_list" "Aliakset: @1@" + "alias_list_sep" ", " + "alias_not_exist" "Aliasta '@1@' ei ole olemassa." "usage_alias" "@cmd@ alias = -- lisää alias-nimen, esim. alias perse = turku" "usage_unalias" "@cmd@ unalias -- poistaa aliaksen" + "usage_list" "@cmd@ list -- listaa määritellyt aliakset" "user_not_known" "Tuntematon käyttäjä." "no_access" "Ei oikeuksia muuttaa asetuksia." "stations_list" "Mittausasemat: @1@" + "stations_no_matches" "Ei osumia." "usage_stations" "@cmd@ asemat -- listaa mittausasemat joiden nimi matsaa patternin kanssa" "no_results" "\002@1@\002: Ei mittaustietoja." diff -r a57822226ba0 -r a513b98f2a37 weather.tcl --- a/weather.tcl Tue Jul 07 23:17:02 2020 +0300 +++ b/weather.tcl Wed Jul 08 00:42:05 2020 +0300 @@ -347,7 +347,15 @@ } } - set res [join $result " ; "] + if {[llength $result] > 0} { + set res "" + if {[llength $result] > 10} { + set res [weather_qm "stations_limit"] + } + append res [join [lrange $result 0 10] " ; "] + } else { + set res [weather_qm "stations_no_matches"] + } weather_msg $upublic $unick $uchan "stations_list" [list $res] return 0 } elseif {$rcmd == "lahin" || $rcmd == "lähin" || $rcmd == "closest" || $rcmd == "nearest"} { @@ -434,8 +442,14 @@ set ualias [lindex $nlist 0] set uname [lindex $nlist 1] + + if {[info exists weather_aliases($ualias)]} { + weather_msg $upublic $unick $uchan "alias_updated" [list $ualias $weather_aliases($ualias) $uname] + } else { + weather_msg $upublic $unick $uchan "alias_set" [list $ualias $uname] + } + set weather_aliases($ualias) $uname - weather_msg $upublic $unick $uchan "alias_set" [list $ualias $uname] weather_save_aliases return 0 @@ -452,18 +466,29 @@ } set ualias [lindex $rarglist 1] + + if {![info exists weather_aliases($ualias)]} { + weather_msg $upublic $unick $uchan "alias_not_exist" [list $ualias] + return 0 + } + weather_msg $upublic $unick $uchan "alias_unset" [list $ualias $weather_aliases($ualias)] unset weather_aliases($ualias) + weather_save_aliases weather_save_aliases return 0 } elseif {$rcmd == "list"} { # List all currently defined aliases set ulist {} + set ulistitem [weather_qm "alias_item"] + set ulistsep [weather_qm "alias_list_sep"] + foreach {ukey uvalue} [array get weather_aliases] { - lappend ulist "\002'$ukey' = '$uvalue'\002" + lappend ulist [utl_str_map_values $ulistitem [list $ukey $uvalue]] } - weather_msg $upublic $unick $uchan "alias_list" [list [join $ulist ", "]] + + weather_msg $upublic $unick $uchan "alias_list" [list [join $ulist $ulistsep]] return 0 }