previous season ladders indicated after active results
authorMischa POSLAWSKY <perl@shiar.org>
Thu, 6 Jun 2019 16:39:59 +0000 (18:39 +0200)
committerMischa POSLAWSKY <perl@shiar.org>
Thu, 6 Jun 2019 16:45:00 +0000 (18:45 +0200)
battle.css
getsc2clan
widget.html

index 2624af463f84f129392660cbc9fc1d8eb3c717b1..6fbf215728685b7e018e099f27bd0e5ce888e7f6 100644 (file)
@@ -134,6 +134,13 @@ li, li img {
        background-position: -100px -150px;
 }
 
+.old {
+       text-decoration: line-through;
+}
+.old:before {
+       opacity: .5;
+}
+
 .ladders li {
        float: none;
        margin-right: 0;
index 94ca435551adcd62807fca213ea08464c60938ae..c3730517d6a7219a3d3e4447e8bfa475b465c515 100755 (executable)
@@ -6,7 +6,7 @@ use utf8;
 use Data::Dump qw( pp );
 use LWP::Authen::OAuth2;
 use JSON qw( decode_json );
-use List::MoreUtils qw( all part nsort_by );
+use List::MoreUtils qw( all part sort_by nsort_by );
 
 if (@ARGV and all { m[/] } @ARGV) {
        say pp blizget($_) for @ARGV;
@@ -40,13 +40,19 @@ sub blizget {
 my @ladderdata = map {
        blizget(legacy => profile => 2 => 1 => $_ => 'ladders')
 } @{$profiles};
-my %ladders = (
-       map { $_->{ladder}->[0]->{ladderId} => $_ } # unique
-       grep { $_->{ladder}->[0]->{division} }
-       map { $_->{previousSeason}->@*, $_->{currentSeason}->@* }
-       @ladderdata
-);
+
+# merge relevant ladder data of all users
+my %ladders;
+for my $season (qw[ currentSeason previousSeason ]) {
+       for my $row (map { $_->{$season}->@* } @ladderdata) {
+               $row->{ladder}->[0]->{division} or next;
+               $row->{season} = $season;
+               $ladders{ $row->{ladder}->[0]->{ladderId} } //= $row;
+       }
+}
+
 my @ladders = (
+       sort_by { $_->{season} } # season
        nsort_by {
                -($_->{ladder}->[0]->{wins} + $_->{ladder}->[0]->{losses})
        } # activity desc
@@ -72,6 +78,7 @@ say JSON->new->canonical->pretty->encode({
                members  => [map { $memberidx{$_->{id}} } $_->{characters}->@*],
                wins     => $_->{ladder}->[0]->{wins},
                losses   => $_->{ladder}->[0]->{losses},
+               (season  => -1) x ($_->{season} eq 'previousSeason'),
        }} @ladders],
        members  => [map {
                blizget(metadata => profile => 2 => 1 => $_->{id})
index 7fc2389eef13d830d011ebe96976e3d7a944d296..4424a53361c5662e240fb3787ad9093857a57f79 100644 (file)
@@ -29,7 +29,7 @@
                        <h1>${clan.tag || clan.members[0].name}</h1>
                        <ul class=ladders>
                        ${clan.ladders.map(ladder => `
-                               <li class="rank ${ladder.league} tier${tiernum(ladder.rank)}"
+                               <li class="rank ${ladder.league} tier${tiernum(ladder.rank)}${ladder.season && ' old'}"
                                 title="Division ${ladder.division} (${ladder.wins}:${ladder.losses})">
                                        ${ladder.league} <small>#${ladder.rank}</small>
                                </li>