From aa591d854e5c567d125ec45f137ce3df1179506f Mon Sep 17 00:00:00 2001 From: risiko79 <> Date: Sat, 6 Feb 2016 12:43:22 +0000 Subject: [PATCH] 98_weekprofile: sorted lists git-svn-id: https://svn.fhem.de/fhem/trunk@10738 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/CHANGED | 1 + fhem/FHEM/98_weekprofile.pm | 16 +++++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/fhem/CHANGED b/fhem/CHANGED index 74d9e2b32..53343e253 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,6 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - change: 98_weekprofile: return sorted lists - change: YAMAHA_AVR: reading/event newFirmware will only be triggered for RX-Vx71, RX-Vx73, RX-Ax10 or RX-Ax20 as newer models do not support this information anymore diff --git a/fhem/FHEM/98_weekprofile.pm b/fhem/FHEM/98_weekprofile.pm index c533a4880..131409b34 100644 --- a/fhem/FHEM/98_weekprofile.pm +++ b/fhem/FHEM/98_weekprofile.pm @@ -433,6 +433,11 @@ sub weekprofile_Define($$) return undef; } ############################################## +sub sort_by_name +{ + return lc("$a->{TOPIC}:$a->{NAME}") cmp lc("$b->{TOPIC}:$b->{NAME}"); +} +############################################## sub weekprofile_Get($$@) { my ($hash, $name, $cmd, @params) = @_; @@ -444,7 +449,7 @@ sub weekprofile_Get($$@) my $useTopics = AttrVal($name,"useTopics",0); $list.= 'profile_data:' if ($prfCnt > 0); - foreach my $prf (@{$hash->{PROFILES}}){ + foreach my $prf (sort sort_by_name @{$hash->{PROFILES}}){ $list.= $prf->{TOPIC}.":" if ($useTopics); $list.= $prf->{NAME}."," if ($useTopics || (!$useTopics && ($prf->{TOPIC} eq 'default'))); } @@ -477,7 +482,7 @@ sub weekprofile_Get($$@) my $topic = 'default'; $topic = $params[0] if(@params == 1); - foreach my $prf (@{$hash->{PROFILES}}){ + foreach my $prf (sort sort_by_name @{$hash->{PROFILES}}){ $names .=$prf->{NAME}."," if ($topic eq $prf->{TOPIC}); $names .="$prf->{TOPIC}:$prf->{NAME}," if ($topic eq '*'); } @@ -495,7 +500,7 @@ sub weekprofile_Get($$@) my $topic = 'default'; if ($params[0] eq '*') { - foreach my $prf (@{$hash->{PROFILES}}){ + foreach my $prf (sort sort_by_name @{$hash->{PROFILES}}){ next if (!defined($prf->{REF})); $refs .= "$prf->{TOPIC}:$prf->{NAME}>$prf->{REF},"; } @@ -514,7 +519,7 @@ sub weekprofile_Get($$@) $list.= ' topic_names:noArg' if ($useTopics); if($cmd eq "topic_names") { my $names = ''; - foreach my $topic (@{$hash->{TOPICS}}) { + foreach my $topic (sort {lc($a) cmp lc($b)} @{$hash->{TOPICS}}) { $names .= "$topic,"; } if ($names) { @@ -526,7 +531,8 @@ sub weekprofile_Get($$@) if($cmd eq "sndDevList") { my $json = JSON->new; - my $json_text = $json->encode($hash->{SNDDEVLIST}); + my @sortDevList = sort {lc($a->{ALIAS}) cmp lc($b->{ALIAS})} @{$hash->{SNDDEVLIST}}; + my $json_text = $json->encode(\@sortDevList); return $json_text; }