Airdates.tv show past weeks

Control how many past weeks you want to see

目前為 2017-05-06 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 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 ); 
	}
}