🏠 Home 

Filter Month

Adds a month filter to RYM charts


Install this script?
// ==UserScript==
// @name         Filter Month
// @namespace    http://tampermonkey.net/
// @version      0.7
// @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 year = -1;
var year_idx = -1;
if(href_arr.length > 6)
{
year = parseInt(href_arr[6].substring(0,4));
year_idx = href.indexOf(href_arr[6]);
}
var fullyear = new Date().getFullYear();
var curMonth = new Date().getMonth() + 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=2; i<rows.length; i++)
{
var day = rows[i].children[2].children[2].innerText;
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 pcqa = document.getElementsByClassName("page_chart_query_advanced")[0];
var innerHs = [];
for(var i2=0; i2<pcqa.children.length; i2++)
{
innerHs[i2] = pcqa.children[i2].innerHTML;
}
var mIdx = pcqa.children.length - 3;
pcqa.children[mIdx].innerHTML = '<div style="margin-top: 10px;" class="page_chart_query_advanced_section_label">' +
'Filter month:</div><div><label class="page_chart_query_radio_label">' +
'<select onchange="if(this.value == 0) {return 0;} var href = window.location.href; var href_arr = href.split(\'/\'); var last_arg = href_arr[href_arr.length-1]; if(this.value > 12) {var pastIntv;switch(parseInt(this.value))'+
'{case 13: pastIntv = 6; break;case 14: pastIntv = 13; break;case 15: pastIntv = 29; break;case 16: pastIntv = 89; break;case 17: pastIntv = 179; break;}var date = new Date();var past = '+
'new Date();past.setDate(date.getDate()-pastIntv);var disp = past.toISOString().slice(0,10).replaceAll(\'-\',\'.\');' +
'var disd = date.toISOString().slice(0,10).replaceAll(\'-\',\'.\');var filter_period = disp + \'-\' + disd;if(' + year_idx + ' != -1){window.location.href = href.substring(0,' + year_idx + ')' +
'+ filter_period + href.substring(' + year_idx + ' + href_arr[6].length);}else{window.location.href = href + filter_period;}}'+
'else{var fsYear = ' + year + ';if(!(' + year + ' > 1850 && ' + year + ' < 9999)){if(' + curMonth + '+1 > this.value){fsYear = ' + fullyear + ';}else{fsYear = ' + fullyear + '-1;}}'+
'var disp_mon = this.value; if(disp_mon < 10)' +
'{disp_mon = \'0\' + disp_mon;}var filter_period = fsYear + \'.\' + disp_mon + \'.01-\' + fsYear + \'.\' + disp_mon + \'.31\';window.location.href = href.substring(0,' + year_idx + ') + ' +
'filter_period + href.substring(' + year_idx + ' + href_arr[6].length);}' +
'" 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><option value="0">-----</option><option value="13">Last week</option><option value="14">Last 2 weeks</option>' +
'<option value="15">Last 30 days</option><option value="16">Last 90 days</option><option value="17">Last 180 days</option>' +
'</select></label></div><div class="clearfix"></div>';
pcqa.appendChild(document.createElement('span'));
for(var i3=mIdx;i3<innerHs.length; i3++)
{
pcqa.children[i3+1].innerHTML = innerHs[i3];
}
})();