Company Trainer

company training tracker

// ==UserScript==
// @name         Company Trainer
// @namespace    trainer.zero.torn
// @version      0.4
// @description  company training tracker
// @author       nao
// @match        https://www.torn.com/companies.php*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=torn.com
// @grant        GM_addStyle
// ==/UserScript==

GM_addStyle(`
.trainOrder {
width: 100%;
}

`);

let trains = getData();

function getData() {
  let tempValue = localStorage.trainsOrdered || "{}";
  tempValue = JSON.parse(tempValue);
  return tempValue;
}

function updateData() {
  console.log(trains);
  localStorage.trainsOrdered = JSON.stringify(trains);
}

function update() {
  trains = getData();
  $(".trainOrder").each(function () {
    let val = $(this).attr("value") || 0;
    console.log(`Value ${val}`);
    let userId = $(this).attr("userid");

    trains[userId] = val;
  });
  console.log(trains);
  updateData();
  updateDisplayValue();
}

function updateDisplayValue() {
  let currTrains = getData();

  $(".trainOrder").each(function () {
    let uid = $(this).attr("userid");
    let nTrains = currTrains[uid] || 0;

    $(this).attr("value", parseInt(nTrains));
  });
}

function train(id) {
  console.log(`Training ${id}`);
  $.post(
    `https://www.torn.com/companies.php?rfcv=${getRFC()}`,
    {
      step: "trainemp2",
      ID: id,
    },
    function (response) {
      response = JSON.parse(response);
      if (response.success) {
        trains[id]--;
      }
      if (trains[id] <= 0) {
        $(".train", $(`li[data-user="${id}"]`)).html("N/A");
      }
      updateData();
      updateDisplayValue();
      console.log(response);
    },
  );
}
let displayUpdated = false;
function updateTrainDisplay() {
  if (displayUpdated) {
    return;
  }

  if ($(".torn-btn", $(".fire")).length > 0) {
    GM_addStyle(`

        .zeroTrain {
        width: 110px;
        margin: 10px 0px 10px 10px;
        }
`);
  }
}

function insert() {
  let url = window.location.href;
  if (!url.includes("employees")) {
    return;
  }

  if ($(".employee-list > li").length > 0) {
    $(".employee-list > li:not([processed])").each(function () {
      console.log("here");
      let userid = $(this).attr("data-user");
      $(".days", $(this)).html(
        `<input type="text" userid="${userid}" class="trainOrder">`,
      );

      if (trains[userid] && trains[userid] > 0) {
        $(".train", $(this)).on("click", function (e) {
          e.stopPropagation();
          e.preventDefault();
          train(userid);
        });
      } else {
        $(".train", $(this)).html("N/A");
      }
      $(this).attr("processed", true);
      updateDisplayValue();
    });
    if ($("#updateTrains").length == 0) {
      $("div.title:nth-child(1)").append(
        `<button id="updateTrains" class="torn-btn">Update Trains</button>`,
      );
      $("#updateTrains").on("click", function () {
        update();
      });
    }
  }
  setTimeout(insert, 1000);
}

$(window).on("hashchange", function (e) {
  insert();
});

insert();