]> ruin.nu Git - ndwebbie.git/commitdiff
more graphs
authorMichael Andreen <harv@ruin.nu>
Fri, 26 Jan 2007 11:16:40 +0000 (11:16 +0000)
committerMichael Andreen <harv@ruin.nu>
Fri, 26 Jan 2007 11:16:40 +0000 (11:16 +0000)
ND/Web/Pages/Graph.pm
ND/Web/Pages/Main.pm
templates/alliances.tmpl
templates/main.tmpl

index 8618420242965ac1ecd94b282ee1a2f96d1fa8df..688188498d7b9e04e637459a3bde1554dbb43a43 100644 (file)
@@ -19,8 +19,7 @@
 
 package ND::Web::Pages::Graph;
 use strict;
 
 package ND::Web::Pages::Graph;
 use strict;
-use warnings;
-use CGI qw/:standard/;
+use warnings FATAL => 'all';
 use ND::Include;
 use ND::Web::Graph;
 
 use ND::Include;
 use ND::Web::Graph;
 
@@ -32,55 +31,83 @@ sub render_body {
        my $self = shift;
        my $DBH = $self->{DBH};
 
        my $self = shift;
        my $DBH = $self->{DBH};
 
-       my $type;
-       my ($x,$y,$z);
+       my %graph_settings = (
+               y_number_format => sub { prettyValue abs $_[0]},
+               y1_label => 'size',
+               y2_label => 'rest',
+       );
+       my $img;
        if ($self->{URI} =~ m{^/\w+/(stats|ranks)/(.*)}){
        if ($self->{URI} =~ m{^/\w+/(stats|ranks)/(.*)}){
-               $type = $1;
+               my $type = $1;
+               my ($x,$y,$z);
                if ($2 =~ m{(\d+)(?: |:)(\d+)(?:(?: |:)(\d+))?$}){
                        $x = $1;
                        $y = $2;
                        $z = $3;
                }
                if ($2 =~ m{(\d+)(?: |:)(\d+)(?:(?: |:)(\d+))?$}){
                        $x = $1;
                        $y = $2;
                        $z = $3;
                }
-       }
+               my $findGraph;
+               if (defined $z){
+                       $findGraph = $DBH->prepare(q{SELECT graph FROM planet_graphs WHERE planet = planetid($1,$2,$3,$4) AND tick = $4 AND type = $5});
+                       $findGraph->execute($x,$y,$z,$ND::TICK,$type) or die $DBH->errstr;
+               }
+               if (defined $findGraph and my $graph = $findGraph->fetchrow_hashref){
+                       $img = $graph->{graph};
+               }elsif(defined $x){
+                       my $query;
+                       if (defined $z){
+                               if ($type eq 'stats'){
+                                       $query = $DBH->prepare(q{SELECT tick,score,size,value,xp*60 AS "xp*60" FROM planets natural join planet_stats WHERE id = planetid($1,$2,$3,$4) ORDER BY tick ASC});
+                               }elsif($type eq 'ranks'){
+                                       $query = $DBH->prepare(q{SELECT tick,-scorerank AS score,-sizerank AS size,-valuerank AS value,-xprank AS xp FROM planets natural join planet_stats WHERE id = planetid($1,$2,$3,$4) ORDER BY tick ASC});
+                               }
+                               $query->execute($x,$y,$z,$ND::TICK) or die $DBH->errstr;
+                       }else{
+                               if ($type eq 'stats'){
+                                       $query = $DBH->prepare(q{SELECT tick,score,size,value,xp*60 AS "xp*60" FROM galaxies WHERE x = $1 AND y = $2 ORDER BY tick ASC});
+                               }elsif($type eq 'ranks'){
+                                       $query = $DBH->prepare(q{SELECT tick,-scorerank AS score,-sizerank AS size,-valuerank AS value,-xprank AS xp FROM galaxies WHERE x = $1 AND y = $2  ORDER BY tick ASC});
+                               }
+                               $query->execute($x,$y) or die $DBH->errstr;
+                       }
 
 
-       die "Not a proper type" unless defined $type;
+                       $graph_settings{title} = $type;
+                       $graph_settings{two_axes} = 1;
+                       $graph_settings{use_axis} = [2,1,2,2];
+                       $graph_settings{y_max_value} = 0 if $type eq 'ranks';
+                       $img = graphFromQuery 500,300,\%graph_settings,$query;
+               }
+       }elsif ($self->{URI} =~ m{^/\w+/alliance(avg)?/(.*)}){
 
 
-       my %graph_settings = (
-               y_number_format => sub { prettyValue abs $_[0]},
-               title => $type,
-               y1_label => 'size',
-               y2_label => 'rest',
-       );
 
 
-       my $findGraph;
-       if (defined $z){
-               $findGraph = $DBH->prepare(q{SELECT graph FROM planet_graphs WHERE planet = planetid($1,$2,$3,$4) AND tick = $4 AND type = $5});
-               $findGraph->execute($x,$y,$z,$ND::TICK,$type) or die $DBH->errstr;
-       }
-       my $img;
-       if (defined $findGraph and my $graph = $findGraph->fetchrow_hashref){
-               $img = $graph->{graph};
-       }elsif(defined $x){
+               $graph_settings{title} = 'Alliance vs known members';
+               $graph_settings{two_axes} = 1;
+               $graph_settings{use_axis} = [1,2,1,2];
+               $graph_settings{y2_label} = 'score';
+
                my $query;
                my $query;
-               if (defined $z){
-                       if ($type eq 'stats'){
-                               $query = $DBH->prepare(q{SELECT tick,score,size,value,xp*60 AS "xp*60" FROM planets natural join planet_stats WHERE id = planetid($1,$2,$3,$4) ORDER BY tick ASC});
-                       }elsif($type eq 'ranks'){
-                               $query = $DBH->prepare(q{SELECT tick,-scorerank AS score,-sizerank AS size,-valuerank AS value,-xprank AS xp FROM planets natural join planet_stats WHERE id = planetid($1,$2,$3,$4) ORDER BY tick ASC});
-                       }
-                       $query->execute($x,$y,$z,$ND::TICK) or die $DBH->errstr;
+               unless (defined $1){
+                       $query = $DBH->prepare(q{SELECT a.tick,a.size,a.score,memsize, memscore FROM (SELECT tick,SUM(size) AS memsize,SUM(score) AS memscore FROM planets p JOIN planet_stats ps USING (id) WHERE p.alliance_id = $1 GROUP BY tick) p JOIN alliance_stats a ON a.tick = p.tick
+WHERE a.id = $1 ORDER BY tick});
                }else{
                }else{
-                       if ($type eq 'stats'){
-                               $query = $DBH->prepare(q{SELECT tick,score,size,value,xp*60 AS "xp*60" FROM galaxies WHERE x = $1 AND y = $2 ORDER BY tick ASC});
-                       }elsif($type eq 'ranks'){
-                               $query = $DBH->prepare(q{SELECT tick,-scorerank AS score,-sizerank AS size,-valuerank AS value,-xprank AS xp FROM galaxies WHERE x = $1 AND y = $2  ORDER BY tick ASC});
-                       }
-                       $query->execute($x,$y) or die $DBH->errstr;
+                       $graph_settings{title} = 'Average alliance vs known members';
+                       $query = $DBH->prepare(q{SELECT a.tick,a.size/members AS size,a.score/members AS score,memsize, memscore FROM (SELECT tick,AVG(size) AS memsize,AVG(score) AS memscore FROM planets p JOIN planet_stats ps USING (id) WHERE p.alliance_id = $1 GROUP BY tick) p JOIN alliance_stats a ON a.tick = p.tick
+WHERE a.id = $1 ORDER BY tick});
                }
                }
-               
+               $query->execute($2) or die $DBH->errstr;
+
+               $img = graphFromQuery 500,300,\%graph_settings,$query;
+       }elsif ($self->{URI} =~ m{^/\w+/planetvsnd/(\d+)}){
+
+
+               $graph_settings{title} = 'You vs ND AVG';
                $graph_settings{two_axes} = 1;
                $graph_settings{two_axes} = 1;
-               $graph_settings{use_axis} = [2,1,2,2];
-               $graph_settings{y_max_value} = 0 if $type eq 'ranks';
+               $graph_settings{use_axis} = [1,2,1,2];
+               $graph_settings{y2_label} = 'score';
+
+               my $query = $DBH->prepare(q{SELECT a.tick,a.size/members as NDsize,a.score/members AS NDscore,memsize, memscore FROM (SELECT tick,size AS memsize,score AS memscore FROM planets p JOIN planet_stats ps USING (id) WHERE p.id = $1) p JOIN alliance_stats a ON a.tick = p.tick
+WHERE a.id = 1});
+               $query->execute($1) or die $DBH->errstr;
+
                $img = graphFromQuery 500,300,\%graph_settings,$query;
        }
 
                $img = graphFromQuery 500,300,\%graph_settings,$query;
        }
 
index ef6415273eba9836e8fc30c92f8d4ba9a67b8ab7..f1bc20261cbf3d88922e9d1f396cea28f5d366c3 100644 (file)
@@ -124,13 +124,15 @@ sub render_body {
        $BODY->param(HumorPoints => $humor_points);
        $BODY->param(TotalPoints => $total_points);
 
        $BODY->param(HumorPoints => $humor_points);
        $BODY->param(TotalPoints => $total_points);
 
-       $BODY->param(hasPlanet => $planet);
+       $BODY->param(Planet => $planet);
 
        if ($planet){
                my @row = $DBH->selectrow_array('SELECT ruler,planet,coords(x,y,z),size,sizerank
                        ,score,scorerank,value,valuerank,xp,xprank FROM current_planet_stats
                        WHERE id = ?',undef,$planet);
                $BODY->param(PlanetName => "$row[0] OF $row[1] ($row[2])");
 
        if ($planet){
                my @row = $DBH->selectrow_array('SELECT ruler,planet,coords(x,y,z),size,sizerank
                        ,score,scorerank,value,valuerank,xp,xprank FROM current_planet_stats
                        WHERE id = ?',undef,$planet);
                $BODY->param(PlanetName => "$row[0] OF $row[1] ($row[2])");
+               $BODY->param(PlanetName => "$row[0] OF $row[1]");
+               $BODY->param(PlanetCoords =>  $row[2]);
                $BODY->param(PlanetSize => "$row[3] ($row[4])");
                $BODY->param(PlanetScore => "$row[5] ($row[6])");
                $BODY->param(PlanetValue => "$row[7] ($row[8])");
                $BODY->param(PlanetSize => "$row[3] ($row[4])");
                $BODY->param(PlanetScore => "$row[5] ($row[6])");
                $BODY->param(PlanetValue => "$row[7] ($row[8])");
index faac2d361cde13d49d3a52bc913cf8fd4a996f3a..4f27a2c4c22c17fa05d9737a9294a7c70c2f1979 100644 (file)
        <p class="claimlinks"><input type="submit" value="Submit"/></p>
 </fieldset></form>
 <div class="leftinfo">
        <p class="claimlinks"><input type="submit" value="Submit"/></p>
 </fieldset></form>
 <div class="leftinfo">
+<img class="graph" src="/graph/alliance/<TMPL_VAR NAME=Id>" alt="Alliance size and score vs members" height="300" width="500"/>
+<img class="graph" src="/graph/allianceavg/<TMPL_VAR NAME=Id>" alt="Avg alliance size and score vs members" height="300" width="500"/>
+</div>
+<div class="leftinfo">
 <table>
        <tr>
                <th><a href="/<TMPL_VAR NAME=PAGE>?alliance=<TMPL_VAR NAME=Id>&amp;order=coords">Coords</a></th>
 <table>
        <tr>
                <th><a href="/<TMPL_VAR NAME=PAGE>?alliance=<TMPL_VAR NAME=Id>&amp;order=coords">Coords</a></th>
index b604a8f38d101cfc18cbeed196e839f0abc8cbdf..f74e0cad3b170d7f055dfb86269e1b3abd32e9fb 100644 (file)
@@ -1,8 +1,13 @@
 <TMPL_VAR NAME=Error>
 <p>Hello <TMPL_VAR NAME=Username>.</p>
 <TMPL_VAR NAME=Error>
 <p>Hello <TMPL_VAR NAME=Username>.</p>
+<div class="leftinfo">
 <fieldset> <legend>Message from HC<TMPL_IF isHC> <a href="motd?">EDIT</a></TMPL_IF></legend>
        <TMPL_VAR NAME=MOTD>
 </fieldset>
 <fieldset> <legend>Message from HC<TMPL_IF isHC> <a href="motd?">EDIT</a></TMPL_IF></legend>
        <TMPL_VAR NAME=MOTD>
 </fieldset>
+</div>
+<TMPL_IF PLANET>
+<img class="graph" src="/graph/planetvsnd/<TMPL_VAR NAME=PLANET>" alt="Your planet vs ND avg" height="300" width="500"/>
+</TMPL_IF>
 <fieldset> <legend>Planet/account details</legend>
        <ul>
        <TMPL_IF isMEMBER>
 <fieldset> <legend>Planet/account details</legend>
        <ul>
        <TMPL_IF isMEMBER>
@@ -14,8 +19,8 @@
        <li> Total points: <TMPL_VAR NAME=TotalPoints> </li>
        </TMPL_IF>
        <li> Member of the following groups: <TMPL_LOOP Groups><TMPL_VAR NAME=Name><TMPL_UNLESS __last__>, </TMPL_UNLESS></TMPL_LOOP></li>
        <li> Total points: <TMPL_VAR NAME=TotalPoints> </li>
        </TMPL_IF>
        <li> Member of the following groups: <TMPL_LOOP Groups><TMPL_VAR NAME=Name><TMPL_UNLESS __last__>, </TMPL_UNLESS></TMPL_LOOP></li>
-       <TMPL_IF hasPLANET>
-       <li>Planet: <TMPL_VAR NAME=PlanetName></li>
+       <TMPL_IF PLANET>
+       <li>Planet: <TMPL_VAR NAME=PlanetName> (<TMPL_VAR NAME=PlanetCoords>)</li>
        <li>Size: <TMPL_VAR NAME=PlanetSize></li>
        <li>Score: <TMPL_VAR NAME=PlanetScore></li>
        <li>Value: <TMPL_VAR NAME=PlanetValue></li>
        <li>Size: <TMPL_VAR NAME=PlanetSize></li>
        <li>Score: <TMPL_VAR NAME=PlanetScore></li>
        <li>Value: <TMPL_VAR NAME=PlanetValue></li>