WME Closure Sheet Helper

Helps filling those pesky closure sheets

目前為 2015-05-26 提交的版本,檢視 最新版本

// ==UserScript==
// @name:hu             WME Closure Sheet Segéd
// @name:en             WME Closure Sheet Helper
// @description:hu      Lezárási táblázatok kitöltését egyszerűsítő segéd
// @description:en      Helps filling those pesky closure sheets
// @copyright           2015, ragacs
// @name                WME Closure Sheet Helper
// @description         Helps filling those pesky closure sheets
// @version             0.2
// @include             https://www.waze.com/editor/*
// @include             https://www.waze.com/*/editor/*
// @include             https://editor-beta.waze.com/editor/*
// @include             https://editor-beta.waze.com/*/editor/*
// @namespace https://gf.qytechs.cn/users/6330
// ==/UserScript==

var wmecsh_version = "0.2";

/* bootstrap, will call initialiseClosureSheetHelper() */
function bootstrapClosureSheetHelper()
{
  var bGreasemonkeyServiceDefined = false;

  try {
    bGreasemonkeyServiceDefined = (typeof Components.interfaces.gmIGreasemonkeyService === "object");
  }
  catch (err) { /* Ignore */ }

  if (typeof unsafeWindow === "undefined" || ! bGreasemonkeyServiceDefined) {
    unsafeWindow    = ( function () {
      var dummyElem = document.createElement('p');
      dummyElem.setAttribute('onclick', 'return window;');
      return dummyElem.onclick();
    }) ();
  }

  /* begin running the code! */
  setTimeout(initialiseClosureSheetHelper, 999);
}

/* helper function */
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 getId(node) {
  return document.getElementById(node);
}

function clickedClosureSheetHelper(event)
{
    var segs = Waze.selectionManager.selectedItems;
    if(segs.length == 0)
    {
        alert("Select some segments first!");
        return;
    }
    
    var endobj = {};
    var cityname = "";
    for(var s=0; s < segs.length; s++)
    {
        if(segs[s].model.type === "segment")
        {
            var pristrid = segs[s].model.attributes.primaryStreetID;  // segment's street ID
            var streetname = Waze.model.streets.get(pristrid).name; // street name
            if(streetname === null)
                streetname = "No street";
            if(cityname.length == 0)
                cityname = Waze.model.cities.get(Waze.model.streets.get(pristrid).cityID).name;
            var segid = segs[s].model.attributes.id;               // segment ID
            if(endobj[streetname] === undefined)
                endobj[streetname] = [];
            endobj[streetname].push(segid);
        }
    }
    
    if(cityname.length == 0)
        cityname = "No city";
    var tmplatlon=Waze.map.getCenter();
    tmplatlon.transform(Waze.map.getProjectionObject(), Waze.map.displayProjection); // This will be the center of the map in normal projection EPSG:900913
    var zoom = Waze.map.getZoom();
    // Creating sheet rows
    // date	time	date	time	streetname	segmentids	permalink
    // permalink = https://www.waze.com/editor/?lon=19.154683728784565&lat=47.46686402709748&zoom=6&segments=102441276
    // 2015-05-08	17:30:00	2015-05-11	00:01:00	Bólyai utca	199532916,199532917	https://www.waze.com/editor/?env=row&lon=21.61066&lat=47.54755&layers=1476&zoom=6&segments=199532916,199532917
    event = event || window.event;
    
    var alls = "";
    for(var k in endobj)
    {
        var ends = "date\ttime\tdate\ttime\t";
        if (!event.ctrlKey)
            ends += cityname + "\t";
        ends += k + "\t'";
        var plink = "https://www.waze.com/editor/?lon=" + tmplatlon.lon + "&lat=" + tmplatlon.lat + "&zoom=" + zoom + "&segments=";
        var idss = "";
        for(var si=0; si < endobj[k].length; si++)
        {
            if(idss.length > 0) idss += ",";
            idss += endobj[k][si];
        }
        ends += idss + "\t" + plink + idss + "\n";
        alls += ends;
    }
    window.prompt("CSH v" + wmecsh_version + ". Copy to clipboard: Ctrl+C, Enter", alls);    
}

/* =========================================================================== */

function initialiseClosureSheetHelper()
{
  // global variables
  var betaMode = location.hostname.match(/editor-beta.waze.com/);

  // add new box to left of the map
  var addon = document.createElement('div');
  addon.id = "closuresheethelper-addon";
  addon.className = "toolbar-button";
  addon.title = "Click to Closures Sheet, Ctrl+Click to Event Sheet";
  addon.innerHTML  = '<span>To Closures Sheet</span>';
  addon.style.backgroundRepeat = "no-repeat";
  addon.style.backgroundPosition = "center center";
  addon.style.backgroundImage = "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAeCAYAAABE4bxTAAAAAXNSR0IArs4c6QAAAARnQU1BAACx"
                              + "jwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAu"
                              + "NWWFMmUAAASXSURBVFhHzZbta1N3FMe1TZomsa1tVx0q616Ifb/9GcJgSMHNqnWt4AthIIMxZe83"
                              + "m25tBrqpfUjaNG/UUaw1a2oeOq2Y2aYP1Icyx7oyZFCQqUOGL7LPuf3l9pfcPJmJeODLTc7vnO/5"
                              + "3vM793fvpjfWBqbmNvfFZisvxGbtF6KzLq51YKu66hBfPWgoAFmXuFrgBsLnFl5qCJwCfNV9sWSV"
                              + "78Z8RfjBqj3y65/1pphzkRnHmYnEnk96Apc7ekfiYB7MZSEp187ekUWuS/nA+gJXiU2AGAh39AYm"
                              + "uU6sIxCizhi4ciacaD4XnXGF7q24EPS+IQi1m8+GE3sOenyr+7/qT71OHDg9+Nz70+2W0YWHTQh6"
                              + "1xBEK21yF7kS0jjU7X/U0RO4qKP9m6FJbmIlV3whwLXa6Q3ebOsafCb/qT0fTNxtNLeMvXTQ5rzE"
                              + "ENwyArPsoMd/LVd8PiD+MeOxW3K5bjvqDcbFj6B7jEyNQSpGhxw4H2UTCBATU2EZdsjjn8gVnw/E"
                              + "/4WIXSpdBL2FoIisUfs+glxqyRBUlS2Idj4/0jPcr0IyDJFRPbYYiF9BQJNKN0wJMnioPYcgu1pa"
                              + "F8Rw/ZsmaOvyPf1i6OpetWwaJDbIf07HlYLD3UPL5G1shzJ8LW0e3xOJQdBNBNnU0voM6SQ8jj61"
                              + "ZBoETsTc0eOK4XC3f5G8KkVhGr4dzNPf6TiOgQiCNuJkhtKLFJU7alBLhvG/Fv/ddEwpID6p0jOM"
                              + "B+E91n/XY2lACEHVKsTokJ32PTaIPP5VAgLHv7/4KTM0wO9LrJl3Uwo++nrgBUdC5OTw+D7wATyf"
                              + "gVZEnmB9AbzQ46kxhiCnkmMIqjw1PH7s49MD5hy9CghfMU7m9cmJvtG9GR1iS3h13GlhuIzH8HWB"
                              + "OVr73DfWenYy0cg7bWOoxRDloFPNDNhop3ckCqZRv5ZNcqBr8CmH6C1O2riGGL5JA+TCcbn92+Ef"
                              + "+B3Ktd3M0Roxl04OjX/YH082IcZJ/QolJbfxfmuA0DhJdVB8CuE7pasqNKfJOth69LvgfT2fm3yG"
                              + "f7darxColMKG6i0IspzGR7hz7sqhwvKaKuhC0AM9n//T+GtVmNVSqVQG0kYXRNB1nUyAmF2gUoUV"
                              + "NAo7sztEh8P4NwZYM6N+PkEUreNon9bJBH3xZDMoKkjr0LKerwSZHbbUtziUkVQPWUInE3CINoNS"
                              + "Bbnh+E3PR9BEuYIa6NAvOpmA8+JlBNUg6A89X568sgSxZY0Isry7zkdm3mHgiz4ZpiBvMOMrFEFX"
                              + "8ZvvLUt9i0MZQ90EWVInE7y0IGuHruA3PzUs9S0OZWzLdgTN62QC/PKUlSJIzhgRlPElWrag89GZ"
                              + "HQha1MkEHJjbpZgKy2uvXBDb8nZ2h/iK/EdOcAgLntJiEgPkKXuoc/C+/LEsQWyLzFDGU8b/JWar"
                              + "DsJSZ6gKQbM6h3za4DefUkt9i0MZSe4vR0LtiLgNpsAN+Y9QeREW7ZAYcbZTgWutiFoCyyCBT7bc"
                              + "zLfUtziUSRLFq8EWJUJg18mKmcQCG3CDGmB5q1vqWxz/w8rh0GunUqlN/wEqrFDh94BLdQAAAABJ"
                              + "RU5ErkJggg==)";

  var buttonsBar = getId('edit-buttons');
  var firstButton = getElementsByClassName('toolbar-button', buttonsBar)[0];
  buttonsBar.style.width = "465px";
  firstButton.parentNode.insertBefore(addon, firstButton);
 
  getId('closuresheethelper-addon').onclick = clickedClosureSheetHelper;    
}

/* engage! =================================================================== */
bootstrapClosureSheetHelper();

/* end ======================================================================= */

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址