From 5c1b4b72ea8552e03acf9dec61fc27dfb2cd2adf Mon Sep 17 00:00:00 2001 From: raylu Date: Sun, 20 Oct 2013 16:11:51 -0700 Subject: clean up corporation kill list --- db/queries.py | 15 ++++++- web/static/css/corporation.ccss | 24 +++++++++++ web/static/js/corporation.js | 96 +++++++++++++++++++++++++---------------- web/templates/base.html | 1 + web/templates/corporation.html | 15 ++++++- 5 files changed, 111 insertions(+), 40 deletions(-) create mode 100644 web/static/css/corporation.ccss 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 @@ + {% block css %}{% end %} {% end %} +{% block css %} + +{% end %} + {% block main %} -
+ + + + + + + + + +
timesystemvictimkiller(s)
{% end %} -- cgit v1.2.3