NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @id dofus-guild-page-real-table
// @name Dofus Guild Page Real Table
// @version 1.0
// @author hagabaka
// @namespace https://github.com/hagabaka/dofus-guild-page-real-table
// @copyright 2014, Yaohan Chen
// @description Converts the Dofus guild member list into a real table
// @match http://www.dofus.com/*/guild/*/miembros
// @run-at document-end
// ==/UserScript==
(function() {
var forEach = Array.prototype.forEach;
// create an element with the given tag name, and the same class attribute as
// the given element
function createReplacement(element, tagName) {
var replacement = document.createElement(tagName);
replacement.className = element.className;
return replacement;
}
// move the contents of origin to target
function moveContents(origin, target) {
while(origin.childNodes.length > 0) {
target.appendChild(origin.childNodes[0]);
}
}
// create a tr with the content of the original fake table row
function createReplacementRow(row, cellTagName, parent) {
var replacementRow = createReplacement(row, 'tr');
parent.appendChild(replacementRow);
var tableCellClasses = /nom_guilde|niveau2|serveur|nb_membre/;
forEach.call(row.childNodes, function (child) {
if (tableCellClasses.test(child.className)) {
var replacementChild = createReplacement(child, cellTagName);
moveContents(child, replacementChild);
replacementRow.appendChild(replacementChild);
}
});
return replacementRow;
}
// remove the node from tree
function removeNode(node) {
node.parentNode.removeChild(node);
}
var table = document.querySelector('.table_result2');
if (table) {
var replacementTable = createReplacement(table, 'table');
table.parentNode.insertBefore(replacementTable, table);
var thead = document.createElement('thead');
replacementTable.appendChild(thead);
var tbody = document.createElement('tbody');
replacementTable.appendChild(tbody);
var headerRow = table.querySelector('.titre_colonne2');
if (headerRow) {
createReplacementRow(headerRow, 'th', thead);
removeNode(headerRow);
}
var rows = table.querySelectorAll('.ligne_style0, .ligne_style1');
forEach.call(rows, function (row) {
createReplacementRow(row, 'td', tbody);
removeNode(row);
});
}
} () );