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");