]> ruin.nu Git - ndwebbie.git/commitdiff
Use new development scans
authorMichael Andreen <harv@ruin.nu>
Sat, 1 Nov 2008 17:10:55 +0000 (18:10 +0100)
committerMichael Andreen <harv@ruin.nu>
Sat, 1 Nov 2008 17:10:55 +0000 (18:10 +0100)
database/clean-webbie.sql
database/develscan.sql [new file with mode: 0644]
lib/NDWeb/Controller/CovOp.pm
lib/NDWeb/Controller/Intel.pm
lib/NDWeb/Controller/Raids.pm
lib/NDWeb/Controller/Stats.pm
root/src/stats/planet.tt2
scripts/scans.pl

index 2ba111864429121ddbd5d8274997c0d3026a6e14..9376126d9f4e2251f30482319f8fee40c2a8fb8c 100644 (file)
@@ -7,10 +7,10 @@ TRUNCATE fleet_ships;
 TRUNCATE incomings;
 TRUNCATE raid_claims;
 /*TRUNCATE dumps;*/
+TRUNCATE scan_requests;
 TRUNCATE fleet_scans;
 TRUNCATE planet_scans;
-TRUNCATE structure_scans;
-TRUNCATE tech_scans;
+TRUNCATE development_scans;
 TRUNCATE irc_requests;
 UPDATE users SET scan_points = 0, defense_points = 0, attack_points = 0, humor_points = 0, rank = NULL, planet = NULL;
 DELETE FROM scans;
@@ -36,3 +36,4 @@ ALTER SEQUENCE raid_targets_id_seq RESTART 1;
 ALTER SEQUENCE raids_id_seq RESTART 1;
 ALTER SEQUENCE scans_id_seq RESTART 1;
 ALTER SEQUENCE irc_requests_id_seq RESTART 1;
+ALTER SEQUENCE scan_requests_id_seq RESTART 1;
diff --git a/database/develscan.sql b/database/develscan.sql
new file mode 100644 (file)
index 0000000..38eeaee
--- /dev/null
@@ -0,0 +1,37 @@
+DROP VIEW current_structure_scans;
+DROP VIEW current_tech_scans;
+DROP TABLE structure_scans;
+DROP TABLE tech_scans;
+
+CREATE TABLE development_scans (
+       id          integer PRIMARY KEY REFERENCES scans(id),
+       planet      integer NOT NULL REFERENCES planets(id),
+       tick        integer NOT NULL,
+       light_fac   integer NOT NULL,
+       medium_fac  integer NOT NULL,
+       heavy_fac   integer NOT NULL,
+       amps        integer NOT NULL,
+       distorters  integer NOT NULL,
+       metal_ref   integer NOT NULL,
+       crystal_ref integer NOT NULL,
+       eonium_ref  integer NOT NULL,
+       reslabs     integer NOT NULL,
+       fincents    integer NOT NULL,
+       seccents    integer NOT NULL,
+       total       integer NOT NULL,
+
+       travel      integer NOT NULL,
+       infra       integer NOT NULL,
+       hulls       integer NOT NULL,
+       waves       integer NOT NULL,
+       extraction  integer NOT NULL,
+       covert      integer NOT NULL,
+       mining      integer NOT NULL
+);
+
+CREATE OR REPLACE VIEW current_development_scans AS
+SELECT DISTINCT ON (planet) ds.*
+FROM development_scans ds
+ORDER BY planet, tick DESC, id DESC;
+
+CREATE INDEX development_scans_planet_index ON development_scans(planet,tick);
index faf4296660d9de465ec6436a44106b00b286e412..ea67978ef9fd8037de2d9baf24d8bc1674bef33c 100644 (file)
@@ -55,13 +55,13 @@ sub list : Private {
                , distorters,gov
                , MaxResHack,co.tick AS lastcovop
                FROM (SELECT p.id,coords(x,y,z),size, metal,crystal,eonium,guards
-                       ,seccents,NULLIF(ss.total::integer,0) AS structures,distorters
+                       ,seccents,NULLIF(ds.total::integer,0) AS structures,distorters
                        ,max_bank_hack(metal,crystal,eonium,p.value
                                ,(SELECT value FROM current_planet_stats WHERE id = ?)) AS MaxResHack
                        , planet_status, relationship,gov
                        FROM current_planet_stats p
                                LEFT OUTER JOIN current_planet_scans ps ON p.id = ps.planet
-                               LEFT OUTER JOIN current_structure_scans ss ON p.id = ss.planet
+                               LEFT OUTER JOIN current_development_scans ds ON p.id = ds.planet
                        ) AS foo
                        LEFT OUTER JOIN (SELECT id,max(tick) AS tick FROM covop_attacks GROUP BY id) co USING (id)
                WHERE (metal IS NOT NULL OR seccents IS NOT NULL)
index 4cc3b7e4bcd6871301f069b6c26551d8da0ba35d..55f6643ee057f789e51746bff47427703bc32f15 100644 (file)
@@ -289,13 +289,13 @@ sub naps : Local {
                ,ruler, p.planet,race, size, score, value
                , xp, sizerank, scorerank, valuerank, xprank, p.value - p.size*200 
                        - COALESCE(ps.metal+ps.crystal+ps.eonium,0)/150
-                       - COALESCE(ss.total ,(SELECT COALESCE(avg(total),0)
-                               FROM structure_scans)::int)*1500 AS fleetvalue
+                       - COALESCE(ds.total ,(SELECT COALESCE(avg(total),0)
+                               FROM current_development_scans)::int)*1500 AS fleetvalue
                ,(metal+crystal+eonium)/100 AS resvalue, planet_status,hit_us
                , alliance,relationship,nick
                FROM current_planet_stats p
                        LEFT OUTER JOIN current_planet_scans ps ON p.id = ps.planet
-                       LEFT OUTER JOIN current_structure_scans ss ON p.id = ss.planet
+                       LEFT OUTER JOIN current_development_scans ds ON p.id = ds.planet
                WHERE planet_status IN ('Friendly','NAP') order by x,y,z asc
                });
        $query->execute;
index 98b3a39e8012033296983490f3d7af9152565eb1..410d42d0f29fce96d795c71e502ff2c85ee0a8a0 100644 (file)
@@ -110,9 +110,9 @@ sub view : Local {
                , p.x,p.y,p.z, race
                , p.value - p.size*200 -
                        COALESCE(ps.metal+ps.crystal+ps.eonium,0)/150 -
-                       COALESCE(ss.total ,(SELECT
+                       COALESCE(ds.total ,(SELECT
                                COALESCE(avg(total),0) FROM
-                               structure_scans)::int)*1500 AS fleetvalue
+                               current_development_scans)::int)*1500 AS fleetvalue
                ,(metal+crystal+eonium)/100 AS resvalue, comment
                , hidden, light, medium, heavy, metal, crystal, eonium
                ,metal_roids, crystal_roids, eonium_roids
@@ -121,8 +121,7 @@ sub view : Local {
                FROM current_planet_stats p
                        JOIN raid_targets r ON p.id = r.planet
                        LEFT OUTER JOIN current_planet_scans ps ON p.id = ps.planet
-                       LEFT OUTER JOIN current_structure_scans ss ON p.id = ss.planet
-                       LEFT OUTER JOIN current_tech_scans ts ON p.id = ts.planet
+                       LEFT OUTER JOIN current_development_scans ds ON p.id = ds.planet
                WHERE r.raid = $1
                        AND NOT COALESCE(p.x = $2 AND p.y = $3,False)
                ORDER BY size});
@@ -193,7 +192,7 @@ sub view : Local {
                        $target->{resvalue} = floor($target->{resvalue}/$num)*$num;
                }
                $target->{comment} = parseMarkup($target->{comment}) if ($target->{comment});
-               $target->{hidden} = int($target->{hidden} / 100);
+               $target->{hidden} = int($target->{hidden} / 100) if $target->{hidden};
 
                push @targets,$target;
        }
index 1796605d0d7b38d2cdc2d743610b4c525730069a..63ad6d781dc6828ac64b6296d9723d35114eaf66 100644 (file)
@@ -67,8 +67,8 @@ sub galaxy : Local {
                $extra_columns .= q{
                        ,gov, p.value - p.size*200 -
                        COALESCE(ps.metal+ps.crystal+ps.eonium,0)/150 -
-                       COALESCE(ss.total ,(SELECT COALESCE(avg(total),0)
-                               FROM structure_scans)::int)*1500 AS fleetvalue
+                       COALESCE(ds.total ,(SELECT COALESCE(avg(total),0)
+                               FROM current_development_scans)::int)*1500 AS fleetvalue
                        ,(metal+crystal+eonium)/100 AS resvalue
                };
        }
@@ -86,9 +86,9 @@ sub galaxy : Local {
                $extra_columns
                FROM current_planet_stats_full p
                        LEFT OUTER JOIN planet_scans ps ON p.id = ps.planet
-                       LEFT OUTER JOIN structure_scans ss ON p.id = ss.planet
+                       LEFT OUTER JOIN current_development_scans ds ON p.id = ds.planet
                WHERE x = ? AND y = ? AND COALESCE(z = ?,TRUE)
-               ORDER BY x,y,z,p.id,ps.tick DESC, ps.id DESC, ss.tick DESC, ss.id DESC
+               ORDER BY x,y,z,p.id,ps.tick DESC, ps.id DESC, ds.tick DESC, ds.id DESC
                });
 
        $query->execute($x,$y,$z);
@@ -181,10 +181,8 @@ sub planet : Local {
        if ($c->check_user_roles(qw/stats_planetdata/)){
                $c->stash(planetscan => $dbh->selectrow_hashref(q{SELECT *
                        FROM current_planet_scans WHERE planet = $1},undef,$id));
-               $c->stash(structurescan => $dbh->selectrow_hashref(q{SELECT *
-                       FROM current_structure_scans WHERE planet = $1},undef,$id));
-               $c->stash(techscan => $dbh->selectrow_hashref(q{SELECT *
-                       FROM current_tech_scans WHERE planet = $1},undef,$id));
+               $c->stash(devscan => $dbh->selectrow_hashref(q{SELECT *
+                       FROM current_development_scans WHERE planet = $1},undef,$id));
        }
 
        my $query = $dbh->prepare(q{SELECT value,value_gain AS gain,tick FROM planet_stats 
index fb0784397d92c39d323b8c7cc9d5e7805319ccf5..ea58187d4502106359ca55e0816ca48cb20213cb 100644 (file)
        <tr><th>Hidden:</th><td colspan="2" align="right">[% comma(planetscan.hidden) %]</td></tr>
 </table>
 [% END %]
-[% IF structurescan.tick %]
-<table [% IF structurescan.tick < TICK - 24 %] class="old"[% END %]>
-       <tr><th>Tick:</th><td>[% structurescan.tick %]</td></tr>
+[% IF devscan.tick %]
+<table [% IF devscan.tick < TICK - 24 %] class="old"[% END %]>
+       <tr><th>Tick:</th><td>[% devscan.tick %]</td></tr>
        <tr><th colspan="3">Factories</th></tr>
        <tr><th>Light</th><th>Medium</th><th>Heavy</th></tr>
-       <tr align="right"><td>[% structurescan.light_fac %]</td>
-               <td>[% structurescan.medium_fac %]</td>
-               <td>[% structurescan.heavy_fac %]</td>
+       <tr align="right"><td>[% devscan.light_fac %]</td>
+               <td>[% devscan.medium_fac %]</td>
+               <td>[% devscan.heavy_fac %]</td>
        </tr>
        <tr><th>Amps</th><th></th><th>Distorters</th></tr>
-       <tr align="right"><td>[% structurescan.amps %]</td>
+       <tr align="right"><td>[% devscan.amps %]</td>
                <td></td>
-               <td>[% structurescan.distorters %]</td>
+               <td>[% devscan.distorters %]</td>
        </tr>
        <tr><th colspan="3">Refinaries</th></tr>
        <tr><th>Metal</th><th>Crystal</th><th>Eonium</th></tr>
-       <tr align="right"><td>[% structurescan.metal_ref %]</td>
-               <td>[% structurescan.crystal_ref %]</td>
-               <td>[% structurescan.eonium_ref %]</td>
+       <tr align="right"><td>[% devscan.metal_ref %]</td>
+               <td>[% devscan.crystal_ref %]</td>
+               <td>[% devscan.eonium_ref %]</td>
        </tr>
        <tr><th>Reslabs</th><th>Finance</th><th>Seccents</th></tr>
-       <tr align="right"><td>[% structurescan.reslabs %]</td>
-               <td>[% structurescan.fincents %]</td>
-               <td>[% structurescan.seccents %]</td>
+       <tr align="right"><td>[% devscan.reslabs %]</td>
+               <td>[% devscan.fincents %]</td>
+               <td>[% devscan.seccents %]</td>
        </tr>
-</table>
-[% END %]
-[% IF techscan.tick %]
-<table [% IF techscan.tick < TICK - 24 %] class="old"[% END %]>
-       <tr><th>Tick:</th><td>[% techscan.tick %]</td></tr>
-       <tr><th>Research</th><th>Level</th></tr>
-       <tr><td>Travel Time</td>
-               <td align="right">[% techscan.travel %]</td>
+       <tr><th colspan="2">Research</th><th>Level</th></tr>
+       <tr><td colspan="2">Travel Time</td>
+               <td align="right">[% devscan.travel %]</td>
        </tr>
-       <tr><td>Infrastructure</td>
-               <td align="right">[% techscan.infra %]</td>
+       <tr><td colspan="2">Infrastructure</td>
+               <td align="right">[% devscan.infra %]</td>
        </tr>
-       <tr><td>Hulls</td>
-               <td align="right">[% techscan.hulls %]</td>
+       <tr><td colspan="2">Hulls</td>
+               <td align="right">[% devscan.hulls %]</td>
        </tr>
-       <tr><td>Waves</td>
-               <td align="right">[% techscan.waves %]</td>
+       <tr><td colspan="2">Waves</td>
+               <td align="right">[% devscan.waves %]</td>
        </tr>
-       <tr><td>Core Extraction</td>
-               <td align="right">[% techscan.extraction %]</td>
+       <tr><td colspan="2">Core Extraction</td>
+               <td align="right">[% devscan.extraction %]</td>
        </tr>
-       <tr><td>Covert Ops</td>
-               <td align="right">[% techscan.covert %]</td>
+       <tr><td colspan="2">Covert Ops</td>
+               <td align="right">[% devscan.covert %]</td>
        </tr>
-       <tr><td>Mining</td>
-               <td align="right">[% techscan.mining %]</td>
+       <tr><td colspan="2">Mining</td>
+               <td align="right">[% devscan.mining %]</td>
        </tr>
 </table>
 [% END %]
index c6d8fca2e76f22cf6c1eb25014e551fe76d92513..818be591e37d8937162fa6b98f2e3f59631d1d7a 100755 (executable)
@@ -26,7 +26,10 @@ use CGI;
 use DBI;
 use DBD::Pg qw(:pg_types);
 use LWP::Simple;
-use lib qw{/var/www/ndawn/lib/};
+
+use FindBin;
+use lib "$FindBin::Bin/../lib";
+
 use ND::DB;
 
 our $dbh = ND::DB::DB();
@@ -77,15 +80,12 @@ my $addplanetscan = $dbh->prepare(q{INSERT INTO planet_scans
        (id,tick,planet,metal_roids,metal,crystal_roids,crystal,eonium_roids,eonium
                ,agents,guards,light,medium,heavy,hidden)
        VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)});
-my $addstrucscan = $dbh->prepare(q{INSERT INTO structure_scans
+my $adddevscan = $dbh->prepare(q{INSERT INTO development_scans
        (id,tick,planet,light_fac,medium_fac,heavy_fac,amps,distorters
-               ,metal_ref,crystal_ref,eonium_ref,reslabs,fincents,seccents,total)
-       VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)});
-
-my $addtechscan = $dbh->prepare(q{INSERT INTO tech_scans
-       (id,tick,planet,travel,infra,hulls,waves,extraction,covert,mining)
-       VALUES(?,?,?,?,?,?,?,?,?,?)});
-
+               ,metal_ref,crystal_ref,eonium_ref,reslabs,fincents,seccents
+               ,travel,infra,hulls,waves,extraction,covert,mining,total)
+       VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
+       });
 
 $dbh->begin_work or die 'No transaction';
 $newscans->execute or die $dbh->errstr;
@@ -184,21 +184,15 @@ while (my $scan = $newscans->fetchrow_hashref){
                                        $fleetscan->execute($id,$scan->{id}) or die $dbh->errstr;
                                }
                        }
-               } elsif($type eq 'Surface Analysis'){
+               } elsif($type eq 'Development'){
                        my @values = ($scan->{id},$tick,$planet);
                        my $total = 0;
                        while($file =~ m{((?:[a-zA-Z]| )+)</t[dh]><td(?: class="right")?>(\d+)}sg){
                                push @values,$2;
-                               $total += $2;
+                               $total += $2 if $#values <= 13;
                        }
                        push @values,$total;
-                       $addstrucscan->execute(@values);
-               } elsif($type eq 'Technology Analysis'){
-                       my @values = ($scan->{id},$tick,$planet);
-                       while($file =~ m{((?:[a-zA-Z]| )+)</t[dh]><td(?: class="right")?>(\d+)}sg){
-                               push @values,$2;
-                       }
-                       $addtechscan->execute(@values);
+                       $adddevscan->execute(@values);
                } elsif($type eq 'Unit' || $type eq 'Advanced Unit'){
                        my $id = addfleet($type,'Full fleet',$file,$planet,undef,$tick,undef,undef,undef);
                        $fleetscan->execute($id,$scan->{id}) or die $dbh->errstr;