diff options
-rw-r--r-- | db/queries.py | 15 | ||||
-rw-r--r-- | web/static/css/corporation.ccss | 24 | ||||
-rw-r--r-- | web/static/js/corporation.js | 96 | ||||
-rw-r--r-- | web/templates/base.html | 1 | ||||
-rw-r--r-- | web/templates/corporation.html | 15 |
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 %} |