]> ruin.nu Git - ndwebbie.git/commitdiff
Added alliance member fleets
authorMichael Andreen <harv@ruin.nu>
Sun, 27 Jun 2021 10:49:30 +0000 (12:49 +0200)
committerMichael Andreen <harv@ruin.nu>
Sun, 27 Jun 2021 10:49:30 +0000 (12:49 +0200)
dependencies
lib/NDWeb/Controller/Alliances.pm
root/src/alliances/edit.tt2
root/src/alliances/fleet.tt2 [new file with mode: 0644]

index 3cabb012b798997b6254d7f7f67d9247a684fa36..dd8242155a87614e3224d3362df98a25ebc755b2 100644 (file)
@@ -17,6 +17,7 @@
 - GD::Graph
 - Email::Simple
 - Email::StripMIME
+- Template::Plugin::JSON
 
 
 Bot deps:
index 70c6340419e077844d1f4fd531e6d9eeabc0d37d..6c9731cc087f94b599f2841e5203694dff49a2e2 100644 (file)
@@ -124,6 +124,32 @@ sub pscans : Local {
 
 }
 
+sub fleet : Local {
+       my ( $self, $c, $id ) = @_;
+       my $dbh = $c->model;
+
+       my $query = $dbh->prepare(q{SELECT ship, id FROM ship_stats WHERE id >= 0 ORDER BY id ASC;});
+       $query->execute;
+       $c->stash(ships => $query->fetchall_arrayref({}));
+
+       my $members = $dbh->prepare(q{
+WITH
+aus AS (SELECT DISTINCT ON (pid) pid, fid, name,tick
+       FROM fleets f join fleet_scans fs using (fid)
+       WHERE mission = 'Full fleet' and name = 'Advanced Unit'
+       ORDER BY pid,tick DESC)
+,ships AS (SELECT pid, tick, ship, amount, id AS ship_id
+       FROM fleet_ships fs JOIN aus USING(fid) JOIN ship_stats USING(ship))
+SELECT pid, coords(x,y,z), p.race, tick, jsonb_object_agg(ship_id, amount) AS ships
+       FROM ships JOIN current_planet_stats p USING (pid)
+       WHERE p.aid = $1
+       GROUP BY x,y,z,pid,race,tick;
+               });
+       $members->execute($id);
+       $c->stash(members => $members->fetchall_arrayref({}) );
+
+}
+
 sub postallianceupdate : Local {
        my ( $self, $c, $id, $order ) = @_;
        my $dbh = $c->model;
index cf34eaf10c0b84ae7a7a3b3504b186048f4fb1d0..a2689c1f229d173345390fd6d6f1b376d03e86d0 100644 (file)
@@ -25,7 +25,7 @@
 </fieldset>
 </div>
 </fieldset>
-<p><a href="[% c.uri_for('pscans',a.id) %]">Planet scans</a>.</p><p>Export information <a href="[% c.uri_for('/textexport/alliance',a.id) %]">as text</a>.</p>
+<p><a href="[% c.uri_for('pscans',a.id) %]">Planet scans</a> <a href="[% c.uri_for('fleet',a.id) %]">Member fleets</a></p><p>Export information <a href="[% c.uri_for('/textexport/alliance',a.id) %]">as text</a>.</p>
 <div class="leftinfo">
 <img class="graph" src="[% c.uri_for('/graphs/alliancevsintel',a.id,STICK) %]" alt="Alliance size and score vs members" height="300" width="500">
 <img class="graph" src="[% c.uri_for('/graphs/avgalliancevsintel',a.id,STICK) %]" alt="Avg alliance size and score vs members" height="300" width="500">
diff --git a/root/src/alliances/fleet.tt2 b/root/src/alliances/fleet.tt2
new file mode 100644 (file)
index 0000000..1be5518
--- /dev/null
@@ -0,0 +1,25 @@
+[% META title = 'Alliance P-Scans' %]
+
+[% USE JSON %]
+
+<table class="stats">
+       <tr>
+               <th>Coords</th>
+               <th>Race</th>
+               <th>Tick</th>
+[% FOR s IN ships %]
+               <th>[% s.ship %]</th>
+[% END %]
+       </tr>
+[% FOR m IN members %]
+       <tr class="[% loop.count % 2 == 0 ? 'even' : 'odd' %]">
+               <td><a href="[% c.uri_for('/stats/planet',m.pid) %]">[% m.coords %]</a></td>
+               <td>[% m.race %]</td>
+               <td>[% m.tick %]</td>
+[% fleet = JSON.json_decode(m.ships) %]
+[% FOR s IN ships %]
+               <td>[% fleet.${s.id} %]</td>
+[% END %]
+       </tr>
+[% END %]
+</table>