From ea07b53d84cc3dbf401a4d5afe2cedaf55bb3e56 Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Fri, 28 Dec 2007 09:19:39 +0100 Subject: [PATCH] Main and Intel pages updated for new scan structure --- NDWeb/Include.pm | 2 +- NDWeb/Pages/Main.pm | 94 +++++++++++++++++++++++++++----------------- NDWeb/XMLPage.pm | 3 +- htdocs/misc.js | 9 +++++ templates/intel.tmpl | 2 +- templates/main.tmpl | 19 +++++++-- templates/skel.tmpl | 1 + 7 files changed, 86 insertions(+), 44 deletions(-) create mode 100644 htdocs/misc.js diff --git a/NDWeb/Include.pm b/NDWeb/Include.pm index 5ef1dba..2f062bc 100644 --- a/NDWeb/Include.pm +++ b/NDWeb/Include.pm @@ -78,7 +78,7 @@ sub intelquery { my ($columns,$where) = @_; return qq{ SELECT $columns, i.mission, i.tick AS landingtick,MIN(i.eta) AS eta, i.amount, i.ingal, u.username -FROM (intel i NATURAL JOIN users u) +FROM (fleets i NATURAL JOIN users u) JOIN current_planet_stats t ON i.target = t.id JOIN current_planet_stats o ON i.sender = o.id WHERE $where diff --git a/NDWeb/Pages/Main.pm b/NDWeb/Pages/Main.pm index d35a5b1..d321248 100644 --- a/NDWeb/Pages/Main.pm +++ b/NDWeb/Pages/Main.pm @@ -34,47 +34,57 @@ sub render_body { $self->{TITLE} = 'Main Page'; my $DBH = $self->{DBH}; - my $error; - if (defined param('cmd')){ if (param('cmd') eq 'fleet'){ - $DBH->begin_work; - my $fleet = $DBH->prepare("SELECT id FROM fleets WHERE uid = ? AND fleet = 0"); - my ($id) = $DBH->selectrow_array($fleet,undef,$ND::UID); - unless ($id){ - my $insert = $DBH->prepare(q{INSERT INTO fleets (uid,target,mission,landing_tick,fleet,eta,back) VALUES (?,?,'Full fleet',0,0,0,0)}); - $insert->execute($ND::UID,$self->{PLANET}); - ($id) = $DBH->selectrow_array($fleet,undef,$ND::UID); - } - my $delete = $DBH->prepare("DELETE FROM fleet_ships WHERE fleet = ?"); - my $insert = $DBH->prepare('INSERT INTO fleet_ships (fleet,ship,amount) VALUES (?,?,?)'); - $fleet = param('fleet'); + my $fleet = param('fleet'); $fleet =~ s/,//g; - my $match = 0; + my $amount = 0; + my @ships; while ($fleet =~ m/((?:[A-Z][a-z]+ )*[A-Z][a-z]+)\s+(\d+)/g){ - unless($match){ - $match = 1; - $delete->execute($id); + $amount += $2; + push @ships, [$1,$2]; + } + if ($amount){ + $DBH->begin_work; + eval{ + my $insert = $DBH->prepare(q{INSERT INTO fleets + (uid,sender,name,mission,tick,amount) + VALUES (?,?,'Main','Full fleet',tick(),?) RETURNING id}); + my ($id) = $DBH->selectrow_array($insert,undef,$self->{UID} + ,$self->{PLANET},$amount) or die $DBH->errstr; + $insert = $DBH->prepare('INSERT INTO fleet_ships + (id,ship,amount) VALUES (?,?,?)'); + for my $s (@ships){ + unshift @{$s},$id; + $insert->execute(@{$s}) or die $DBH->errstr; + } + }; + if ($@){ + warn $@; + $DBH->rollback; + }else{ + $DBH->commit; + $self->{RETURN} = 'REDIRECT'; + $self->{REDIR_LOCATION} = "/main"; + return; } - $insert->execute($id,$1,$2) or $error .= '

'.$DBH->errstr.'

'; + }else{ + warn 'Fleet does not contain any ships'; } - $fleet = $DBH->prepare('UPDATE fleets SET landing_tick = tick() WHERE id = ?'); - $fleet->execute($id) if $match; - $DBH->commit; }elsif (param('cmd') eq 'Recall Fleets'){ $DBH->begin_work; - my $updatefleets = $DBH->prepare('UPDATE fleets SET back = tick() + (tick() - (landing_tick - eta)) WHERE uid = ? AND id = ?'); + my $updatefleets = $DBH->prepare('UPDATE fleets SET back = tick() + (tick() - (tick - eta)) WHERE uid = ? AND id = ?'); for my $param (param()){ if ($param =~ /^change:(\d+)$/){ if($updatefleets->execute($ND::UID,$1)){ log_message $ND::UID,"Member recalled fleet $1"; }else{ - $error .= "

Something went wrong: ".$DBH->errstr."

"; + warn $DBH->errstr; } } } - $DBH->commit or $error .= '

'.$DBH->errstr.'

'; + $DBH->commit or warn $DBH->errstr; }elsif (param('cmd') eq 'Change Fleets'){ $DBH->begin_work; my $updatefleets = $DBH->prepare('UPDATE fleets SET back = ? WHERE uid = ? AND id = ?'); @@ -83,11 +93,11 @@ sub render_body { if($updatefleets->execute(param("back:$1"),$ND::UID,$1)){ log_message $ND::UID,"Member set fleet $1 to be back tick: ".param("back:$1"); }else{ - $error .= "

Something went wrong: ".$DBH->errstr."

"; + warn $DBH->errstr; } } } - $DBH->commit or $error .= '

'.$DBH->errstr.'

'; + $DBH->commit or warn $DBH->errstr; } } if (param('sms')){ @@ -144,8 +154,8 @@ sub render_body { WHERE c.member = ? AND (c.landing_tick - tick()) > 0 GROUP BY c.id, c.landing_tick,dc.username,c.covered ORDER BY c.landing_tick DESC - })or $error .= $DBH->errstr; - $query->execute($ND::UIN) or $error .= $DBH->errstr; + })or warn $DBH->errstr; + $query->execute($ND::UIN) or warn $DBH->errstr; my $i = 0; my @calls; @@ -197,28 +207,38 @@ sub render_body { } - $query = $DBH->prepare(q{SELECT f.fleet,f.id, coords(x,y,z) AS target, mission, sum(fs.amount) AS amount, landing_tick, back + $query = $DBH->prepare(q{SELECT f.id, coords(x,y,z) AS target, mission + , f.amount, tick, back FROM fleets f -JOIN fleet_ships fs ON f.id = fs.fleet -JOIN current_planet_stats p ON f.target = p.id -WHERE f.uid = ? AND (f.fleet = 0 OR back >= ?) -GROUP BY f.fleet,f.id, x,y,z, mission, landing_tick,back -ORDER BY f.fleet +JOIN fleet_ships fs USING (id) +LEFT OUTER JOIN current_planet_stats p ON f.target = p.id +WHERE f.uid = ? AND f.sender = ? AND + (back >= ? OR (tick >= tick() - 24 AND name = 'Main')) +GROUP BY f.id, x,y,z, mission, tick,back,f.amount +ORDER BY x,y,z,mission,tick }); - $query->execute($ND::UID,$self->{TICK}) or $error .= '

'.$DBH->errstr.'

'; + my $ships = $DBH->prepare(q{SELECT ship,amount FROM fleet_ships where id = ?}); + + $query->execute($self->{UID},$self->{PLANET},$self->{TICK}) or warn $DBH->errstr; my @fleets; $i = 0; while (my $fleet = $query->fetchrow_hashref){ - $i++; $fleet->{ODD} = $i % 2; + my @ships; + $ships->execute($fleet->{id}); + my $j = 0; + while (my $ship = $ships->fetchrow_hashref){ + $ship->{ODD} = $i++ % 2; + push @ships,$ship; + } + $fleet->{ships} = \@ships; push @fleets,$fleet; } $BODY->param(Fleets => \@fleets); $BODY->param(SMS => $sms); $BODY->param(Hostname => $hostname); - $BODY->param(Error => $error); return $BODY; } diff --git a/NDWeb/XMLPage.pm b/NDWeb/XMLPage.pm index 3e02608..eb25c68 100644 --- a/NDWeb/XMLPage.pm +++ b/NDWeb/XMLPage.pm @@ -101,7 +101,8 @@ sub render : method { } unless ($self->{XML}){ - my $fleetupdate = $DBH->selectrow_array('SELECT landing_tick FROM fleets WHERE uid = ? AND fleet = 0',undef,$self->{UID}); + #TODO: Need to fix this with new stuff. + my $fleetupdate = $DBH->selectrow_array(q{SELECT tick FROM fleets WHERE sender = ? AND mission = 'Full fleet' AND tick > tick() - 24},undef,$self->{PLANET}); $fleetupdate = 0 unless defined $fleetupdate; diff --git a/htdocs/misc.js b/htdocs/misc.js new file mode 100644 index 0000000..a21f365 --- /dev/null +++ b/htdocs/misc.js @@ -0,0 +1,9 @@ +function toggleVisibility(id) { + var obj=document.getElementById(id); + if (obj.style.display=='none') { + obj.style.display=''; + } + else { + obj.style.display='none'; + } +} diff --git a/templates/intel.tmpl b/templates/intel.tmpl index fccdf1b..4158ad6 100644 --- a/templates/intel.tmpl +++ b/templates/intel.tmpl @@ -123,7 +123,7 @@
Coords -

Paste a list of coords here

+

Paste a list of coords that you want to check here

diff --git a/templates/main.tmpl b/templates/main.tmpl index 344a15e..4f8a95c 100644 --- a/templates/main.tmpl +++ b/templates/main.tmpl @@ -1,5 +1,4 @@ -

Hello .

Message from HC EDIT @@ -44,7 +43,7 @@ - + @@ -85,11 +84,21 @@ TargetMissionAmountLanding TickBack homechange? - - + + + + + + + + + + + +

@@ -115,6 +124,7 @@

+
Fleet

Paste your total fleet from ships section on overview here (do it daily to see the menus):

@@ -124,6 +134,7 @@
+
stats for your planet diff --git a/templates/skel.tmpl b/templates/skel.tmpl index 75e1339..fed216c 100644 --- a/templates/skel.tmpl +++ b/templates/skel.tmpl @@ -9,6 +9,7 @@ + -- 2.39.2