Untitled
unknown
javascript
3 years ago
4.1 kB
0
Indexable
// ==UserScript== // @name zKill page kill sum // @namespace http://tampermonkey.net/ // @version 0.2 // @description Sums up your kills & losses // @author Skipp Doe // @match https://zkillboard.com/character/* // @match https://zkillboard.com/corporation/* // @match https://zkillboard.com/alliance/* // @grant none // ==/UserScript== (function() { 'use strict' var isMouseDown = false; // add styling $('head').append('<style type="text/css">.zkill-total-sum-info{display:flex}.uncheck-all{margin:0 8px 8px 20px}.check-all{margin-right:8px}.check-all,.uncheck-all{font-size:14px;cursor:pointer}.zkill-page-kill-sum{margin-left:8px;font-size:14px;font-weight:700;color:#b9b9b9}.total-kills{color:green}.total-losses{color:#a90707}.km-chbox{cursor:pointer;position: absolute;left:-30px;transform: scale(2);}.ad-xl-block{display:none;}</style>') // add checkboxes to kills $('.killListRow.winwin td:first-child').prepend('<input type="checkbox" class="km-chbox" checked="true">') // disable zKill row click propagation because who uses click listeners to propagate URLs in 2021?!?! (ノಠ益ಠ)ノ彡┻━┻ $('.km-chbox').on('click', function(e){ e.stopPropagation() calculateKms() }) // handle check/uncheck all $('.container').on('click', '.check-all', function(){ $('.km-chbox').prop('checked', true) calculateKms() }) $('.container').on('click', '.uncheck-all', function(){ $('.km-chbox').prop('checked', false) calculateKms() }) //Dragging support $(".km-chbox").mousedown(function() { isMouseDown = true; lastMouseDownElem = $(this); console.log('(un)checking box'); $(this).prop('checked', !$(this).is(':checked')); }); $(document).mouseup(function() { isMouseDown = false; }); $(".km-chbox").mouseenter(function() { if (isMouseDown) { console.log('(un)checking ', $(this) , ' current state: ', $(this).is(':checked')); $(this).prop('checked', !$(this).is(':checked')); } }); function calculateKms(){ const killValues = [] const lossValues = [] // get all the ISK values from kills $('.km-chbox:checked').closest('td').find('a').each(function(){ killValues.push(parseKill($(this).text())) }) // get all the ISK values from losses $('.killListRow.error td:first-child a').each(function(){ lossValues.push(parseKill($(this).text())) }) // sum it up const killSum = `${(sum(killValues) / 1000000000).toFixed(2)}b ISK (${killValues.length})` const lossSum = `${(sum(lossValues) / 1000000000).toFixed(2)}b ISK (${lossValues.length})` // update existing placeholders if they're already there if($('.zkill-page-kill-sum').length){ $('.total-kills').text(killSum) $('.total-losses').text(lossSum) } // spank them in if they're not else{ $('#killmailstobdy').closest('table').before(`<div class="zkill-total-sum-info"><span class="uncheck-all">☐ Uncheck all</span><span class="check-all">☑ Check all</span> <span class="zkill-page-kill-sum">Destroyed: <span class="total-kills">${killSum}</span> | Lost: <span class="total-losses">${lossSum}</span></span></div>`) } } // checks the strings provided and multiplies the values accordingly function parseKill(killValue){ const multiplyer = killValue.endsWith('k') ? 1000 : killValue.endsWith('m') ? 1000000 : killValue.endsWith('b') ? 1000000000 : 1 // remove k/m/b and commas on ubercheap KMs like velators (*cries in Pacifiers*) return multiplyer * killValue.replace(/\,/g,'').slice(0, -1) } function sum(values){ return values.reduce((a, b) => a + b, 0) } // calculate stuff on page load calculateKms() })();
Editor is loading...