kill.js 5.3 KB

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