NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Export BBCODE mmorpg-stat
// @namespace https://www.mmorpg-stat.eu/comparaison.php?*
// @version 1.0.3
// @description Generate an export in BBOCDE from the table of comparison for forum.
// @author Choubakawa (Ogame.fr uni Fornax)
// @match https://www.mmorpg-stat.eu/comparaison.php?*
// @supportURL https://github.com/Choubakawa/Export-BBCODE-mmorpg-stat/issues
// @updateURL https://openuserjs.org/meta/Choubakawa/Export_BBCODE_mmorpg-stat.meta.js
// @downloadURL https://openuserjs.org/install/Choubakawa/Export_BBCODE_mmorpg-stat.user.js
// @license MIT
// ==/UserScript==
var title = $.trim( $( document.getElementsByTagName('table')[11].getElementsByTagName('tbody')[0] ).text() );
var thead = $('#myTable > thead');
var colTheadLength = thead[0].rows[0].cells.length;
var tbody = $('#myTable > tbody');
var rowTbodyLength = tbody[0].rows.length;
var sameAlliance = true;
let titlePseudo = $.trim( $(thead[0].rows[0].cells[0]).text() );
titlePseudo = titlePseudo.substr(0,1).toUpperCase()+titlePseudo.substr(1);
let titleAlliance = $.trim( $(thead[0].rows[0].cells[1]).text() );
titleAlliance = titleAlliance.substr(0,1).toUpperCase()+titleAlliance.substr(1);
let titlePlace = $.trim( $(thead[0].rows[0].cells[2]).text() );
titlePlace = titlePlace.substr(0,1).toUpperCase()+titlePlace.substr(1);
let titleProgPlaceOfDay = "+/-";
let titlePoints = $.trim( $(thead[0].rows[0].cells[4]).text() );
titlePoints = titlePoints.substr(0,1).toUpperCase()+titlePoints.substr(1);
let titleProgPointsOfDay = "+/-";
let titlePeriode = $.trim( $(thead[0].rows[0].cells[6]).text() );
titlePeriode = titlePeriode.substr(0,1).toUpperCase()+titlePeriode.substr(1);
let titleProgPoint = $.trim( $(thead[0].rows[0].cells[7]).text() );
titleProgPoint = titleProgPoint.substr(0,1).toUpperCase()+titleProgPoint.substr(1);
let titlePourcentage = $.trim( $(thead[0].rows[0].cells[8]).text() );
titlePourcentage = titlePourcentage.substr(0,1).toUpperCase()+titlePourcentage.substr(1);
let titleProgPointPerDay = $.trim( $(thead[0].rows[0].cells[9]).text() );
titleProgPointPerDay = titleProgPointPerDay.substr(0,1).toUpperCase()+titleProgPointPerDay.substr(1);
let cookie = getValueInCookie( "checkedCols");
if( cookie.length !== 0 ) {
cookie = JSON.parse( cookie );
}
//add checkboxes to table
var checkboxes = $('<tr></tr>');
for(var j=0; j<colTheadLength; j++){
var col = thead[0].rows[0].cells[j];
let id = 'colStat'+j;
let checked = "";
if( cookie.length !== 0 ) {
checked = cookie[j];
} else {
checked = "checked";
}
if( j != 6 )
$( checkboxes ).append( '<td><input type="checkbox" id="'+id+'" '+ checked +'/></td>' );
else
$( checkboxes ).append( '<td><input type="checkbox" id="colStat'+j+'" /></td>' );
}
thead.append( checkboxes );
$( '#myTable' ).append( '<tfoot><tr><td colspan="10"><input type="button" id="exportButton" value="Export" /></td></tr></tfoot>' );
function getPlayers() {
let players = [];
//get infos players
for(let i=0; i<rowTbodyLength; i++){
var row = tbody[0].rows[i];
let player = {
pseudo : $.trim($( row.cells[0] ).text() ),
alliance : $.trim($( row.cells[1] ).text().replace('[','').replace(']','') ),
place : $.trim($( row.cells[2] ).text() ),
progPlaceOfDay : $.trim($( row.cells[3] ).text().replace('(','').replace(')','') ),
point : $.trim($( row.cells[4] ).text() ),
progPointOfDay : $.trim($( row.cells[5] ).text().replace('(','').replace(')','') ),
periode : $.trim($( row.cells[6] ).text() ),
progPoint : $.trim($( row.cells[7] ).text() ),
pourcentage : $.trim($( row.cells[8] ).text().replace('(','').replace(')','') ),
progPointPerDay : $.trim($( row.cells[9] ).text() ),
};
players.push( player );
}
for( let y = 1; y<players.length; y++ ) {
if( players[y-1].alliance !== players[y].alliance ) {
sameAlliance = false;
break;
}
}
if( sameAlliance ) {
$('#colStat1').prop('checked', false);
}
return players;
}
function generate( players ) {
let thPseudo = $('#colStat0').is(':checked') ? "[td]"+titlePseudo+"[/td]" : "";
let thAlliance = "";
let thPlace = $('#colStat2').is(':checked') ? "[td]"+titlePlace+"[/td]" : "";
let thProgPlaceOfDay = $('#colStat3').is(':checked') ? "[td]"+titleProgPlaceOfDay+"[/td]" : "";
let thPoints = $('#colStat4').is(':checked') ? "[td]"+titlePoints+"[/td]" : "";
let thProgPointsOfDay = $('#colStat5').is(':checked') ? "[td]"+titleProgPointsOfDay+"[/td]" : "";
let thPeriode = $('#colStat6').is(':checked') ? "[td]"+titlePeriode+"[/td]" : "";
let thProgPoint = $('#colStat7').is(':checked') ? "[td]"+titleProgPoint+"[/td]" : "";
let thPourcentage = $('#colStat8').is(':checked') ? "[td]"+titlePourcentage+"[/td]" : "";
let thProgPointPerDay = $('#colStat9').is(':checked') ? "[td]"+titleProgPointPerDay+"[/td]" : "";
let allianceTitle = "";
if( !sameAlliance ) {
thAlliance = $('#colStat1').is(':checked') ? "[td]"+titleAlliance+"[/td]" : "";
} else {
allianceTitle = " " + titleAlliance + ": [color=#8AD9FF][i]["+players[0].alliance+"][/i][/color] ";
}
let bbcode = "[center][b]" + title + "\n" + allianceTitle + "\n " + titlePeriode + " : " + players[0].periode + "[/b][table]" +
"[tr]" +
"[td] [/td]" +
thPseudo +
thAlliance +
thPlace +
thProgPlaceOfDay +
thPoints +
thProgPointsOfDay +
thPeriode +
thProgPoint +
thPourcentage +
thProgPointPerDay +
"[/tr]";
for( let i = 0; i<players.length; i++) {
let index = i + 1;
let colorProgPlaceOfDay = players[i].progPlaceOfDay.startsWith("+") ? "[color=#00cc00]" : "[color=#FF0000]";
let colorPoint = players[i].progPointOfDay.startsWith("+") ? "[color=#00cc00]" : "[color=#FF0000]";
let colorProgPoint = players[i].progPoint.startsWith("+") ? "[color=#00cc00]" : "[color=#FF0000]";
let colorPourcentage = players[i].pourcentage.startsWith("+") ? "[color=#00cc00]" : "[color=#FF0000]";
let colorProgPointPerDay = players[i].progPointPerDay.startsWith("+") ? "[color=#00cc00]" : "[color=#FF0000]";
let pseudo = $('#colStat0').is(':checked') ? "[td][color=#17B4FF]" + players[i].pseudo + "[/color][/td]" : "";
let alliance = "";
if( !sameAlliance )
alliance = $('#colStat1').is(':checked') ? "[td][color=#8AD9FF][i][" + players[i].alliance + "][/i][/color][/td]" : "";
let place = $('#colStat2').is(':checked') ? "[td]" + players[i].place + "[/td]" : "";
let progPlaceOfDay = $('#colStat3').is(':checked') ? "[td]" + colorProgPlaceOfDay + "(" + players[i].progPlaceOfDay + ")[/color][/td]" : "";
let point = $('#colStat4').is(':checked') ? "[td]" + players[i].point + "[/td]" : "";
let progPointOfDay = $('#colStat5').is(':checked') ? "[td]" + colorPoint + "(" + players[i].progPointOfDay + ")[/color][/td]" : "";
let periode = $('#colStat6').is(':checked') ? "[td]" + players[i].periode + "[/td]" : "";
let progPoint = $('#colStat7').is(':checked') ? "[td]" + colorProgPoint + players[i].progPoint + "[/color][/td]" : "";
let pourcentage = $('#colStat8').is(':checked') ? "[td]" + colorPourcentage + "(" + players[i].pourcentage + ")[/color][/td]" : "";
let progPointPerDay = $('#colStat9').is(':checked') ? "[td]" + colorProgPointPerDay + "(" + players[i].progPointPerDay + ")[/color][/td]" : "";
let rowBbcode = "[tr]\n" +
"[td]" + index + "[/td]" +
pseudo +
alliance +
place +
progPlaceOfDay +
point +
progPointOfDay +
periode +
progPoint +
pourcentage +
progPointPerDay +
"[/tr]\n";
bbcode += rowBbcode;
}
bbcode += "[/table][/center][center][size=8]From www.mmorpg-stat.eu with [url=https://openuserjs.org/scripts/Choubakawa/Export_BBCODE_mmorpg-stat]Export BBCODE mmorpg-stat[/url] by [url=https://twitter.com/Choubakawa]Choubakawa[/url][/size][/center]";
return bbcode;
}
function getValueInCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) === 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function saveInCookie() {
let value = {
0: $('#colStat0').is(':checked') ? "checked" : "",
1: $('#colStat1').is(':checked') ? "checked" : "",
2: $('#colStat2').is(':checked') ? "checked" : "",
3: $('#colStat3').is(':checked') ? "checked" : "",
4: $('#colStat4').is(':checked') ? "checked" : "",
5: $('#colStat5').is(':checked') ? "checked" : "",
6: $('#colStat6').is(':checked') ? "checked" : "",
7: $('#colStat7').is(':checked') ? "checked" : "",
8: $('#colStat8').is(':checked') ? "checked" : "",
9: $('#colStat9').is(':checked') ? "checked" : ""
};
var d = new Date();
d.setTime(d.getTime() + (30 * 24 * 60 * 60 * 1000));
var expires = "expires="+d.toUTCString();
document.cookie = "checkedCols=" + JSON.stringify(value) + ";" + expires + ";path=/";
}
$("#exportButton").click(function () {
let players = getPlayers();
let bbcode = generate( players );
saveInCookie();
var $temp = $("<input>");
$("body").append($temp);
$temp.val(bbcode).select();
document.execCommand("copy");
$temp.remove();
$( '<p id=tempP>Copié !</p>' ).insertAfter( '#exportButton' );
setTimeout(function () {
$("#tempP").remove();
}, 3000);
});