changeset 0:9c46727ce7ab

Initial version
author Dominic Cleal <dominic@computerkb.co.uk>
date Sat, 24 Jan 2009 16:23:08 +0000
parents
children c39512d94605
files reproctool.cgi reproctool.htm
diffstat 2 files changed, 183 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/reproctool.cgi	Sat Jan 24 16:23:08 2009 +0000
@@ -0,0 +1,151 @@
+#!/usr/bin/perl -T
+
+use warnings;
+use strict;
+
+use CGI;
+use DBI;
+
+# Settings
+my $db_path = 'qr100-sqlite3-v1.db';
+my $img_http_path = '/itemimgs';
+
+my $cgi = new CGI;
+print $cgi->header(-type    => 'text/html',
+                   -pragma  => 'no-cache',
+                   -expires => '-365d');
+
+# Inputs
+my $str_items = $cgi->param('items') or die('Items missing');
+my $cols = $cgi->param('cols') || 4;
+
+# Load mineral prices
+my $trit = $cgi->param('trit') || die('No trit price');
+my $pyer = $cgi->param('pyer') || die('No pyer price');
+my $mexa = $cgi->param('mexa') || die('No mexa price');
+my $isog = $cgi->param('isog') || die('No isog price');
+my $nocx = $cgi->param('nocx') || die('No nocx price');
+my $zydr = $cgi->param('zydr') || die('No zydr price');
+my $mega = $cgi->param('mega') || die('No mega price');
+my $morp = $cgi->param('morp') || die('No morp price');
+
+my $db = DBI->connect("DBI:SQLite:$db_path")
+    or die("Database connection failure: $DBI::errstr");
+
+# Strip out line endings
+$str_items =~ s/[\n\r]+//g;
+
+# If the items string contains the contract info too, strip it out
+$str_items = $1 if ($str_items =~ /The container .+ contains the following items:(.+)/);
+$str_items = $1 if ($str_items =~ /(.+)Are you sure you want to continue?/);
+
+# SQL lookup for reprocessing amounts
+my $sql_reprocess = <<END;
+SELECT
+	types.typeID,
+	types.typeName,
+	attrs.valueInt [metaLevel],
+	types.basePrice,
+	graphics.icon,
+	SUM(CASE WHEN m1.requiredTypeID = 34 THEN m1.quantity ELSE 0 END) [Tritanium],
+	SUM(CASE WHEN m1.requiredTypeID = 35 THEN m1.quantity ELSE 0 END) [Pyerite],
+	SUM(CASE WHEN m1.requiredTypeID = 36 THEN m1.quantity ELSE 0 END) [Mexallon],
+	SUM(CASE WHEN m1.requiredTypeID = 37 THEN m1.quantity ELSE 0 END) [Isogen],
+	SUM(CASE WHEN m1.requiredTypeID = 38 THEN m1.quantity ELSE 0 END) [Nocxium],
+	SUM(CASE WHEN m1.requiredTypeID = 39 THEN m1.quantity ELSE 0 END) [Zydrine],
+	SUM(CASE WHEN m1.requiredTypeID = 40 THEN m1.quantity ELSE 0 END) [Megacyte],
+	SUM(CASE WHEN m1.requiredTypeID = 11399 THEN m1.quantity ELSE 0 END) [Morphite]
+FROM invTypes types
+INNER JOIN dgmTypeAttributes attrs ON types.typeID = attrs.typeID AND attrs.attributeID = 633
+INNER JOIN typeActivityMaterials m1 ON types.typeID = m1.typeID
+INNER JOIN eveGraphics graphics ON types.graphicID = graphics.graphicID
+WHERE types.typeName = ?
+GROUP BY
+	types.typeID,
+	types.typeName,
+	attrs.valueInt,
+	types.basePrice
+END
+my $pre_reprocess = $db->prepare($sql_reprocess);
+
+my @output = ();
+for my $sitem (split(/\s*,\s*/, $str_items))
+{
+    my ($tid, $tname, $meta, $basePrice, $icon,
+        $ttrit, $tpyer, $tmexa, $tisog, $tnocx, $tzydr, $tmega);
+    
+    $pre_reprocess->execute($sitem) or die("Can't lookup $sitem: $DBI::errstr");
+    $pre_reprocess->bind_columns(undef, \$tid, \$tname, \$meta, \$basePrice,
+        \$icon, \$ttrit, \$tpyer, \$tmexa, \$tisog, \$tnocx, \$tzydr, \$tmega);
+    
+    my $item = {};
+    if ($pre_reprocess->fetch())
+    {
+        my $isk = ($trit * $ttrit) + ($pyer * $tpyer) + ($mexa * $tmexa) +
+                  ($isog * $tisog) + ($nocx * $tnocx) + ($zydr * $tzydr) +
+                  ($mega * $tmega);
+        
+        $item = { id => $tid, name => $tname, meta => $meta, icon => $icon,
+                  price => $basePrice, reprocess => $isk };
+    }
+    push @output, $item;
+}
+
+my $col = 0;
+print<<END;
+<html>
+<head>
+    <style type="text/css">
+        .meta4, .meta5, .meta6, .meta7, .meta8, .meta9
+        {
+            border: 2px #FF0000 solid;
+        }
+    </style>
+</head>
+<body>
+<table>
+END
+
+for my $item (@output)
+{
+    if ($col == $cols)
+    {
+        print "</tr><tr>\n";
+        $col = 0;
+    }
+    
+    my ($style, $img, $text);
+    
+    if (defined $item->{id})
+    {
+        $style = "meta$item->{meta}";
+        $img = "icons/icons_items_png/64_64/icon$item->{icon}.png";
+        if ($item->{meta} == 4)
+        {
+            $text = $item->{name};
+        }
+        else
+        {
+            $text = $item->{reprocess};
+        }
+    }
+    else
+    {
+        $text = 'Unknown item';
+        $img = "icons/icons_items_png/64_64/icon07_15.png";
+    }
+    
+    print "<td class='item $style'>";
+    print "<img src='$img_http_path/$img' width='64' height='64' alt='$item->{name}' /><br />$text";
+    print "</td>\n";
+    
+    $col++;
+}
+
+print<<END;
+</tr>
+</table>
+</body>
+</html>
+END
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/reproctool.htm	Sat Jan 24 16:23:08 2009 +0000
@@ -0,0 +1,32 @@
+<html>
+<body>
+
+<form action="/cgi-bin/reproctool/reproctool.cgi" method="post">
+    <textarea rows="5" cols="80" name="items"></textarea>
+    <table border="0" cellspacing="4">
+        <tr>
+            <td>Tritanium</td>
+            <td>Pyerite</td>
+            <td>Mexallon</td>
+            <td>Isogen</td>
+            <td>Nocxium</td>
+            <td>Zydrine</td>
+            <td>Megacyte</td>
+            <td>Morphite</td>
+        </tr>
+        <tr>
+            <td><input type="text" name="trit" value="1" size="4" /></td>
+            <td><input type="text" name="pyer" value="1" size="4" /></td>
+            <td><input type="text" name="mexa" value="1" size="4" /></td>
+            <td><input type="text" name="isog" value="1" size="4" /></td>
+            <td><input type="text" name="nocx" value="1" size="4" /></td>
+            <td><input type="text" name="zydr" value="1" size="4" /></td>
+            <td><input type="text" name="mega" value="1" size="4" /></td>
+            <td><input type="text" name="morp" value="1" size="4" /></td>
+        </tr>
+    </table>
+    <input type="submit" />
+</form>
+
+</body>
+</html>
\ No newline at end of file