summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorraylu <raylu@gridium.com>2013-10-20 16:11:51 -0700
committerraylu <raylu@gridium.com>2013-10-20 16:11:51 -0700
commit5c1b4b72ea8552e03acf9dec61fc27dfb2cd2adf (patch)
tree76c853dc800d1e26e2cb02926543ca508ed2b472
parentb41afb028a5585d5c035568024bea6f433246aa3 (diff)
downloadykill-5c1b4b72ea8552e03acf9dec61fc27dfb2cd2adf.tar.xz
clean up corporation kill list
-rw-r--r--db/queries.py15
-rw-r--r--web/static/css/corporation.ccss24
-rw-r--r--web/static/js/corporation.js96
-rw-r--r--web/templates/base.html1
-rw-r--r--web/templates/corporation.html15
5 files changed, 111 insertions, 40 deletions
diff --git a/db/queries.py b/db/queries.py
index 25dbcef..eda802a 100644
--- a/db/queries.py
+++ b/db/queries.py
@@ -13,29 +13,40 @@ def search(q):
def corporation(corp_id):
with db.cursor() as c:
kills = db.query(c, '''
- SELECT DISTINCT(kills.kill_id), kill_time FROM kills
+ SELECT DISTINCT(kills.kill_id), kill_time,
+ solarSystemName as system_name, security, regionName as region
+ FROM kills
JOIN characters ON characters.kill_id = kills.kill_id
+ JOIN eve.mapSolarSystems ON solar_system_id = solarSystemID
+ JOIN eve.mapRegions ON mapSolarSystems.regionID = mapRegions.regionID
WHERE corporation_id = ?
''', corp_id)
kill_ids = list(map(operator.itemgetter('kill_id'), kills))
char_rows = db.query(c, '''
SELECT
kill_id, victim, final_blow,
- character_id, character_name, corporation_id, corporation_name, alliance_id, alliance_name, faction_id, faction_name
+ character_id, character_name, corporation_id, corporation_name, alliance_id, alliance_name, faction_id, faction_name,
+ ship_type_id, typeName AS ship_name
FROM characters
+ JOIN eve.invTypes ON ship_type_id = typeID
WHERE kill_id IN ({})
'''.format(','.join(map(str, kill_ids))))
characters = defaultdict(dict)
+ for kill_id in kill_ids:
+ characters[kill_id]['attackers'] = 1 # count final_blow now
for char in char_rows:
kill_id = char['kill_id']
if char['victim']:
characters[kill_id]['victim'] = char
elif char['final_blow']:
characters[kill_id]['final_blow'] = char
+ else:
+ characters[kill_id]['attackers'] += 1
for kill in kills:
chars = characters[kill['kill_id']]
kill['victim'] = chars['victim']
kill['final_blow'] = chars['final_blow']
+ kill['attackers'] = chars['attackers']
return kills
def kill(kill_id):
diff --git a/web/static/css/corporation.ccss b/web/static/css/corporation.ccss
new file mode 100644
index 0000000..8ede2ef
--- /dev/null
+++ b/web/static/css/corporation.ccss
@@ -0,0 +1,24 @@
+table#kills:
+ table-layout: fixed
+ width: 900px
+
+ tr:nth-child(odd):
+ background-color: #1a1a1a
+
+ th, td:
+ white-space: nowrap
+ overflow: hidden
+ text-overflow: ellipsis
+
+ th.time:
+ width: 90px
+ th.system:
+ width: 120px
+ th.victim_portrait:
+ width: 64px
+ th.victim:
+ width: 250px
+ th.killer_portrait:
+ width: 64px
+ th.killer:
+ width: 250px
diff --git a/web/static/js/corporation.js b/web/static/js/corporation.js
index 10a1753..b19bbc3 100644
--- a/web/static/js/corporation.js
+++ b/web/static/js/corporation.js
@@ -1,49 +1,71 @@
window.addEvent('domready', function() {
var corp_id = document.location.pathname.split('/').getLast();
ykill.api('/corporation/' + corp_id, function(kills) {
- var div = $('kills');
+ var table = $('kills').getChildren('tbody')[0];
kills.each(function(kill) {
+ var tr = new Element('tr');
+
+ var kill_time = kill['kill_time'].split(' ', 2);
var a = new Element('a', {'href': '/kill/' + kill['kill_id']});
- a.appendText(kill['kill_time']);
-
- a.adopt(new Element('img', {
- 'src': '//image.eveonline.com/Character/' + kill['victim']['character_id'] + '_32.jpg',
- 'alt': kill['victim']['character_name'],
- }));
- a.appendText(kill['victim']['character_name']);
- a.adopt(new Element('img', {
- 'src': '//image.eveonline.com/Corporation/' + kill['victim']['corporation_id'] + '_32.png',
- 'alt': kill['victim']['corporation_name'],
- }));
- a.appendText(kill['victim']['corporation_name']);
- if (kill['victim']['alliance_id']) {
- a.adopt(new Element('img', {
- 'src': '//image.eveonline.com/Alliance/' + kill['victim']['alliance_id'] + '_32.png',
- 'alt': kill['victim']['alliance_name'],
- }));
- a.appendText(kill['victim']['alliance_name']);
+ a.appendText(kill_time[0]);
+ a.adopt(new Element('br'));
+ a.appendText(kill_time[1]);
+ var td = new Element('td').adopt(a);
+ tr.adopt(td);
+
+ td = new Element('td');
+ td.appendText(kill['system_name'] + ' ');
+ td.adopt(new Element('span', {'html': kill['security'].toFixed(1)}));
+ td.adopt(new Element('br'));
+ td.appendText(kill['region']);
+ tr.adopt(td);
+
+ td = new Element('td');
+ var victim = kill['victim'];
+ show_portrait(td, victim['ship_type_id'], victim['ship_name'], 'type', '_32.png');
+ show_portrait(td, victim['character_id'], victim['character_name'], 'character', '_32.jpg');
+ if (victim['faction_id']) {
+ show_portrait(td, victim['faction_id'], victim['faction_name'], 'faction', '_32.png');
}
+ tr.adopt(td);
- a.adopt(new Element('img', {
- 'src': '//image.eveonline.com/Character/' + kill['final_blow']['character_id'] + '_32.jpg',
- 'alt': kill['final_blow']['character_name'],
- }));
- a.appendText(kill['final_blow']['character_name']);
- a.adopt(new Element('img', {
- 'src': '//image.eveonline.com/Corporation/' + kill['final_blow']['corporation_id'] + '_32.png',
- 'alt': kill['final_blow']['corporation_name'],
- }));
- a.appendText(kill['final_blow']['corporation_name']);
- if (kill['final_blow']['alliance_id']) {
- a.adopt(new Element('img', {
- 'src': '//image.eveonline.com/Alliance/' + kill['final_blow']['alliance_id'] + '_32.png',
- 'alt': kill['final_blow']['alliance_name'],
- }));
- a.appendText(kill['final_blow']['alliance_name']);
+ td = new Element('td');
+ td.appendText(victim['character_name']);
+ td.adopt(new Element('br'));
+ td.appendText(victim['corporation_name']);
+ if (victim['alliance_id'])
+ td.appendText(' / ' + victim['alliance_name']);
+ if (victim['faction_id'])
+ td.appendText(' / ' + victim['faction_name']);
+ tr.adopt(td);
+
+ td = new Element('td');
+ var final_blow = kill['final_blow'];
+ show_portrait(td, final_blow['ship_type_id'], final_blow['ship_name'], 'type', '_32.png');
+ show_portrait(td, final_blow['character_id'], final_blow['character_name'], 'character', '_32.jpg');
+ if (final_blow['faction_id']) {
+ show_portrait(td, final_blow['faction_id'], final_blow['faction_name'], 'faction', '_32.png');
}
+ tr.adopt(td);
+
+ td = new Element('td');
+ td.appendText(final_blow['character_name'] + ' (' + kill['attackers'] + ')');
+ td.adopt(new Element('br'));
+ td.appendText(final_blow['corporation_name']);
+ if (final_blow['alliance_id'])
+ td.appendText(' / ' + final_blow['alliance_name']);
+ if (final_blow['faction_id'])
+ td.appendText(' / ' + final_blow['faction_name']);
+ tr.adopt(td);
- div.adopt(a);
- div.adopt(new Element('br'));
+ table.adopt(tr);
});
});
+
+ function show_portrait(el, id, text, img_dir, img_suffix) {
+ el.adopt(new Element('img', {
+ 'src': '//image.eveonline.com/' + img_dir + '/' + id + img_suffix,
+ 'alt': text,
+ }));
+ }
});
diff --git a/web/templates/base.html b/web/templates/base.html
index ffbe99b..b05a4fa 100644
--- a/web/templates/base.html
+++ b/web/templates/base.html
@@ -2,6 +2,7 @@
<html>
<head>
<link rel="stylesheet" type="text/css" href="/css/base.css" />
+ {% block css %}{% end %}
<script src="//ajax.googleapis.com/ajax/libs/mootools/1.4.5/mootools.js"></script>
<script>
window.ykill = {
diff --git a/web/templates/corporation.html b/web/templates/corporation.html
index 66eceb2..8e8e7fa 100644
--- a/web/templates/corporation.html
+++ b/web/templates/corporation.html
@@ -4,8 +4,21 @@
<script src="/static/js/corporation.js"></script>
{% end %}
+{% block css %}
+ <link rel="stylesheet" type="text/css" href="/css/corporation.css" />
+{% end %}
+
{% block main %}
-<div id="kills"></div>
+<table id="kills">
+ <tr>
+ <th class="time">time</th>
+ <th class="system">system</th>
+ <th class="victim_portrait"></th>
+ <th class="victim">victim</th>
+ <th class="killer_portrait"></th>
+ <th class="killer">killer(s)</th>
+ </tr>
+</table>
{% end %}