WME Map Tiles Update

Show the last server update

目前為 2014-09-29 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name        WME Map Tiles Update
// @version     0.90
// @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;

var icon_info="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";
var icon_close="iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAABbSURBVHjajJBLFsAgCAOB5724OjmZXbUvxWjLys+MQryqpv2sYWaWmf4FApjBmx10rx84M70LACb/GnzJQgcXmAU1R6geVUsLzC8qIXbDKOGVhoqOz8cp417XAOaUPpt0thLzAAAAAElFTkSuQmCC";
var icon_sound="iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAABPSURBVHjanJBBCsAwCATHkH/t232ZPQWKTTR0b8oMrFpEAODuASDJOGS8B0m2pBbuhLlbZmFVGxTJ/Uu47fwbzofOE7T797gFP3AFAjwDAFvBI9XFk8v8AAAAAElFTkSuQmCC";
var icon_nosound="iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAABGSURBVHjalJFRDgAgCEK9/6nezeirVWqlH07GkDE0QJIM0MTZAAvsR5lQkgXihQ+xF3kuON/2M0ZJXHZuZ/62Ue6588ExABR+dP06GSeuAAAAAElFTkSuQmCC";

var UKdate=new Array();
var LOCdate=new Array();

/* 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 getFunctionWithArgs(func, args) {
    return (
        function () {
            var json_args = JSON.stringify(args);
            return function() {
                var args = JSON.parse(json_args);
                func.apply(this, args);
            }
        }
    )();
}

function translate_server(lang){
    var elt="", trad = new Array(
    "en","SERVER", "en-GB","SERVER", "es","SERVIDOR", "es-419","SERVIDOR", "fr","SERVEUR", "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 trans_month() {
    for (var i=1; MTUI18n.translations.en.date.month_names[i]; i++) {
        UKdate.push(MTUI18n.translations.en.date.month_names[i]);
        LOCdate.push(MTUI18n.translations[MTULang].date.month_names[i]);
    }
}

function translate(str) { 
    str = str[0].toUpperCase() + str.substring(1);    
    for (var i=0; UKdate[i]; i++) { 
        str = str.replace(UKdate[i], LOCdate[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 = getElementsByClassName("control-top olControlPanZoomBar olControlNoSelect")[0];
    if(MTUhandle == null){
        console.error("WME Map Tiles Update - MTUhandle : NOK");
        setTimeout(MTUinit, 1000);
        return;
    }
    
    // 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;
    }
    
    //    Then running
    lastupdate = localStorage.getItem("MTUlastupdate");
    if (!lastupdate) { localStorage.setItem("MTUlastupdate", ""); }
    
    // Translation
    MTULang = MTUI18n.locale;
    console.info("WME Map Tiles Update - Langue: " + MTULang);
    html(url); 
    trans_month();
    Back_Info(url,MTUenv);
}

/* Script */

function html(url) {
    
    //CSS
    var cssElt = document.createElement("style");
    cssElt.type = "text/css";
    var css = "#Info_div { z-index: 1040; margin-top:200px; margin-left:5px; }";
    css += "#Info_server { z-index: 1040; float:left; width:22px; height:22px; background: url(data:image/png;base64," +icon_info +") no-repeat left top; }";
    css += "#Info_text { z-index: 1045; float:left; }";
    css += "#Info_content { z-index: 1040; float:left; height:125px; margin-left:5px; line-height:20px; padding:8px 5px 0 5px; color:white; background-color: rgba(0,0,0,0.7); border-radius:5px; }";
    if (MTULang == "fr") { 
        css += "#Info_content { width:300px; }";
        css += "#Info_text .td { width:125px; }";
    }
    else {
        css += "#Info_content { width:250px; }";
        css += "#Info_text .td { width:85px; }";
    }
    css += "#Info_close { z-index: 1045; float:right; width:11px; height:11px; margin-right:3px; background: url(data:image/png;base64," +icon_close +") no-repeat right top; }";
    cssElt.innerHTML = css;
    document.body.appendChild(cssElt);

    //HTML
    var div = document.createElement('div');
    div.id="Info_div";
    
    var divicon = document.createElement('div');
    divicon.id="Info_server";
    divicon.onmouseover= (function() { getId("Info_content").style.display="block"; getId("Info_server").style.opacity="1"; });
    divicon.onmouseout=  (function() { getId("Info_content").style.display="none"; getId("Info_server").style.opacity="0.5"; });
    divicon.onclick= (function() { window.open(url); });
    div.appendChild(divicon);

    var divinfo = document.createElement('div');
    divinfo.id="Info_content";
    div.appendChild(divinfo);
 
    var divtext = document.createElement('div');
    divtext.id="Info_text";
    divinfo.appendChild(divtext);
    
    var divclose = document.createElement('div');
    divclose.id="Info_close";
    divclose.onclick= (function() { getId('Info_server').style.opacity="0.5"; getId('Info_content').style.display="none"; });
    divinfo.appendChild(divclose);
	
    MTUhandle.appendChild(div);   
    console.log("WME Map Tiles Update - HTML OK");
}

function Back_Info(url,MTUenv) {
    //Request
    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) { 
            
            // List of updates            
            var MTUposStart = [], idx = r.responseText.indexOf("<article id=\"post-");
            while (idx != -1) {
                MTUposStart.push(idx);
                idx = r.responseText.indexOf("<article id=\"post-", idx + 1);
            }

            var MTUposEnd = [], idx = r.responseText.indexOf("</article>");
            while (idx != -1) {
                MTUposEnd.push(idx);
                idx = r.responseText.indexOf("</article>", idx + 1);
            }  
            
            var MTUfirstpost =r.responseText.substring(MTUposStart[0],MTUposEnd[0]);
            var MTUsecondpost=r.responseText.substring(MTUposStart[1],MTUposEnd[1]);
            
            // Delays ?
            if (MTUfirstpost.indexOf("successfully updated to") != -1) { var MTUpost=MTUfirstpost; }
            else { 
                var MTUpost=MTUsecondpost, MTUdelays=MTUfirstpost;
                //if (MTUdelays) { getId("Info_content").style.backgroundColor="rgba(" + [60,0,0,0.8].join(",") + ")"; }
            }
            
            // Last Update
            var a=MTUpost.substring(MTUpost.indexOf("status.waze.com"),MTUpost.indexOf("bookmark"));
            var b = a.split(new RegExp("[ /;]+", "g"));
            MTUdate = b[4].split('-');
            MTUtime1 = MTUdate[10].substring(0,2) +":"+ MTUdate[10].substring(2,4);
            MTUlastdate = b[4].substring(44);
            
            // posted in
            var a=MTUpost.substring(MTUpost.indexOf("datetime"),MTUpost.indexOf("</time>"));
            var b = a.split('>');
            MTUdate2 = b[1].split(' ');
            var c = b[0].split('T');
            MTUtime2 = c[1].substring(0,5);
            
          
            // UTC to local time
            MTUtime1
            var step = new Date().getTimezoneOffset()/60;
            var localtime1=MTUdate[10].substring(0,2) - step +":"+ MTUdate[10].substring(2,4);
            if ((MTUtime2.substring(0,2) - step) < 10) { var localtime2="0"+ (MTUtime2.substring(0,2) - step) +":"+ MTUtime2.substring(3,5); }
            else { var localtime2=MTUtime2.substring(0,2) - step +":"+ MTUtime2.substring(3,5); }
            
            // Post dates
            if (MTULang == "fr") { 
                var lang = new Array("Mis &agrave; jour jusqu'au","Fait le","(Retard)");
                var date1=MTUdate[8] +" "+ translate(MTUdate[7]) +" "+ MTUdate[9];
                var date2=MTUdate2[1].replace(',','') +" "+ translate(MTUdate2[0]) +" "+ MTUdate2[2];
            }
            else { 
                var lang = new Array("Last update","Performed","(Delay)");
                var date1=translate(MTUdate[7]) +" "+ MTUdate[8] +", "+ MTUdate[9];
                var date2=translate(MTUdate2[0]) +" "+ MTUdate2[1] +" "+ MTUdate2[2];
            }
            var serv=translate_server(MTULang);
            var content = "<table><tr><td class='td'>" + serv + " : </td><td><b>" + MTUI18n.translations[MTULang].envs[MTUenv] +" ";
            if (MTUdelays) { content += "<span style='color:#F00;'> "+lang[2]+"</span>"; }
            content += " </b></td></tr>";
            content += "<tr><td class='td'>"+ lang[0] + " :</td><td><span style='color:#93C4D3;'><b>" + date1 + "</b></span></td></tr>";
            content += "<tr><td class='td'>&nbsp;</td><td><span style='color:#59899e;'><b>"+ MTUtime1 +" UTC / "+ localtime1 +" local</b></span></td></tr>";
            content += "<tr><td class='td'>"+ lang[1] + " :</td><td><span style='color:#93C4D3;'><b>" + date2 + "</b></span></td></tr>";
            content += "<tr><td class='td'>&nbsp;</td><td><span style='color:#59899e;'><b>"+ MTUtime2 +" UTC / "+ localtime2 +" local</b></span></td></tr></table>";
            getId('Info_text').innerHTML = content;

            // If new date
            var lastdate = localStorage.getItem("MTUlastupdate");
            if (lastdate != MTUlastdate) { 
                getId("Info_content").style.display="block";
                getId("Info_server").style.opacity="1";
                localStorage.setItem("MTUlastupdate", MTUlastdate);
            }
            setTimeout(function() { getId('Info_content').style.display="none"; getId('Info_server').style.opacity="0.5"; }, 5000);
        }
    } );
    
    setTimeout(getFunctionWithArgs(Back_Info, [url, MTUenv]), 1000*60*30);
}

/* begin running the code! */

MTUpdate_bootstrap();