· 6 years ago · Jan 05, 2020, 06:34 AM
1// ==UserScript==
2// @name Stock Autofill
3// @namespace PapaAndreas [2169463]
4// @version 1.0
5// @description Autofills the values in the stock order page of a company
6// @author PapaAndreas [2169463]
7// @match https://www.torn.com/companies.php
8// @updateURL https://openuserjs.org/meta/PapaAndreas/Stock_Autofill.meta.js
9// @license MIT
10// @run-at document-end
11// @grant GM_setValue
12// @grant GM_getValue
13// @grant GM_xmlhttpRequest
14// @connect api.torn.com
15// ==/UserScript==
16
17$(document).ajaxComplete((event, jqXHR, ajaxObj) => {
18 if (jqXHR.responseText) {
19 handle(jqXHR.responseText);
20 }
21});
22
23function handle(responseText) {
24 if (responseText.trim().startsWith('<div id="stock_message"')) {
25 var API_KEY = GM_getValue("API_KEY", "Key");
26 if ($("#apikey").length == 0) {
27 $('<input>').attr({
28 type: 'text',
29 id: 'apikey',
30 value: API_KEY
31 }).appendTo('#stock');
32 var fillButton = $('<input type="button" class="btn-wrap silver" value="Autofill"/>');
33 fillButton.appendTo('#stock');
34 fillButton.click(function () {
35 API_KEY = $("#apikey").first().val();
36 GM_xmlhttpRequest({
37 method: "GET",
38 url: "https://api.torn.com/company?selections=detailed&key=" + API_KEY,
39 onload: function (data) {
40 data = JSON.parse(data.response);
41 var storageSpace = data.company_detailed.upgrades.storage_space;
42 var storageSpaceAvailable = storageSpace;
43 if (storageSpace) { //API call was successfull:
44 GM_setValue("API_KEY", API_KEY);
45 }
46 GM_xmlhttpRequest({
47 method: "GET",
48 url: "https://api.torn.com/company?selections=stock&key=" + API_KEY,
49 onload: function (data) {
50 data = JSON.parse(data.response);
51 var totalSold = 0;
52 $.each(data.company_stock, function (index, value) {
53 totalSold += value.sold_amount;
54 var stock = (value.on_order + value.in_stock);
55 if (stock > 0) storageSpaceAvailable -= stock;
56 });
57
58 var totalStocksNeeded = 0;
59 $.each(data.company_stock, function (index, value) {
60 var sellingPercentage = value.sold_amount / totalSold;
61 var stocksNeeded = (sellingPercentage * storageSpace) - (value.on_order + value.in_stock);
62 if (stocksNeeded > 0) {
63 totalStocksNeeded += stocksNeeded;
64 }
65 });
66 var freeSpaceFactor = storageSpaceAvailable / totalStocksNeeded;
67 $.each(data.company_stock, function (index, value) {
68 var sellingPercentage = value.sold_amount / totalSold;
69 var stocksNeeded = (sellingPercentage * storageSpace) - (value.on_order + value.in_stock);
70 if (stocksNeeded > 0) {
71 stocksNeeded *= freeSpaceFactor;
72 $('div:contains("' + index + '")').last().parent().find("input").val(Math.floor(stocksNeeded)).change();
73 }
74 });
75 }
76 });
77 }
78 });
79 });
80 }
81 }
82}