Advertisement
Guest User

Untitled

a guest
May 14th, 2015
551
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.33 KB | None | 0 0
  1. <html>
  2. <head>
  3. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  4. <title>Entropia Universe Inventory Diff Tool</title>
  5. <script>
  6.  
  7. function fstr (s, n) {
  8. return s + Array(n - s.length).join(' ');
  9. }
  10.  
  11. function fnumu (x, m, n) {
  12. var s = x.toFixed(m);
  13. if (typeof n == 'undefined') return s;
  14. return Array(n + 2 - s.length).join(' ') + s;
  15. }
  16.  
  17. function fnum (x, m, n) {
  18. var s = ((x > 0) ? '+' : '') + x.toFixed(m);
  19. if (typeof n == 'undefined') return s;
  20. return Array(n + 2 - s.length).join(' ') + s;
  21. }
  22.  
  23. function fline (t, q, v, f) {
  24. if (f == 'f') return "[tr][td]" + t + "[/td][td][right]" + fnum(q, 0) + "[/right][/td][td][right]" + fnum(v, 2) + " PED[/right][/td][/tr]\n";
  25. if (f == 's') return t + "\t" + q + "\t" + fnum(v, 2) + "\n";
  26. return fstr(t, 50) + fnum(q, 0, 7) + fnum(v, 2, 9) + " PED\n";
  27. }
  28.  
  29. function fcsum (t, r, f, n1, n2) {
  30. if (f == 'f') return "[tr][td]" + t + "[/td][td].[/td][td][/td][td][right]" + fnum(r, 2) + " PED[/right][/td][/tr]\n";
  31. if (f == 't') return fstr(t, 58) + fnum(r, 2, 9) + " PED\n";
  32. return t + "\t\t=SUM(C" + n1 + ":C" + n2 + ")\n";
  33. }
  34.  
  35. function ftsum (t, p, r, f, n1, n2) {
  36. if (f == 'f') return "[tr][td]" + t + "[/td][td][right]" + fnumu(p, 2) + "%[/right][/td][td][right]" + fnum(r, 2) + " PED[/right][/td][/tr]\n";
  37. if (f == 't') return fstr(t, 50) + fnumu(p, 2, 6) + "%" + fnum(r, 2, 9) + " PED\n";
  38. return t + "\t" + fnumu(p, 2) + "%\t" + fnum(r, 2) + "\n";
  39. }
  40.  
  41. function fhead (f) {
  42. if (f == 'f') return "[table]\n";
  43. return "";
  44. }
  45.  
  46. function ffoot (r, p, f, n1, n2) {
  47. if (f == 's') return "Result\t=ABS(C" + n2 + "/C" + n1 + ")\t=C" + n1 + "+C" + n2 + "\n";
  48. return ftsum("Result", p, r, f) + ((f == 'f') ? "[/table]" : "");
  49. }
  50.  
  51. function fempty (f) {
  52. if (f == 'f') return "[tr][td].[/td][td].[/td][td].[/td][/tr]\n";
  53. return "\n";
  54. }
  55.  
  56. function cdiff () {
  57. var diff = [];
  58. var re = /^\d+\s+(.*?)\s+(\d+)\s+(\d+\.\d+)\s+PED/gm;
  59. var e;
  60. while ((e = re.exec(document.frm.after.value)) !== null) {
  61. if (diff[e[1]]) {
  62. diff[e[1]].q += parseInt(e[2]);
  63. diff[e[1]].v += parseFloat(e[3]);
  64. }
  65. else diff[e[1]] = {q: parseInt(e[2]), v: parseFloat(e[3])};
  66. }
  67. while ((e = re.exec(document.frm.before.value)) !== null) {
  68. if (diff[e[1]]) {
  69. diff[e[1]].q -= parseInt(e[2]);
  70. diff[e[1]].v -= parseFloat(e[3]);
  71. }
  72. else diff[e[1]] = {q: -parseInt(e[2]), v: -parseFloat(e[3])};
  73. }
  74. var c = d = '';
  75. var g = h = n1 = n2 = 0;
  76. var f = document.frm.format.value;
  77. for (var p in diff) {
  78. if (!diff.hasOwnProperty(p)) continue;
  79. if (Math.abs(diff[p].q) == 0 && Math.abs(diff[p].v) < 0.01) continue;
  80. if (diff[p].q <= 0) {
  81. h += diff[p].v;
  82. c += fline(p, diff[p].q, diff[p].v, f);
  83. n1++;
  84. }
  85. else {
  86. g += diff[p].v;
  87. d += fline(p, diff[p].q, diff[p].v, f);
  88. n2++;
  89. }
  90. }
  91. c += fcsum('Total expenses', h, f, 1, n1) + fempty(f);
  92. d += fcsum('Total returns', g, f, n1+3, n1+2+n2) + fempty(f);
  93. document.frm.result.value = fhead(f) + c + d + ffoot(g + h, Math.abs(g / h) * 100, f, n1+1, n1+2+n2+1);
  94. return false;
  95. }
  96. </script>
  97. </head>
  98. <body>
  99. <h2>Entropia Universe Inventory Diff Tool</h2>
  100. <p><a href="https://account.entropiauniverse.com/account/my-account/my-items/" target="_blank">My items</a> &nbsp; / &nbsp;
  101. <a href="http://arkadiaforum.com/threads/a-geeky-tool-for-measuring-eco.12205/" target="_blank">Instructions</a></p>
  102. <form name="frm" method="post" onsubmit="return cdiff()">
  103. <p></p>Before:<br/><textarea name="before" cols="100" rows="10"></textarea></p>
  104. <p></p>After:<br/><textarea name="after" cols="100" rows="10"></textarea></p>
  105. <p><input type="submit" value="Calculate difference"></p>
  106. <p></p>Result (format as
  107. <input type="radio" name="format" value="f" onchange="return this.form.result.value.length && cdiff()"> forum table &nbsp;/
  108. <input type="radio" name="format" value="s" onchange="return this.form.result.value.length && cdiff()"> spreadsheet &nbsp;/
  109. <input type="radio" name="format" value="t" checked="checked" onchange="return this.form.result.value.length && cdiff()"> plain text):<br/>
  110. <textarea name="result" cols="100" rows="10"></textarea></p>
  111. </form>
  112. <p><small>Author: Sandal San Tolk</small></p>
  113. </body>
  114. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement