Skip to content

Instantly share code, notes, and snippets.

@naxhh
Created November 8, 2016 10:07
Show Gist options
  • Save naxhh/fad1afe9f5c59ef1d9a0e93aaea19cc9 to your computer and use it in GitHub Desktop.
Save naxhh/fad1afe9f5c59ef1d9a0e93aaea19cc9 to your computer and use it in GitHub Desktop.
mintos
// ==UserScript==
// @name MoneyMeikah2
// @namespace https://www.mintos.com
// @version 0.1
// @description Calculates the profit generated on each loan and profit per day
// @author DonNadie
// @match https://www.mintos.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
var waitDataInterval, investment;
function addHeader(title) {
$('#primary-market-table thead tr th:last-child').after('<th class="sortable global-align-right"><a href="javascript:;">' + title + '</a></th>');
}
function addInvestmentField() {
if ($('#money-to-invest').length > 0) return;
$('#investor-username-wrapper').after('<li class="delimiter"></li><li style="width:20%"><input type="number" id="money-to-invest" value="10"></input></li>');
$('#money-to-invest').on("change", function() {
investment = undefined;
calc();
});
}
function getInvestmentValue() {
if (investment === undefined) {
investment = parseFloat($('#money-to-invest').val());
}
return investment;
}
function parseDate(date) {
var remainingDays;
if (date == "Late") {
remainingDays = 0;
} else if (date.indexOf("m") !== -1) { // 34 m. 23 d.
var monthsToDays = parseInt(date) * 30;
remainingDays = parseInt(date.split("m. ")[1]) + monthsToDays;
} else {
remainingDays = parseInt(date);
}
return remainingDays;
}
function getDOMData(element) {
var anualInterest, remainingDays;
anualInterest = parseFloat($(element).children('.m-loan-interest').text());
remainingDays = parseDate($(element).children('.m-loan-term').children('span').text().trim());
return {
'invested': getInvestmentValue(),
'interest': (remainingDays * anualInterest) / 365,
'remainingDays': remainingDays
};
}
function getProfit(data) {
return (((data.invested * data.interest) / 100)).toFixed(2);
}
function getProfitPerDay(data, profit) {
if (data.remainingDays == 0) {
return 0;
}
return (profit / data.remainingDays).toFixed(4);
}
function displayData(element, data) {
var $element = $(element);
if ($element.children('.real-profit').length > 0) {
$element.children('.real-profit').text(data.profit);
$element.children('.real-profit-per-day').text(data.profitPerDay);
} else {
$element.children('td:last-child')
.after('<td class="global-align-right m-labeled-col mod-highlighted real-profit">' + data.profit + '</td>');
$element.children('td:last-child')
.after('<td class="global-align-right m-labeled-col mod-highlighted real-profit-per-day">' + data.profitPerDay + '</td>');
}
}
function waitForData(cb)
{
if (waitDataInterval !== undefined) {
clearInterval(waitDataInterval);
waitDataInterval = undefined;
}
waitDataInterval = setInterval(function () {
if (!$('#filter-button').hasClass("loading") && $('#primary-market-table tbody tr').length > 0) {
clearInterval(waitDataInterval);
cb();
}
}, 500);
return;
}
function calc() {
$('#primary-market-table tbody tr').each(function() {
var DOMData, data, profit;
DOMData = getDOMData(this);
profit = getProfit(DOMData);
data = {
'profit': profit,
'profitPerDay': getProfitPerDay(DOMData, profit),
'interest': DOMData.interest
};
displayData(this, data);
});
}
function init() {
console.log('init');
addHeader('Return');
addHeader('Daily Return');
addInvestmentField();
calc();
}
waitForData(init);
$('#filter-button').on("click", function () {
waitForData(init);
});
$('.pager-button-next').on("click", function () {
waitForData(init);
});
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment