您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Provides link to full TIMS details when viewing a disruption on the TfL Traffic Status Updates site
// ==UserScript== // @name TIMSLink2000 // @namespace http://greasemonkey.chizzum.com // @description Provides link to full TIMS details when viewing a disruption on the TfL Traffic Status Updates site // @include https://tfl.gov.uk/traffic/status/* // @grant none // @version 0.04 // ==/UserScript== /* JSHint Directives */ /* jshint bitwise: false */ /* jshint evil: true */ var timsVersion = '0.04'; var currentTIMsID = null; function timsDateSort(a, b) { var retval; if(a.startTime > b.startTime) { retval = 1; } else if(a.startTime < b.startTime) { retval = -1; } else { retval = 0; } return retval; } function timsWaitPanel() { if ( (document.getElementById('roadmap-panel').className === 'map-panel hidden') || (document.getElementById("roadmap-panel").getElementsByClassName('road-disruption').length === 0) ) { currentTIMsID = null; setTimeout(timsWaitPanel,500); } else { var timsID = document.getElementById("roadmap-panel").getElementsByClassName('road-disruption')[0].getAttribute("data-disruption-id"); if(timsID !== currentTIMsID) { currentTIMsID = timsID; var linkURL = 'https://api.tfl.gov.uk/Road/all/Disruption/'+timsID; var timsReq = new XMLHttpRequest(); timsReq.onreadystatechange = function () { if (timsReq.readyState == 4) { console.debug('TIMS data request, response '+timsReq.status+' received'); if (timsReq.status == 200) { var tResp = JSON.parse(timsReq.responseText); console.debug('TIMS data received and parsed...'); var tStart = new Date(tResp[0].startDateTime); var tEnd = new Date(tResp[0].endDateTime); var nRecurring = tResp[0].recurringSchedules.length; if(nRecurring > 0) { tResp[0].recurringSchedules = tResp[0].recurringSchedules.sort(timsDateSort); } var tHTML = ''; if(nRecurring > 0) { tHTML += 'Overall period from '; } else { tHTML += 'Restriction from '; } tHTML += tStart.toUTCString() + ' to ' + tEnd.toUTCString(); if(nRecurring > 0) { tHTML += '<br>Recurring restrictions schedule:'; tHTML += '<div style="overflow: scroll; height: 200px;"><ul>'; for(var i=0; i<nRecurring; i++) { tStart = new Date(tResp[0].recurringSchedules[i].startTime); tEnd = new Date(tResp[0].recurringSchedules[i].endTime); tHTML += '<li>' + tStart.toUTCString() + ' - ' + tEnd.toUTCString(); } tHTML += '</ul></div>'; } document.getElementById("roadmap-panel").getElementsByClassName('highlight dates')[0].innerHTML = tHTML; } } }; timsReq.open('GET',linkURL,true); timsReq.send(); console.debug('GET: '+linkURL); } setTimeout(timsWaitPanel,100); } } timsWaitPanel();