您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
开发者泡泡
// ==UserScript== // ==UserScript== // @name 简上羽毛球场地自动检测空场插件 // @namespace http://tampermonkey.net/ // @version 1.8 // @description 开发者泡泡 // @license 无 // @author You // @match *://*/* // @grant none // @run-at document-end // @require https://code.jquery.com/jquery-2.1.4.min.js // ==/UserScript== this.$ = this.jQuery = jQuery.noConflict(true); (function() { 'use strict'; // 注入CSS样式 const style = document.createElement('style'); style.textContent = ` body { background-color: #222; color: #888; font-family: 'Helvetica Neue', Arial, sans-serif; } .highlight { background-color: #f90 !important; } .contorl-box{ width: 500px; height: 8vh; position: fixed; bottom: 8px; left: calc(50% - 250px); background: white; border-radius: 15px; box-shadow:0px 0px 25px rgba(0,0,0,0.2); z-index: 99999; padding: 10px; display: flex; justify-content: flex-end; align-items: center; gap: 15px; } .common-btn{ cursor: pointer; border: 1px solid #999; color: #999; display: inline-flex; align-items: center; justify-content: center; padding: 8px 10px; border-radius: 10px; } .choose-btn{ color: #fff; background: #3889FF; } .area-box{ width: 500px; height: 80vh; position: fixed; top: 10vh; left: calc(50% - 250px); background: white; border-radius: 15px; box-shadow:0px 0px 25px rgba(0,0,0,0.2); z-index: 99999; padding: 10px; display: flex; flex-direction: column; } .area-title-box{ height: 60px; } .area-title{ color: #000; font-size: 22px; width: 100%; text-align: center; } .area-title-two{ color: red; font-size: 18px; width: 100%; text-align: center; } .area-content{ height: calc(80vh - 60px); overflow: auto; } .area-item-content{ display: flex; gap: 5px; flex-warp: warp; } .area-item-content-time-box{ width: 100px; padding: 5px 3px; background: #3889FF; border-radius: 6px; color: white; } .area-nodate{ width: 100%; text-align: center; color: #999; font-size: 28px; margin-top: 150px; } `; document.head.appendChild(style); let timeType = localStorage.getItem('timeType'); //冒泡排序 function fn(arr){ for(var i=0; i<arr.length-1; i++){ for(var j=i+1; j<arr.length; j++){ if(arr[i] > arr[j]){ var t = arr[i]; arr[i] = arr[j]; arr[j] = t; } } } return arr; }; function areaInit(){ // 获取全部场地序号,与场地订阅节点 let tableCellList = $(".tablecell") // 全部场地序号节点,1-27号场地 let areaIndexList = tableCellList.splice(0,27) // 全部订阅与不订阅数据 let orderList = tableCellList // 空闲场地列表 let spareAreaList = []; for(let i = 0;i<orderList.length - 1;i++){ let orderNode = $(orderList[i]); let orderText = $(orderList[i]).text(); //筛选晚上19:00-21:00空场数据 // let sevenDataUpIsTrue = orderText.indexOf('19:00-19:30') > -1&& orderText.indexOf('40元') > -1; // let sevenDataDownIsTrue = orderText.indexOf('19:30-20:00') > -1&& orderText.indexOf('40元') > -1; let eightDataUpIsTrue = orderText.indexOf('20:00-20:30') > -1&& orderText.indexOf('40元') > -1; let eightDataDownIsTrue = orderText.indexOf('20:30-21:00') > -1&& orderText.indexOf('40元') > -1; let nineDataUpIsTrue = orderText.indexOf('21:00-21:30') > -1&& orderText.indexOf('40元') > -1; let nineDataDownIsTrue = orderText.indexOf('21:30-22:00') > -1&& orderText.indexOf('40元') > -1; // let nightSpareAreaCheck = sevenDataDownIsTrue||sevenDataUpIsTrue||eightDataUpIsTrue||eightDataDownIsTrue||nineDataUpIsTrue||nineDataDownIsTrue; let nightSpareAreaCheck = eightDataUpIsTrue||eightDataDownIsTrue||nineDataUpIsTrue||nineDataDownIsTrue; // 筛选全天空场数据 let dayDataIsTrue = orderText.indexOf("40元") > -1; let allAaySpareAreaCheck = dayDataIsTrue; // 控制检测数据的条件 // let checkType = 'day'; let checkType = timeType; if(checkType == 'day'&&allAaySpareAreaCheck||checkType=='night'&&nightSpareAreaCheck){ let areaId = orderNode.parent().attr('data-platform-id') let reg1 = new RegExp('10990','g'); areaId = areaId.replace(reg1,''); let reg2 = new RegExp('1099','g'); areaId = areaId.replace(reg2,''); let obj = { text: orderText.replace('40元','').replace(/\s*/g,""), areaIndex: areaId - 2 } spareAreaList.push(obj); } } // 梳理全部空闲场地的数据 let areaArr = []; let allSpareArrangeList = [];//数据加工之后的全部场地 if(spareAreaList.length == 0){ $('body').append($('<div class="area-box"></div>')) $('.area-box').append($('<div class="area-title">简上羽毛球空场自动检测插件(开发者:泡泡)</div>')) $('.area-box').append($('<div class="area-title-two">插件15s自动刷新</div>')) $('.area-box').append($(`<div class="area-nodate"> 暂无数据 </div>`)) return; } //先给场地序号全部抽出来,[1,2,3,4,5,6...............27] spareAreaList.forEach(item=>{ if(areaArr.indexOf(item.areaIndex) == -1){ areaArr.push(item.areaIndex) } }) areaArr = fn(areaArr) //给allSpareArrangeList加工成[{areaIndex:1号场,times:[]}]的形式 areaArr.forEach(item1=>{ let obj = { areaIndex: item1, times: [] } allSpareArrangeList.push(obj); }) allSpareArrangeList.forEach(item2=>{ spareAreaList.forEach(item3=>{ if(item2.areaIndex == item3.areaIndex){ item2.times.push(item3); } }) }) console.log(allSpareArrangeList,'全部场地') $('body').append($('<div class="area-box"></div>')) $('.area-box').append($('<div class="area-title-box"></div>')) $('.area-title-box').append($('<div class="area-title">简上羽毛球空场自动检测插件(开发者:泡泡)</div>')) $('.area-title-box').append($('<div class="area-title-two">插件15s自动刷新</div>')) $('.area-box').append($('<div class="area-content"></div>')) allSpareArrangeList.forEach((itemArea,indexArea)=>{ $('.area-content').append($(`<div class="area-item"></div>`)) $(`.area-item`).eq(indexArea).append($(`<div class="area-item-title">${itemArea.areaIndex}号场地</div>`)) $(`.area-item`).eq(indexArea).append($(`<div class="area-item-content"></div>`)) itemArea.times.forEach(itemTime=>{ $(`.area-item:eq(${indexArea}) .area-item-content`).append($(`<div class="area-item-content-time-box">${itemTime.text}</div>`)) }) }) }; setTimeout(() => { //添加控制器 $('body').append($(`<div class="contorl-box"> <div >时间:</div> <div id="day-btn" class="common-btn">全天</div> <div id="night-btn" class="common-btn">晚8-10</div> <div >页面弹窗:</div> <div id="bigPopup" class="common-btn">隐藏</div> </div>`)) if(!!timeType){ if(timeType == 'day'){ $('#day-btn').toggleClass('choose-btn'); }else{ $('#night-btn').toggleClass('choose-btn'); } }else{ $('#day-btn').toggleClass('choose-btn'); localStorage.setItem('timeType','day') timeType = 'day'; } $('#day-btn').click(function(){ if(timeType == 'night'){ $('#day-btn').toggleClass('choose-btn'); $('#night-btn').toggleClass('choose-btn'); localStorage.setItem('timeType','day') timeType = 'day'; $('.area-box').remove(); areaInit(); } }); $('#night-btn').click(function(){ if(timeType == 'day'){ $('#day-btn').toggleClass('choose-btn'); $('#night-btn').toggleClass('choose-btn'); localStorage.setItem('timeType','night') timeType = 'night'; $('.area-box').remove(); areaInit(); } }); $('#bigPopup').click(function(){ $('#bigPopup').toggleClass('choose-btn'); $('.area-box').toggle(); if($('#bigPopup').text() == '隐藏'){ $('#bigPopup').text() = '显示' }else{ $('#bigPopup').text() = '隐藏' } }); areaInit(); },2000) setInterval(() => { location.reload() }, 7000) })();