Metal Archives - Discography pages: 'Reviews' column split + sortable tables

Splits the Reviews column into Reviews(count) and Ratings(avg) and makes the table sortable.

当前为 2014-10-17 提交的版本,查看 最新版本

// ==UserScript==
// @name        Metal Archives - Discography pages: 'Reviews' column split + sortable tables
// @namespace   rikkie
// @description Splits the Reviews column into Reviews(count) and Ratings(avg) and makes the table sortable.
// @include     http://www.metal-archives.com/bands/*
// @version     1.1
// @grant       none
// @require     http://code.jquery.com/ui/1.9.1/jquery-ui.min.js
// @require     https://gf.qytechs.cn/scripts/2199-waitforkeyelements/code/waitForKeyElements.js?version=6349
// @require     https://raw.githubusercontent.com/christianbach/tablesorter/master/jquery.tablesorter.js
// 
// This userscript uses jQuery and it's plugin "tablesorter" (forked by Rob Garrison (Mottie)) http://mottie.github.io/tablesorter/docs/index.html
//
// ==/UserScript==


// STEP 1+2: SPLIT THE REVIEWS COLUMN/ADD A COLUMN             /// THE NEW FUNCTION
// It appends a column to the HTML table containing the displayed discography sub-category
function appendColumn(jNode) {
    var tbl = jNode[0]; // table reference
    // var tbl = document.getElementsByClassName("display discog")[jNode], i; // table reference
    var newCell, newText;    

    var tr = tbl.tHead.children[0],
    th = document.createElement('th');

    th.innerHTML = "Ratings(avg)";
    th.className = "ratingsCol";
    tr.appendChild(th);

    
    for (i = 1; i < tbl.rows.length; i++) {
        k = tbl.rows[i].cells[4].innerHTML;    // Retrieve the content of the current cell of the Review column and store it to variable k
        
        re1 = /<a [^>]*>[^(]*[(]([^)]+)/ ;      // RegEx which matches only the number(and the %) inside the parentheses
        l = re1.exec(k);                        // Execute the RegEx and store it to variable l

        if (re1.test(k) !=0 ){                  // If the RegEx has matches, (only) then create each cell with the result of the RegEx
            newCell = tbl.rows[i].insertCell(-1);
            newCell.innerHTML = l[1];            
            re2 = /<a [^>]*>([0-9]*)[^(]/ ;   // RegEx which matches only the number before the parentheses
            m = re2.exec(k);                  // Execute the RegEx and store it to variable m
            newCell = tbl.rows[i].cells[4];
            newCell.innerHTML = m[1];          
            }
        
    }    
}





//  STEP 3: MAKE THE TABLE SORTABLE  (using jQuery and it's plugin "tablesorter")
// ( based on http://mottie.github.io/tablesorter/docs/index.html#Getting-Started & http://stackoverflow.com/a/18867406/3231411 )
// It inserts these two inline scripts in the <HEAD> of the page and includes jquery on this file
function sorting(){
    $('.display.discog').tablesorter();  
}
    


// Wait for the discography table to be completely loaded, then split+append column. After that, do the same in order the table to become sortable
waitForKeyElements (".display.discog", appendColumn);    
waitForKeyElements (".ratingsCol", sorting); 

// as long as you are viewing one of the sub-tabs of DISCOGRAPHY, split+append column
do{
    waitForKeyElements (".display.discog", appendColumn);    
    waitForKeyElements (".ratingsCol", sorting);   
    // sorting();
}
while (jNode[0].parentNode ==  ('.display.discog'));

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址