NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Bankmanagergame - Kreditrating
// @namespace http://scripte.georglink.de/
// @description Fuegt bei den Krediten ein Rating ein.
// @author Georg J.P. Link
// @include http://bankmanagergame.de/index.php?section=kredite*
// @include http://www.bankmanagergame.de/index.php?section=kredite*
// ==/UserScript==
var $;
// Add jQuery
(function(){
if (typeof unsafeWindow.jQuery == 'undefined') {
var GM_Head = document.getElementsByTagName('head')[0] || document.documentElement,
GM_JQ = document.createElement('script');
GM_JQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
GM_JQ.type = 'text/javascript';
GM_JQ.async = true;
GM_Head.insertBefore(GM_JQ, GM_Head.firstChild);
}
GM_wait();
})();
// Check if jQuery's loaded
function GM_wait() {
if (typeof unsafeWindow.jQuery == 'undefined') {
window.setTimeout(GM_wait, 100);
} else {
$1 = unsafeWindow.jQuery;
rating();
}
}
// calculate Rating and insert into Table
function rating() {
$1('#listOfCredits thead tr').append('<th class="header scripttresorbilanz">Rating</th>');
// formatiert die Ertragsaussicht mit Tausender Trennzeichen
function Trenner(number) {
// Info: Die '' sind zwei Hochkommas
number = '' + number;
teile = number.split(".");
ganze = teile[0];
if (teile[1]){
komma = teile[1];
} else {
komma = "00";
}
while(komma.length <2) {
komma += "0";
}
komma = komma.substr(0,2);
if (ganze.length > 3) {
var mod = ganze.length % 3;
var output = (mod > 0 ? (ganze.substring(0,mod)) : '');
for (i=0 ; i < Math.floor(ganze.length / 3); i++) {
if ((mod == 0) && (i == 0))
output += ganze.substring(mod+ 3 * i, mod + 3 * i + 3);
else
// hier wird das Trennzeichen festgelegt mit '.'
output+= '.' + ganze.substring(mod + 3 * i, mod + 3 * i + 3);
}
return (output+','+komma);
}
else return teile[0]+','+komma;
}
// Adding Heading for Rating column
$1('#listOfCredits thead tr').append('<th class="scriptRating">Rating</th>');
//Allgemeine Daten, Max-Tresorlimit, Max-Kredite
// var all_content = $1('#content').text();
//Max-Tresorlimit
// var maxtresor_regex1 = /\(max\..*[0-9]{1,3}(\.[0-9]{3})*.*\)/;
// if (maxtresor_regex1.test(all_content)){
// var maxtresor_1 = '' + all_content.match(maxtresor_regex1)[0];
// var maxtresor_regex2 = /[0-9]{1,3}(\.[0-9]{3})*/;
// if (maxtresor_regex2.test(maxtresor_1)){
// var maxtresor_2 = '' + maxtresor_1.match(maxtresor_regex2,$1)[0];
// var maxtresor_2 = parseFloat(maxtresor_2.replace(/\./g, ""));
// } else {
// var maxtresor_2 = -1;
// }
// max_tresor = maxtresor_2;
// } else {
// max_tresor = -1;
// }
// Aktueller Geldbestand
// var geldaktuell_regex1 = /[0-9]{1,3}(\.[0-9]{3})*,[0-9]{2}/;
// if (geldaktuell_regex1.test(all_content)){
// var geldaktuell_1 = all_content.match(geldaktuell_regex1)[0] + '';
// geldaktuell = parseFloat(geldaktuell_1.replace(/\./g, "").replace(/,/, "."));
// } else {
// geldaktuell = -1;
// }
// Noch zu vergebende Kredite
// var kreditnum_regex = /([0-9]+) \/ ([0-9]+) Kredite vergeben/;
// if (kreditnum_regex.test(all_content)){
// var kreditnum = all_content.match(kreditnum_regex);
// kreditnum_max = parseInt(kreditnum[2]);
// kreditnum_weg = parseInt(kreditnum[1]);
// } else {
// kreditnum = -1;
// }
//alert(kreditnum_weg +" von " +kreditnum_max+" Krediten");
// berechner fuer jeden Kredit
$1('#listOfCredits tbody tr').each(function ( ) {
// extrahiere alle Werte aus Tabelle
werte = new Array;
i=0;
$1(this).children().each(function () {
werte[i] = $1(this).text();
i++
});
// Aufbereitung der Werte
var volume = parseFloat(werte[1].replace(" k","000").replace(/\./g, "").replace(/,/, "."));
var interest_rate = parseFloat(werte[2].replace(/,/, "."))/100;
var end_time = werte[3]
var days_regex = /(\d+) Tage/;
if (days_regex.test(end_time)){
var days = parseInt(end_time.match(days_regex,$1)[1]);
} else {
var days = 0;
}
var hours_regex = /(\d+) Std/;
if (hours_regex.test(end_time)){
var hours = parseInt(end_time.match(hours_regex,$1)[1]);
} else {
var hours = 0;
}
var minutes_regex = /(\d+) Min/;
if (minutes_regex.test(end_time)){
var minutes = parseInt(end_time.match(minutes_regex,$1)[1]);
} else {
var minutes = 0;
}
var seconds_regex = /(\d+) Sek/;
if (seconds_regex.test(end_time)){
var seconds = parseInt(end_time.match(seconds_regex,$1)[1]);
} else {
var seconds = 0;
}
var durance = days +hours/24 + minutes/(24*60) + seconds/(24*60*60);
var gewinn_total = parseFloat(werte[4].replace(/\./g, "").replace(/,/, "."));
var gewinn_perhour = parseFloat(werte[5].replace(/\./g, "").replace(/,/, "."));
var risk_rate = parseFloat(werte[6].replace(/,/, "."))/100;
// Errechne das Grund-Rating
var rating = ((1-risk_rate)*(volume+gewinn_total) - risk_rate * volume - volume) / (volume * durance) * 100;
// Adjustierung
rating = rating + (0.10 - Math.max(0.10, risk_rate))*50;
if(risk_rate < 0.7) {
rating = rating + (interest_rate)*10;
}
rating = Math.round(rating*1000)/1000
rating = '' + rating;
teile = rating.split(".");
ganze = teile[0];
if (teile[1]){
komma = teile[1];
} else {
komma = "000";
}
while(komma.length <3) {
komma += "0";
}
rating = ganze + "," + komma;
//trage Rating in tabelle ein.
$1(this).append('<td class="scriptRating">'+rating+'</td>');
});
// Summe aller Kredite und erwarteter Gewinne
gesamt_kreditvolumen = new Array;
gesamt_kreditvolumen[0] = 0;
gesamt_kreditvolumen[1] = 0;
gesamt_kreditvolumen[2] = 0;
// hole Werte aller vergebenen Kredite
$1('#tablesorter tbody tr').each(function ( ) {
// extrahiere alle Werte aus Tabelle
werte = new Array;
i=0;
$1(this).children().each(function () {
werte[i] = $1(this).text();
i++
});
// Aufbereitung der Werte
gesamt_kreditvolumen[1] += parseFloat(werte[0].replace(/\./g, "").replace(/,/, "."));
gesamt_kreditvolumen[2] += parseFloat(werte[3].replace(/\./g, "").replace(/,/, "."));
});
gesamt_kreditvolumen[0] = gesamt_kreditvolumen[1] + gesamt_kreditvolumen[2];
gesamt_kreditvolumen[0] = Math.round(gesamt_kreditvolumen[0]*100)/100;
gesamt_kreditvolumen[1] = Math.round(gesamt_kreditvolumen[1]*100)/100;
gesamt_kreditvolumen[2] = Math.round(gesamt_kreditvolumen[2]*100)/100;
// Ausgabe
var newNode = document.createElement("div");
newNode.textContent = "tt"; //;
newNode.setAttribute("style" , "margin: 5px 0;");
newNode.setAttribute("id" , "gesamtertrag");
var beforeMe = document.getElementById("tablesorter");
beforeMe.parentNode.insertBefore( newNode, beforeMe )
$1("#gesamtertrag").html('<table><tr><td>Gesamtkreditvolumen:</td><td><span style="color:green;">' + Trenner(gesamt_kreditvolumen[1]) + ' €</span></td></tr><tr><td>erwarteter Gewinn</td><td><span style="color:green;">' + Trenner(gesamt_kreditvolumen[2]) + ' €</span></td></tr><tr><td>SUMME:</td><td><span style="color:green;font-weight:bold;">' + Trenner(gesamt_kreditvolumen[0]) + ' €</span></td></tr></table> ');
}
$1('#listOfCredits th:contains("Zinzsatz (pro Tag)")').text("Zinsen");
$1('#listOfCredits th:contains("Gew. pro 24h")').text("gpd");