Filter Month

Adds a month filter to RYM charts

As of 2020-11-06. See the latest version.

// ==UserScript==
// @name         Filter Month
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Adds a month filter to RYM charts
// @author       jermrellum
// @match        https://rateyourmusic.com/charts/*
// @grant        none
// ==/UserScript==

function getMonth(n)
{
    switch(n)
    {
        case 1: return "January";
        case 2: return "February";
        case 3: return "March";
        case 4: return "April";
        case 5: return "May";
        case 6: return "June";
        case 7: return "July";
        case 8: return "August";
        case 9: return "September";
        case 10: return "October";
        case 11: return "November";
        case 12: return "December";
    }
    return "error";
}

(function() {
    'use strict';

    var month = -1;
    var href = window.location.href;
    var href_arr = href.split("/");
    var last_arg = href_arr[href_arr.length-1];
    var sel = ['', '', '', '', '', '', '', '', '', '', '', ''];
    if(last_arg.indexOf("month") > -1)
    {
        month = parseInt(last_arg.split(":")[1]);
    }
    if(month > 0 && month <= 12)
    {
        var mname = getMonth(month);
        sel[month] = 'selected ';
        var rows = document.getElementsByClassName("chart_results")[0].children;
        for(var i=1; i<rows.length; i++)
        {
            var day = rows[i].children[2].children[0].children[2].innerHTML;
            if(day.indexOf(mname) == -1)
            {
                rows[i].style.display = "none";
            }
        }
        document.getElementById("nav_prev_chart_nav_top").href += "month:" + month;
        document.getElementById("nav_prev_chart_nav_bottom").href += "month:" + month;
        document.getElementById("nav_next_chart_nav_top").href += "month:" + month;
        document.getElementById("nav_next_chart_nav_bottom").href += "month:" + month;
    }
    var temp1 = document.getElementsByClassName("page_chart_query_advanced")[0].children[5].innerHTML;
    var temp2 = document.getElementsByClassName("page_chart_query_advanced")[0].children[6].innerHTML;
    document.getElementsByClassName("page_chart_query_advanced")[0].children[5].innerHTML = '<div style="border-bottom: 1px solid #eee;margin-bottom: 5px;" class="page_chart_query_advanced_section">' +
        'Filter month:</div><div><label class="page_chart_query_radio_label">' +
        '<select onchange="var href = window.location.href; var href_arr = href.split(\'/\'); var last_arg = href_arr[href_arr.length-1]; if(last_arg.indexOf(\'month\') > -1)' +
        '{window.location.href =href.substring(0,href.length-last_arg.length) + \'month:\' + this.value;}else{window.location.href+=\'month:\' + this.value;}" id="filter_month">' +
        '<option value="0">Select month</option><option ' + sel[1] + 'value="1">January</option><option ' + sel[2] + 'value="2">February</option>' +
        '<option ' + sel[3] + 'value="3">March</option><option ' + sel[4] + 'value="4">April</option><option ' + sel[5] + 'value="5">May</option><option ' + sel[6] + 'value="6">June</option>' +
        '<option ' + sel[7] + 'value="7">July</option><option ' + sel[8] + 'value="8">August</option><option ' + sel[9] + 'value="9">September</option><option ' + sel[10] + 'value="10">October</option>' +
        '<option ' + sel[11] + 'value="11">November</option><option ' + sel[12] + 'value="12">December</option></select></label></div><div class="clearfix"></div>';
    document.getElementsByClassName("page_chart_query_advanced")[0].children[6].innerHTML = temp1;
    document.getElementsByClassName("page_chart_query_advanced")[0].appendChild(document.createElement('span'));
    document.getElementsByClassName("page_chart_query_advanced")[0].children[7].innerHTML = temp2;
})();