Created
November 8, 2016 10:07
-
-
Save naxhh/fad1afe9f5c59ef1d9a0e93aaea19cc9 to your computer and use it in GitHub Desktop.
mintos
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==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