Control how many past weeks you want to see
当前为
// ==UserScript==
// @name Airdates.tv show past weeks
// @namespace V@no
// @description Control how many past weeks you want to see
// @include http://www.airdates.tv/*
// @include https://www.airdates.tv/*
// @version 1.5.3
// @noframes
// @grant none
// ==/UserScript==
//tab = 2 spaces
// hide all past days
var d = new Date(),
today = $("div.day[data-date='" + d.getFullYear() + ("00" + (d.getMonth() + 1)).slice (-2) + ("00" + d.getDate()).slice (-2) + "']"),
stop = false;
$("div.days").children().each(function(i, o)
{
if ($(this).is(today))
{
$(this).attr("today", "true");
stop = true;
}
if (!stop)
{
$(this).addClass("past");
}
});
let week = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"],
daysNum = week.indexOf($(today).find(".date").text().toLowerCase().match(/([^,]{3})/)[1]);
//there is no identication of which week a day belong to, so we must make sure that previous days of current week don't count as previous week.
if (daysNum > 0)
{
for(var i = 0, prev = today.prev(); i < daysNum && prev; i++)
{
prev.removeClass("past");
prev = prev.prev();
}
}
var daysPast = $('div.past'),
weeks = parseInt(readCookieRaw("w")),
weeksMax = Math.round((daysPast.length) / 7);//how many past weeks do we have available?
if (isNaN(weeks))
weeks = readCookieRaw("p") == "1" ? weeksMax : 0;
if (weeks > weeksMax)
weeks = weeksMax;
//main function that shows/hides past days
function showWeeks()
{
//get week numbers from dropdown
var weeks = parseInt($("#pastWeeks").val());
//just some sanity check
if (weeks * 7 > daysPast.length)
weeks = weeksMax;
if (weeks < 1)
weeks = 0;
for(var i = weeksMax; i > 0; i--)
$( "div.calendar" ).toggleClass("showPast" + i, (weeks >= i));
createCookie("w", weeks);
}
//add new class pastNN to each past day, where NN is a week number.
daysPast.each(function(i)
{
$(this).addClass("past" + (Math.ceil((daysPast.length - i) / 7 % (weeksMax + 1))));
});
//create dropdown menu with number of available past weeks
var dropdown = document.createElement("select");
dropdown.id = "pastWeeks";
for(var i = 0; i <= weeksMax; i++)
{
var option = document.createElement("option");
option.value = i;
option.text = i;
option.selected = (weeks == i);
dropdown.appendChild(option);
}
//add event listener to dropdown
$(dropdown).change(showWeeks);
//insert our dropdown and new text into document
$(".calendar").prepend(dropdown);
$(".calendar").prepend(document.createTextNode("Show past weeks: "));
//hide "Show/Hide past month" links
$("#past-showing").toggle(true);
togglePast();//make sure we disable "Show past month"
$("#past-showing").toggle(false);
$("#past-hidden").toggle(false);
showWeeks();
//create stylesheet. A little trick to have multiline text
var style = document.createElement("style"),
css = function(){/*
div.showPast1 div.past1,
div.showPast2 div.past2,
div.showPast3 div.past3,
div.showPast4 div.past4,
div.showPast5 div.past5,
div.showPast6 div.past6,
div.showPast7 div.past7,
div.showPast8 div.past8,
div.showPast9 div.past9
{
display: block;
}
/* color picker icon that works on dark background *//*
.picker
{
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAABc0lEQVQoz23PPYsUQRDG8aeqenZemGFwDvRb+F0EMxEDRTNT4xMMTC45DEzE0ODA0NTPYGqs0W7vbE+vq7tdXSa9yXEN/+z3QDWZ2QigBtCeM7NOVUdVvZdSut/3/RUAeO/fkZldFNiV2pzzeDqdHjRN8xm3HgOoSisAKzNrc87DXfg8cGXgzGyVc25Vtb8Lr9frGwYgAMTMqpxzo6p90zSfYoyXtwdE9IsLdqpap5T6uq6/7Pf710T0Z1mWt2fsvb8SkZ8u5+xUtVHVvm3brzHGV+XMwzAM70MIbwAcAczM/NupapVS6rqu+xZCeG5mAuDU9/2HGONLAAdm3jHzVkRml1Jquq77Ps/zi5zziojyOI4fQwjPCp6dc1sRWZj54FS1AgBVrYmIp2m63u12TwBEIgoFR2b+C+BIAMx7/3iappvyuafM7J1z26qqZufcnpn/ATgBSG5ZlofDMPzYbDaPAGQiiiKyFZEgIgdmPgJIJf0PRxTB4Z5WMoAAAAAASUVORK5CYII=');
}
/* today column border *//*
div.today
{
border-color: orange;
}
/* higlighted title under cursor *//*
div.title:hover
{
background-color: #ffffd5;
}
*/};
style.innerHTML = css.toString().slice(14, -3).replace(/\*\/\/\*/g, "*/");
$("head").append(style);
(function(s)
{
if (s.val())
s.addClass('x');
else
s.removeClass('x');
})($("#searchBecauseNoOneChecks"));
//fixed inability remove a show when "Important stuff only" is active
// assigns a color. use permanent=true to save to db/cookies
unsafeWindow.assignColor = function( seriesId, color, permanent ){
//$( "div.entry[data-" + attr + "='" + value + "']" )entries( "series-id", seriesId ).css( "background-color", color?color:"" );
$("#css_"+seriesId).remove();
var curShow = $(".activeOnly").find(".entry[data-series-id='" + seriesId + "']").removeAttr("style");
var origColor = color;
color = color||"#FFF";
var col = new Colors().setColor(color);
var hover = typeof(permanent) == "undefined";
if (hover)
{
$(".entry[data-series-id='" + seriesId + "']").find(".details[style='display: block;']").parent().attr("id", "temp" + seriesId);
}
if( col.HEX != "FFFFFF" || hover){
var textCol = col.rgbaMixBlack.luminance>0.22?"black":"white";
var style =
"<style id='css_I'>\
.entry[data-series-id='I'], li[data-series-id='I'] .color{background-color:C; color:T}\
.activeOnly .entry[data-series-id='I']{ display: block !important; }\
</style>"
.replace( /I/g, seriesId )
.replace( /C/g, color )
.replace( /T/g, textCol )
;
$(style).appendTo("body");
if (col.HEX == "FFFFFF" && hover)
{
curShow.each(function(i, o)
{
if (!$(this).find(".details").each(function(i, d)
{
if (d.style.display == "none")
d.style.visibility = "hidden";
}).length)
{
o.style.visibility = "hidden";
}
});
}
}
if( permanent ){
DB.setColor( seriesId, origColor );
}
}