Show the last server update
目前為
// ==UserScript==
// @name WME Map Tiles Update
// @version 0.6
// @description Show the last server update
// @namespace Sebiseba
// @include https://www.waze.com/editor/*
// @include https://www.waze.com/*/editor/*
// @include https://editor-beta.waze.com/*
// @grant GM_xmlhttpRequest
// @copyright Sebiseba 2014
// ==/UserScript==
WME_MUpdate_Version = GM_info.script.version;
/**
Thanks to dummyd2 and Myriades for their help and optimizations
**/
/* helper function */
function getId(node) {
return document.getElementById(node);
}
function getElementsByClassName(classname, node) {
if(!node) node = document.getElementsByTagName("body")[0];
var a = [];
var re = new RegExp('\\b' + classname + '\\b');
var els = node.getElementsByTagName("*");
for (var i=0,j=els.length; i<j; i++)
if (re.test(els[i].className)) a.push(els[i]);
return a;
}
function translate_server(lang){
var elt="", trad = new Array(
"en","SERVEUR",
"en-GB","SERVEUR",
"es","SERVIDOR",
"es-419","SERVIDOR",
"fr","SERVER",
"it","SERVER",
"ru","сервер",
"ja","サーバー",
"he","שרת",
"de","SERVER",
"ro","SERVER",
"tr","SUNUCU",
"af","BEDIENER",
"cs","SERVER",
"ko","서버",
"ms","SERVER",
"pl","SERWER",
"pt-BR","SERVIDOR",
"pt-PT","SERVIDOR",
"hu","SZERVER",
"nl","SERVER",
"sv","SERVER",
"no","SERVER",
"sk","SERVERA",
"da","SERVER",
"gl","GWEINYDDWR",
"lt","SERVERIS",
"zh","SERVER",
"bg","СЪРВЪРА",
"fi","SERVER",
"hr","SERVER"
);
var i=-1;
for(elt in trad){
i++;
if (trad[elt]==lang){
return trad[i+1];
}
}
return "SERVER";
}
function translate(str) {
var UKdate=new Array('january','february','march','april','may','june','july','august','september','october','december');
var FRdate=new Array('janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','decembre');
for (var i=0; i<UKdate.length; i++) {
str = str.toLowerCase().replace(UKdate[i], FRdate[i]);
}
return str;
}
/* Bootstrap */
function MTUpdate_bootstrap() {
if (typeof unsafeWindow === "undefined") {
unsafeWindow = ( function () {
var dummyElem = document.createElement('p');
dummyElem.setAttribute('onclick', 'return window;');
return dummyElem.onclick();
}) ();
}
/* begin running the code! */
console.log("WME Map Tiles Update: " + WME_MUpdate_Version + " starting");
MTUinit();
}
/* Verif */
function MTUinit(){
// Waze object needed
MTUWaze = unsafeWindow.Waze;
if(typeof(MTUWaze) === 'undefined'){
console.error("WME Map Tiles Update - MTUWaze : NOK");
window.setTimeout(MTUinit, 500);
return;
}
MTUlocation = MTUWaze.location;
if(typeof(MTUlocation) === 'undefined'){
console.error("WME Map Tiles Update - MTUlocation : NOK");
window.setTimeout(MTUinit, 500);
return;
}
// Traductions
MTUI18n = unsafeWindow.I18n;
if(typeof(MTUI18n) === 'undefined'){
console.error("WME Map Tiles Update - MTUI18n : NOK");
setTimeout(MTUinit, 500);
return;
}
// Waze GUI needed
MTUhandle = getId('user-details');
if(typeof(MTUhandle) === 'undefined'){
console.error("WME Map Tiles Update - MTUhandle : NOK");
setTimeout(MTUinit, 500);
return;
}
MTUhandleClass = getElementsByClassName('points', MTUhandle)[0];
if(typeof(MTUhandleClass) === 'undefined'){
console.error("WME Map Tiles Update - MTUhandleClass : NOK");
setTimeout(MTUinit, 500);
return;
}
// Then running
MTUhandle.innerHTML = MTUhandle.innerHTML + "<div id='MTUpdate' style='margin-right:15px; margin-bottom:40px; span-size:15px;'></div>";
console.log("WME Map Tiles Update - Div container ok ");
Back_Info();
}
/* Script */
function Back_Info() {
// Detect Country Server (World/US/Israel)
var MTUenv = MTUlocation.code;
console.info("WME Map Tiles Update - Serveur : " + MTUenv);
var url = '';
switch(MTUenv){
case "row":
url = "http://status.waze.com/category/main/international-tile-updates/";
break;
case 'usa':
url = "http://status.waze.com/category/main/north-america-tile-updates/";
break;
case 'il':
url = "http://status.waze.com/category/main/israel-tile-updates/";
break;
}
//Request
if(url.length > 0){
var ret = GM_xmlhttpRequest( {
method: "GET",
url: url,
headers: { "Accept": "text/xml" },
onerror: function(r) { console.log("WME Map Tiles Update: Error: " + r); },
onload: function(r) {
// Last update
var MTUposStart = r.responseText.indexOf("successfully-updated-to-");
var MTUposEnd = r.responseText.indexOf("vcard");
var MTULastUpdate = r.responseText.substring(MTUposStart,MTUposEnd);
var MTUDate = MTULastUpdate.split(new RegExp("[ /;]+", "g"));
var MTUlastdate = MTUDate[0].substring(24);
var MTUdate = MTUlastdate.split('-');
// When
var MTUpos2 = MTULastUpdate.indexOf("datetime");
var MTUDate2 = MTULastUpdate .substring(MTUpos2).split(new RegExp("[>;]+", "g"));
MTUDate2 = MTUDate2[1].split(new RegExp("[<;]+", "g"));
var MTUdate2 = MTUDate2[0].split(' ');
// Detect Language
var MTULang = MTUI18n.locale;
console.info("WME Map Tiles Update - Langue: " + MTULang);
// add to User Details panel
if (MTULang == "fr") { var serv=translate_server(MTULang), txt1 ="Mis à jour jusqu'au", txt2="Fait le", date1=MTUdate[1] + " " + translate(MTUdate[0]) + " " + MTUdate[2], date2=MTUdate2[1].replace(',','') + " " + translate(MTUdate2[0]) + " " + MTUdate2[2]; }
else { var serv=translate_server(MTULang), txt1 ="Last update", txt2="Performed", date1=MTUdate[0] + " " + MTUdate[1] + ", " + MTUdate[2], date2=MTUdate2[0] + " " + MTUdate2[1] + " " + MTUdate2[2]; }
getId('MTUpdate').innerHTML = "<div style='float:left;'><b>" + serv + " : </b>" + MTUI18n.translations[MTULang].envs[MTUenv] +" </div>";
getId('MTUpdate').innerHTML = getId('MTUpdate').innerHTML + "<div style='float:right; display: inline;'> " + txt1 + " : <span style='color: #59899e; span-size:13px;'><a href='" + url + "' target='_blank' /><b>" + date1 + "</b></a></span></div>";
getId('MTUpdate').innerHTML = getId('MTUpdate').innerHTML + "<div style='float:right; display: inline;'> " + txt2 + " : <span style='color: #59899e; span-size:13px;'><a href='" + url + "' target='_blank' /><b>" + date2 + "</b></a><br /></span></div><div style='clear:both;'></div>";
}
} );
}
setTimeout(Back_Info, 1000*60*60);
}
/* begin running the code! */
MTUpdate_bootstrap();