kill.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. window.addEvent('domready', function() {
  2. var kill_id = document.location.pathname.split('/').getLast();
  3. ykill.api('/kill/' + kill_id, function(data) {
  4. var kill = data['kill'];
  5. var victim = data['victim'];
  6. document.title += ' - ' + victim['character_name'] + ' - ' + victim['ship_name'];
  7. var table = $('victim');
  8. table.adopt(
  9. new Element('tr').adopt(
  10. new Element('td', {'html': 'time'}),
  11. new Element('td', {'html': kill['kill_time']})
  12. ),
  13. new Element('tr').adopt(
  14. new Element('td', {'html': 'system'}),
  15. new Element('td', {'html': kill['solarSystemName'] + ' (' + kill['security'].toFixed(1) + ')'})
  16. ),
  17. new Element('tr').adopt(
  18. new Element('td').grab(
  19. ykill.portrait(victim['character_id'], victim['character_name'], 'character', '_64.jpg')
  20. ),
  21. new Element('td', {'html': victim['character_name']})
  22. ),
  23. new Element('tr').adopt(
  24. new Element('td').grab(
  25. ykill.portrait(victim['corporation_id'], victim['corporation_name'], 'corporation', '_64.png')
  26. ),
  27. new Element('td', {'html': victim['corporation_name']})
  28. )
  29. );
  30. if (victim['alliance_id'])
  31. table.grab(new Element('tr').adopt(
  32. new Element('td').grab(
  33. ykill.portrait(victim['alliance_id'], victim['alliance_name'], 'alliance', '_64.png')
  34. ),
  35. new Element('td', {'html': victim['alliance_name']})
  36. ));
  37. if (victim['faction_id'])
  38. table.grab(new Element('tr').adopt(
  39. new Element('td').grab(
  40. ykill.portrait(victim['faction_id'], victim['faction_name'], 'alliance', '_64.png')
  41. ),
  42. new Element('td', {'html': victim['faction_name']})
  43. ));
  44. table.grab(new Element('tr').adopt(
  45. new Element('td').grab(
  46. ykill.portrait(victim['ship_type_id'], victim['ship_name'], 'type', '_64.png')
  47. ),
  48. new Element('td', {'html': victim['ship_name']})
  49. ));
  50. var items = data['items'];
  51. var div = $('ship');
  52. div.setStyle('background-image', 'url(//image.eveonline.com/render/' + victim['ship_type_id'] + '_256.png)');
  53. Object.each(data['slots'], function(num, slot) {
  54. var divs = $(slot).getChildren();
  55. for (var i = 0; i < num; i++)
  56. divs[i].addClass('avail');
  57. if (!items[slot])
  58. return;
  59. items[slot].each(function(item) {
  60. var div = $('slot_' + item['flag']);
  61. var bg_img = div.getStyle('background-image');
  62. if (bg_img == 'none')
  63. set_item(div, item);
  64. else {
  65. var charge_div = $('charge_' + item['flag']);
  66. if (item['capacity']) {
  67. charge_div.setStyle('background-image', bg_img);
  68. charge_div.grab(div.getChildren()[0]);
  69. set_item(div, item);
  70. } else {
  71. set_item(charge_div, item);
  72. }
  73. }
  74. });
  75. });
  76. table = $('attackers');
  77. show_attacker(table, data['final_blow']);
  78. data['attackers'].each(function(char) {
  79. show_attacker(table, char);
  80. });
  81. table = $('items');
  82. var slots = ['subsystem', 'high', 'medium', 'low', 'rig', 'drone bay', 'cargo', 'special hold', 'implant', '???'];
  83. slots.each(function(slot) {
  84. if (!items[slot])
  85. return;
  86. table.grab(new Element('tr').grab(
  87. new Element('td', {'html': slot, 'colspan': 3, 'class': 'slot'})
  88. ));
  89. if (slot == 'high') {
  90. var highs = {'dropped': {}, 'destroyed': {}};
  91. items[slot].each(function(item) {
  92. var d = item['dropped'] ? 'dropped' : 'destroyed';
  93. var count = item[d];
  94. if (highs[d][item['type_id']])
  95. highs[d][item['type_id']][d] += item[d];
  96. else
  97. highs[d][item['type_id']] = item;
  98. });
  99. items[slot] = [];
  100. Object.each(highs, function(item_class) {
  101. Object.each(item_class, function(item) {
  102. items[slot].push(item);
  103. });
  104. });
  105. }
  106. items[slot].each(function(item) {
  107. var type_id = item['type_id'];
  108. var item_class = item['dropped'] ? 'dropped' : 'destroyed';
  109. var count = item[item_class];
  110. table.grab(new Element('tr').adopt(
  111. new Element('td').grab(
  112. new Element('img', {
  113. 'src': '//image.eveonline.com/Type/' + type_id + '_32.png',
  114. 'alt': item['item_name'],
  115. })
  116. ),
  117. new Element('td', {'html': item['item_name']}),
  118. new Element('td', {'html': count, 'class': item_class})
  119. ));
  120. });
  121. });
  122. });
  123. function set_item(div, item) {
  124. div.setStyle('background-image', 'url(//image.eveonline.com/type/' + item['type_id'] + '_32.png)');
  125. div.grab(new Element('div', {'class': 'tooltip', 'html': item['item_name']}));
  126. }
  127. function show_attacker(table, char) {
  128. var tr = new Element('tr');
  129. var td = new Element('td');
  130. td.grab(ykill.portrait(char['character_id'], char['character_name'], 'character', '_32.jpg'));
  131. if (char['alliance_id'])
  132. td.grab(ykill.portrait(char['alliance_id'], char['alliance_name'], 'alliance', '_32.png'));
  133. else if (char['faction_id'])
  134. td.grab(ykill.portrait(char['faction_id'], char['faction_name'], 'alliance', '_32.png'));
  135. else
  136. td.grab(ykill.portrait(char['corporation_id'], char['corporation_name'], 'corporation', '_32.png'));
  137. tr.grab(td);
  138. td = new Element('td');
  139. td.appendText(char['character_name']);
  140. td.grab(new Element('br'));
  141. td.appendText(char['corporation_name']);
  142. if (char['alliance_id']) {
  143. td.grab(new Element('br'));
  144. td.appendText(char['alliance_name']);
  145. }
  146. if (char['faction_id']) {
  147. td.grab(new Element('br'));
  148. td.appendText(char['faction_name']);
  149. }
  150. tr.grab(td);
  151. td = new Element('td').adopt(
  152. ykill.portrait(char['ship_type_id'], char['ship_name'], 'type', '_32.png'),
  153. ykill.portrait(char['weapon_type_id'], char['weapon_name'], 'type', '_32.png')
  154. );
  155. tr.grab(td);
  156. tr.grab(new Element('td').appendText(char['damage']));
  157. table.grab(tr);
  158. }
  159. });