您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
当前为
// ==UserScript== // @name TSWRP Calendar Events Filtering // @description:en Adds filters for TSW-RP Calendar // @namespace http://www.tsw-rp.com // @include http://www.tsw-rp.com/events // @version 1 // @grant none // ==/UserScript== /***** Default filters. First text is what will be shown next to the checkbox, second text is a part of the event name that will be filtered ("RFG -" will filter out all events containing "RFG -" in title) *****/ function getDefaultFilters() { return { "Radio Free Gaia": "RFG -,Anarchist Dictatorship,DJ Ashval", "GridStream Productions": "GSP -,DJ Daydreaming", "Happy Tentacle Radio": "Happy Tentacle Radio,DJ Dynamiks,The Fratelli", "PizzaNights": "PizzaNight", "MEZ raid": "MEZ training", "Seoul RP": "Seoul RP", "Tuesday Night RP": "TNRP - Tuesday Night RP", "Sunday Morning Gaming": "SMG - Sunday Morning Gaming", } } $(function() { initCalendarFilters(); }); $(document).ajaxComplete(function() { filterEvents(); }); function initCalendarFilters() { var allFilters = loadFilters(); uncheckFiltersByPreferences(allFilters); renderFilteringContainer(allFilters); } // Loads and prepares both default and custom filters (custom are stored in browser's cookie) function loadFilters() { var customFilters = readCookie("CalendarCustomFilters"); for (var filterName in customFilters) { customFilters[filterName] = {"filter": customFilters[filterName], "checked": true, "custom": true}; } var defaultFilters = getDefaultFilters(); for (var filterName in defaultFilters) { defaultFilters[filterName] = {"filter": defaultFilters[filterName], "checked": true, "custom": false}; } var allFilters = $.extend(defaultFilters, customFilters); return allFilters; } // Loads a list of filters that should be unchecked (stored in browser's cookie) function uncheckFiltersByPreferences(filters) { var uncheckedFilters = readCookie("CalendarUncheckedFilters"); console.log(uncheckedFilters); if (uncheckedFilters != null) { for (var i = 0; i < uncheckedFilters.length; ++i) { var filterName = uncheckedFilters[i]; if (filters[filterName]) { console.log("Unchecking " + filterName); filters[filterName]["checked"] = false; } } } } function renderFilteringContainer(filters) { var $filterContainer = $("<div id='calendar-filters'/>"); $filterContainer.append("<h3>Event Filters:</h3>") var $filterList = $("<ul/>"); $filterContainer.append($filterList); $(".calendar-container").before($filterContainer); // Sort filters by label var filterNames = []; for (var filterName in filters) { filterNames.push(filterName); } filterNames = filterNames.sort(); $.each(filterNames, function() { var filterName = this; var filter = filters[filterName]; var $filterLi = $("<li style='display: inline-block; white-space: nowrap; padding: 5px 10px;'/>"); var $filterCheckbox = $("<input type='checkbox' name='"+filterName+"' value='"+filter["filter"]+"' data-custom-filter='"+filter["custom"]+"'/>"); $filterLi.append($filterCheckbox); $filterLi.append(" "+filterName); $filterList.append($filterLi); $filterCheckbox.prop("checked", filter["checked"]); $filterCheckbox.change(function() { filterChanged(); }); }); } function filterChanged() { console.log("Filter clicked"); filterEvents(); console.log("Filtering done"); saveUncheckFiltersPreferencies(); } function filterEvents() { var $eventDivs = $(".calendar-container .fc-view-month > div > div"); showAllEvents($eventDivs); $("#calendar-filters input:not(:checked)").each(function() { hideByNames($eventDivs, $(this).val()); }); } function showAllEvents($eventDivs) { $eventDivs.find(".fc-event-title").parent().parent().show(); $eventDivs.find(".desc-wrapper").parent().parent().show(); } function hideByNames($eventDivs, names) { $.each(names.split(","), function() { $eventDivs.find(".fc-event-title:contains(" + this + ")").parent().parent().hide(); $eventDivs.find(".desc-wrapper:contains(" + this + ")").parent().parent().hide(); }); } function saveUncheckFiltersPreferencies() { var uncheckedFilters = []; $("#calendar-filters input:not(:checked)").each(function() { uncheckedFilters.push($(this).prop("name")); }); storeCookie("CalendarUncheckedFilters", uncheckedFilters); } /*** Cookie related functions ***/ function storeCookie(name, value) { value = JSON.stringify(value); var date = new Date(); date.setYear(date.getFullYear()+30); var expires = "; expires=" + date.toGMTString(); document.cookie = encodeURIComponent(name) + "=" + encodeURIComponent(value) + expires + "; path=/"; } function readCookie(name) { var nameEQ = encodeURIComponent(name) + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) === ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) === 0) return JSON.parse(decodeURIComponent(c.substring(nameEQ.length, c.length))); } return null; }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址