Faction Challenge Totals

description

当前为 2018-05-29 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Faction Challenge Totals
  3. // @namespace namespace
  4. // @version 0.7.1
  5. // @description description
  6. // @author tos
  7. // @grant GM_setClipboard
  8. // @match *.torn.com/factions.php*
  9. // ==/UserScript==
  10.  
  11. const rowDelim = '\t'
  12. const colDelim = '\n'
  13.  
  14.  
  15. let copyEx = localStorage.getItem('copy_ex_members') || false
  16. const copy = (res) => {
  17. let clipboard = `User ID${rowDelim}Name${rowDelim}${res.upgrade.icon}${colDelim}`
  18. for (const group of res.contributors) {
  19. for (const member of Object.keys(group)) {
  20. if(!copyEx && group[member].exmember) continue
  21. clipboard += group[member].userid + rowDelim
  22. clipboard += group[member].playername + rowDelim
  23. clipboard += group[member].total.replace(',', '') + colDelim
  24. }
  25. }
  26. return clipboard
  27. }
  28. $(document).ajaxComplete((event, jqXHR, ajaxObj) => {
  29. if (ajaxObj.data && ajaxObj.data.includes('step=upgradeConfirm')) {
  30. const resp = JSON.parse(jqXHR.responseText)
  31. const buttonWrap = document.querySelector('#stu-confirmation .buttons-wrap')
  32. let challenge_total = 0
  33. if (resp.contributors) {
  34. for (const group of resp.contributors)
  35. for (const member of Object.keys(group))
  36. challenge_total += parseInt(group[member].total.replace(',', ''))
  37. buttonWrap.insertAdjacentHTML('beforeend', `<div class="name">Challenge Total: ${numberWithCommas(challenge_total)}</div>`)
  38. buttonWrap.insertAdjacentHTML('beforeend', `<div class="buttons"><span class="name link">Copy to clipboard</span></div>`)
  39. buttonWrap.insertAdjacentHTML('beforeend', `<span style="color: gray; padding-right: 5px;">copy exMembers</span><input id="exMembers_ck" type="checkbox">`)
  40. document.querySelector('#stu-confirmation .buttons-wrap .name.link').addEventListener('click', () => {GM_setClipboard(copy(resp))})
  41. const exBox = document.querySelector('#stu-confirmation .buttons-wrap #exMembers_ck')
  42. exBox.checked = copyEx
  43. exBox.addEventListener('change', (e) => {
  44. copyEx = e.target.checked
  45. localStorage.setItem('copy_ex_members', e.target.checked)
  46. })
  47. }
  48. }
  49. })
  50. function numberWithCommas(x) {
  51. var parts = x.toString().split(".");
  52. return parts[0].replace(/\B(?=(\d{3})+(?=$))/g, ",") + (parts[1] ? "." + parts[1] : "");
  53. }