您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Userscript for iRacing that hides content unrelated to road racing. This is opinionated, so YMMV.
当前为
- // ==UserScript==
- // @name iRacing road only
- // @namespace drinkto.me
- // @description Userscript for iRacing that hides content unrelated to road racing. This is opinionated, so YMMV.
- // @include http://members.iracing.com/jforum/forums/list.page
- // @include http://members.iracing.com/membersite/member/*
- // @version 7
- // @grant none
- // ==/UserScript==
- var load,execute,loadAndExecute,executeJQuery;load=function(a,b,c){var d;d=document.createElement("script"),d.setAttribute("src",a),b!=null&&d.addEventListener("load",b),c!=null&&d.addEventListener("error",c),document.body.appendChild(d);return d},execute=function(a){var b,c;typeof a=="function"?b="("+a+")();":b=a,c=document.createElement("script"),c.textContent=b,document.body.appendChild(c);return c},loadAndExecute=function(a,b){return load(a,function(){return execute(b)})}
- ,executeJQuery=function(a){if(typeof jQuery=='undefined'){var jqUrl='//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js';loadAndExecute(jqUrl,a);}else{execute(a);}};
- executeJQuery(function () {
- // On membersite, make 'series' link always go to the road filter
- $("td.simpleNav ul li a[href='/membersite/member/Series.do']").attr("href", "/membersite/member/Series.do?cat=2")
- // Give some indication that this is not the full list on forum home.
- $(".homeLink").text("Forum List (road only)")
- //-----------------------------------------------------
- //
- // Show countdown timer and number registered drivers in title (contributed by @kutu)
- //
- if ("racingpaneldata" in this && racingpaneldata.session) {
- var originalTitle = document.title;
- setInterval(function () {
- var numRegistered = $("#racingpanel_session_numregistered");
- var countdownTimer = $("#racingpanel_countdown_timer");
- if (numRegistered.length && countdownTimer.length) {
- document.title = numRegistered.text() + " " + countdownTimer.text() + " " + originalTitle;
- } else {
- document.title = originalTitle;
- }
- }, 1000);
- }
- //-----------------------------------------------------
- //
- // Remove ovals and ineligible series from dropdown menu (contributed by @kutu)
- //
- var seriesDrop = $("#datSeriesSelectorDropdown optgroup");
- if (seriesDrop.length) {
- // remove ovals
- var eligibles = seriesDrop[0].children;
- var isOvalSection;
- var toRemove = [];
- $.each(eligibles, function (index, value) {
- // search for oval section
- if (value.disabled) {
- if (/Oval$/.test(value.text)) isOvalSection = true;
- if (/Road$/.test(value.text)) isOvalSection = false;
- }
- if (isOvalSection || value.disabled || value.value == 0) {
- // if we currently in oval's section
- // or current option is disabled
- // or current option is "No matching series"
- toRemove.push(value);
- } else {
- // trim spaces
- value.text = value.text.replace(/^\s*/, "")
- }
- });
- // remove not needed options
- $.each(toRemove, function (index, value) {
- value.remove();
- });
- // remove ineligible
- seriesDrop[1].remove();
- // remove root tree and select series
- var dropdown = seriesDrop[0].parentElement;
- var selectedValue = dropdown.selectedOptions[0].value;
- $("#datSeriesSelectorDropdown").append(eligibles);
- seriesDrop[0].remove();
- $.each(dropdown.children, function (index, value) {
- if (value.value == selectedValue) dropdown.selectedIndex = index;
- });
- }
- //-----------------------------------------------------
- //
- // Filter the hosted sessions by road tracks.
- // See the filter_tracks.js to generate the array.
- //
- if (window.location.pathname.indexOf("/HostedSessions.do") > 0) {
- setInterval(function () {
- while($('.hosted_sessions_table_info').length <= 0){
- sleep(500)
- console.log('Waiting for table to show up...')
- }
- // Change something to indicate this is filtered.
- $("tr th a[name='Track']").text("Track (road only)");
- // Generated output
- var ovalTracks = [
- 52, // Oval - Atlanta Motor Speedway - Legends Oval
- 53, // Oval - Atlanta Motor Speedway - Oval
- 225, // Oval - Auto Club Speedway - Oval
- 101, // Oval - Bristol Motor Speedway -
- 143, // Oval - Centripetal Circuit -
- 39, // Oval - Charlotte Motor Speedway - Legends Oval
- 40, // Oval - Charlotte Motor Speedway - Oval
- 123, // Oval - Chicagoland Speedway -
- 15, // Oval - Concord Speedway -
- 115, // Oval - Darlington Raceway -
- 191, // Oval - Daytona International Speedway - Oval
- 27, // Oval - Daytona circa 2007 - Oval
- 162, // Oval - Dover International Speedway -
- 20, // Oval - Homestead Miami Speedway - Miami Speedway
- 133, // Oval - Indianapolis Motor Speedway - Oval
- 178, // Oval - Indianapolis Motor Speedway - IndyCar Oval
- 169, // Oval - Iowa Speedway - Oval
- 171, // Oval - Iowa Speedway - Legends
- 172, // Oval - Iowa Speedway - Infield Legends
- 19, // Oval - Irwindale Speedway - Inner
- 23, // Oval - Irwindale Speedway - Outer
- 30, // Oval - Irwindale Speedway - Outer - Inner
- 214, // Oval - Kansas Speedway - Oval
- 189, // Oval - Kentucky Speedway - Legends
- 188, // Oval - Kentucky Speedway - Oval
- 201, // Oval - Langley Speedway -
- 17, // Oval - Lanier National Speedway -
- 113, // Oval - Las Vegas Motor Speedway - Infield Legends Oval
- 103, // Oval - Las Vegas Motor Speedway - Oval
- 110, // Oval - Las Vegas Motor Speedway - Legends Oval
- 33, // Oval - Martinsville Speedway -
- 124, // Oval - Michigan International Speedway -
- 156, // Oval - Mid-Ohio Sports Car Course - Oval
- 157, // Oval - Mid-Ohio Sports Car Course - Alt Oval
- 131, // Oval - New Hampshire Motor Speedway - Oval
- 222, // Oval - New Hampshire Motor Speedway - Legends
- 190, // Oval - New Smyrna Speedway -
- 12, // Oval - Oxford Plains Speedway -
- 104, // Oval - Phoenix International Raceway - Oval
- 136, // Oval - Pocono Raceway - Oval
- 31, // Oval - Richmond International Raceway -
- 203, // Oval - Rockingham Speedway - Oval
- 14, // Oval - South Boston Speedway -
- 11, // Oval - Stafford Motor Speedway - Full Course
- 116, // Oval - Talladega Superspeedway -
- 120, // Oval - Texas Motor Speedway - Legends Oval
- 121, // Oval - Texas Motor Speedway - Oval
- 94, // Oval - The Milwaukee Mile -
- 161, // Oval - Thompson International Speedway -
- 198, // Oval - Twin Ring Motegi - Oval
- 16 // Oval - USA International Speedway -
- ];
- function getURLParameter(url, name) {
- return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(url) || [, ""])[1].replace(/\+/g, '%20')) || null;
- }
- // Iterate over each td that contains a link to a track, compare to known roadTracks and remove if not listed above.
- // /membersite/member/TrackDetail.do?trkid=107
- $("table tr td div div a[href*='/membersite/member/TrackDetail.do?trkid']").each(function (index) {
- var href = $(this).attr('href');
- var trackID = parseInt(getURLParameter(href, 'trkid'));
- var text = $(this).text();
- var isOval = (-1 != $.inArray(trackID, ovalTracks));
- var isUnwantedRow = (text == 'Track Info' || text == '')
- //console.log("track["+ trackID + "]: " + isOval + " - " + $(this).text())
- if (isOval && !isUnwantedRow) {
- tr = $(this).parent().parent().parent().parent();
- //console.log(tr);
- console.log("Removing track[" + trackID + "]: " + isOval + " - " + text)
- tr.remove();
- }
- });
- }, 1000);
- }
- //-----------------------------------------------------
- //
- // Only execute the following if we are on the forum list page
- //
- if (window.location.pathname.indexOf("/list.page") <= 0)
- return;
- else
- console.log("Skipping forum list pruning.");
- function toggleForumRowByText(forums) {
- $.each(forums, function (index, value) {
- e = $("td:contains('" + value + "')");
- e.parent().toggle();
- console.log("Removed: " + value);
- });
- }
- function toggleForumRowByPage(forums) {
- $.each(forums, function (index, value) {
- e = $("td a[href*='/" + value + ".page']");
- text = e.text();
- e.parent().parent().toggle();
- console.log("Removed: " + value + ".page - " + text);
- });
- }
- /**
- * Remove oval
- */
- var ovalPages = [
- "619",
- "620",
- "635",
- "621",
- "3713",
- "624",
- "2911",
- "629",
- "637",
- "623",
- "631",
- "632",
- "5511",
- "6312",
- "8711"
- ];
- var ovalHeaders = ["Oval Racing"];
- toggleForumRowByPage(ovalPages);
- toggleForumRowByText(ovalHeaders);
- /******************************************************
- * OPINIONATED removal below here, just oval is above
- */
- /**
- * Remove club
- */
- // club general discussion
- $("td:contains('Club Discussion Area')").parent().next().remove()
- var clubHeaders = [
- "Club Discussion Area",
- "Club News",
- "Club Stats",
- "Setup Garage"
- ];
- toggleForumRowByText(clubHeaders);
- /**
- * Racing and championships (selected ones only)
- */
- var racingAndChampionshipsPages = [
- "644", // world champ
- "645", // pro
- "647", // licenses, ratings and scoring
- "648", // racing your latest race
- "649", // video and screenshot showcase
- "643" // world cup of iracing
- ];
- toggleForumRowByPage(racingAndChampionshipsPages);
- /**
- * Club and Regional
- */
- var regionalHeaders = ["Regional Competitions Discussion"];
- var regionalPages = ["4111"];
- toggleForumRowByText(regionalHeaders);
- toggleForumRowByPage(regionalPages);
- /**
- * Paint
- */
- // var paintHeaders = ["The Paint Booth"];
- // var paintPages = ["639", "640"];
- // toggleForumRowByText(paintHeaders);
- // toggleForumRowByPage(paintPages);
- /**
- * Technical and Help
- */
- var techPages = [
- "618", // tech - other
- "617" // camera files
- ];
- toggleForumRowByPage(techPages);
- });