changeset 543:a513b98f2a37

weather: Improve alias handling and do some work on stations listing.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 08 Jul 2020 00:42:05 +0300
parents a57822226ba0
children 3b363fd0a60b
files config.weather.example weather.tcl
diffstat 2 files changed, 38 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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 <paikka>\[;<paikka2>\] -- asettaa vakiohavaintoaseman\n@cmd@ vakio -- näyttää nykyisen"
+  "usage_def_set" "@cmd@ vakio <paikka>\[;<paikka2>\] -- 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 <alias> = <nimi> -- lisää alias-nimen, esim. alias perse = turku"
   "usage_unalias" "@cmd@ unalias <alias> -- 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 <patterni> -- listaa mittausasemat joiden nimi matsaa patternin kanssa"
 
   "no_results" "\002@1@\002: Ei mittaustietoja."
--- 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
   }