您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds infos about the current Run to the top of the page, a link that brings you down to the current run in the Shedule, a countdown to the next Run and an auto refresh for when the next run is estimated to start, so thta you have always the correct times and runs displayed and highlighted
当前为
- // ==UserScript==
- // @name Better Games Done Quick Schedule
- // @namespace http://tampermonkey.net/
- // @version 2.2
- // @description Adds infos about the current Run to the top of the page, a link that brings you down to the current run in the Shedule, a countdown to the next Run and an auto refresh for when the next run is estimated to start, so thta you have always the correct times and runs displayed and highlighted
- // @author Ruben
- // @match https://gamesdonequick.com/schedule
- // @grant none
- // @require http://code.jquery.com/jquery-latest.js
- // ==/UserScript==
- (function() {
- 'use strict';
- console.log("Better AGDQ Shedule loading...");
- var tableRows = $("#runTable tbody tr").not(".day-split");
- var tableRowsDays = $("#runTable tbody tr");
- var time = "";
- var day = 0;
- var currentDate = new Date($.now());
- var rowOfCurrentRun = 0;
- var refreshInSeconds = 0;
- var refreshInTime = "";
- var newDate;
- var countdown;
- var days = {};
- var amountOfDays = 0;
- var counter = 0;
- console.log("Collecting and formatting dates and times...");
- for(var j = 0; j < tableRowsDays.length; j = j + 2)
- {
- if(tableRowsDays.eq(j).hasClass("day-split"))
- {
- day = tableRowsDays.eq(j).text().match(/\d+/)[0];
- //console.log(day);
- j--;
- continue;
- }
- //console.log(tableRowsDays.eq(j));
- days.length = amountOfDays+1;
- days[amountOfDays] = day;
- //console.log(days);
- amountOfDays++;
- }
- for(var i = 0; i < tableRows.length; i = i + 2)
- {
- time = timeFormatting(tableRows.eq(i).children().eq(0).text());
- //console.log(days[counter]);
- var date="2017/01/" + days[counter] +" " + time;
- newDate = new Date(Date.parse(date));
- //newDate = newDate -(-6000000);
- if(currentDate < newDate)
- {
- console.log("Highlighting current runs...");
- //console.log(newDate);
- //console.log(currentDate);
- //console.log(tableRows.eq(i-2));
- //console.log(tableRows.eq(i-1));
- //Ändere Background vom vorheriger Run
- tableRows.eq(i-4).css("background-color", "#f2dede");
- tableRows.eq(i-4).css("color", "black");
- tableRows.eq(i-3).css("background-color", "#f2dede");
- tableRows.eq(i-3).css("color", "black");
- $(tableRows.eq(i-4)).attr('id', 'currentRun');
- //Ändere Background vom aktuellem Run
- tableRows.eq(i-2).css("background-color", "#a00303");
- tableRows.eq(i-2).css("color", "white");
- tableRows.eq(i-1).css("background-color", "#a00303");
- tableRows.eq(i-1).css("color", "white");
- //Ändere Background vom nächsten Run
- tableRows.eq(i).css("background-color", "#f2dede");
- tableRows.eq(i).css("color", "black");
- tableRows.eq(i+1).css("background-color", "#f2dede");
- tableRows.eq(i+1).css("color", "black");
- rowOfCurrentRun = i;
- i = tableRows.length;
- }
- counter++;
- }
- console.log("Adding current run to the top of the page...");
- //Den aktuellen RUN an den Anfang der Seite einfügen
- var top = $(tableRows.eq(rowOfCurrentRun-2)).children();
- var bottom = $(tableRows.eq(rowOfCurrentRun-1)).children();
- refreshInSeconds = Math.ceil(((newDate - currentDate)/1000));
- refreshInTime = secondsToTime(refreshInSeconds);
- var countdown = "<div id='countdown' style='display: inline-block; text-align: center; padding: 5px 20px; line-height: 25px; background-color: #a00303; color: white; width: 150px; height: 100%'>Next Run in: " + refreshInTime + "</div>";
- var goToCurrentRun = "<a href='#currentRun' id='goToCurrentRun' style='display: inline-block; text-align: center; padding: 5px 20px; color: white; line-height: 25px; padding-left: 15px; height: 100%; width: 150px; text-decoration: none; background-color: #8c1616;'>Go to Current Run <img style='filter: invert(); width: 20px; height: 22px' src='https://cdn0.iconfinder.com/data/icons/navigation-set-arrows-part-one/32/DoubleChevronDown-128.png'/></a>";
- var currentRun = "<div style='overflow-x: auto; display: inline-block; max-width: 100%; vertical-align: top;'><nobr><div style='background-color: #a00303; color: white; padding: 5px 20px; line-height: 25px; display: inline-block;'>Current Run: <b>" + top.eq(1).text() + " (" + bottom.eq(1).text() + ")</b> From: <b>" + top.eq(2).text() + "</b><br/>Start: <b>" + timeFormatting(top.eq(0).text()) + " </b> Duration: <b>" + timeFormatting(bottom.eq(0).text()) + " </b> Setup Length: <b>" + timeFormatting(top.eq(3).text()) + "</b></div></nobr></div>" + goToCurrentRun + countdown;
- $("<li><a style='padding-left: 25px; padding-right: 5px'><label><input style='margin-right: 11px' type='checkbox' name='checkbox' " + getCookieCheckbox() + "/>Auto Refresh</label></a></li>").insertAfter(".nav.navbar-nav li:first-child ul li:last-child");
- $("#top").after(currentRun);
- //console.log($("#white-bg").eq(2));
- $("#goToCurrentRun").mouseenter(function() {
- $(this).css("background-color", "#c32323");
- }).mouseleave(function() {
- $(this).css("background-color", "#8c1616");
- });
- countdown = setInterval(function() {
- refreshInSeconds--;
- if(Math.ceil(((newDate - new Date($.now()))/1000)) < 0) {
- clearInterval(countdown);
- if(getCookie('autoRefresh') == "true") location.reload();
- } else {
- $("#countdown").text("Next Run in: "+secondsToTime(Math.ceil(((newDate - new Date($.now()))/1000))));
- }
- }, 1000);
- console.log("Better AGDQ Shedule done");
- })();
- function timeFormatting(time)
- {
- //console.log("TimeFormatting:" + time);
- //console.log("Länge: " + time.length);
- //console.log(time);
- if(time.length == 7)
- {
- time = "0" + time;
- }
- else if(time.length == 10)
- {
- time = time.replace(/ /g, "0");
- }
- else
- {
- time = time;
- }
- return time;
- }
- function secondsToTime(seconds)
- {
- var hours = Math.floor((seconds/60/60));
- seconds = seconds - hours*60*60;
- var minutes = Math.floor((seconds/60));
- seconds = seconds - minutes*60;
- return(addZero(hours) + ":" + addZero(minutes) + ":" + addZero(seconds));
- }
- function addZero(time)
- {
- if(time.toString().length == 1)
- {
- return ("0" + time);
- }
- else return ("" + time);
- }
- function setCookie(cname, cvalue, exdays) {
- var d = new Date();
- d.setTime(d.getTime() + (exdays*24*60*60*1000));
- var expires = "expires="+ d.toUTCString();
- document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
- }
- function getCookie(cname) {
- var name = cname + "=";
- var decodedCookie = decodeURIComponent(document.cookie);
- var ca = decodedCookie.split(';');
- for(var i = 0; i <ca.length; i++) {
- var c = ca[i];
- while (c.charAt(0) == ' ') {
- c = c.substring(1);
- }
- if (c.indexOf(name) == 0) {
- return c.substring(name.length, c.length);
- }
- }
- return "";
- }
- function getCookieCheckbox()
- {
- if(getCookie('autoRefresh') == "true") return "checked";
- }
- $('input:checkbox').change(
- function(){
- if ($(this).is(':checked')) {
- setCookie('autoRefresh', true, 30);
- }
- else {
- setCookie('autoRefresh', false, 30);
- }
- });