Airdates.tv show past weeks

Control how many past weeks you want to see

当前为 2017-05-06 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==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 ); 
	}
}