Freedit L1+

Vrstva míst úprav pro nováčky Freedit L1+

当前为 2015-05-02 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name                Freedit L1+
// @namespace           https://greasyfork.org/users/10038-janek250
// @author              Janek250
// @description         Vrstva míst úprav pro nováčky Freedit L1+
// @include             https://www.waze.com/editor/*
// @include             https://www.waze.com/*/editor/*
// @include             https://editor-beta.waze.com/*
// @grant               GM_getValue
// @grant               GM_setValue
// @version             0.4.6
// @grant               none
// ==/UserScript==

// Kopie originálního skriptu davielde/rickzabel https://greasyfork.org/cs/scripts/8443-wme-mega-mapraid-overlay
// Skript vznikal na základě Grepovy myšlenky a velikého přispění spolutvůrců Petinka1 a d2-mac, za což moc děkuji. 
// Novikny ve verzi : doplnění Chyby v záložce, url v závorkách               
//--------------------------------------------------------------------------------------

fe_verze = '0.4.6';

/* definice trvalých proměných */
  var FEid = [];
  var FEnazev = [];
  var FEkraj = [];
  var FEvlozil = [];
  var FEeditor = [];
  var FEstav = [];
  var FEvyprsi = [];
  var FEatributy = [];
  var FEtvar = [];
  var FElink = [];
  var konec = 0;
  var barva = ["#00BBFF","#FFAE00","#FFFF00","#5E8F47","#FF0000"]; //HTML barvy modrá = #00BBFF oranžová = #FFAE00 žlutá = #FFFF00 zelená = #5E8F47 červená = #FF0000
  var zx = [];
  var zy = [];
//Obdelník na ležato
  var zxl = [0.245760,0.122880,0.061440,0.030720,0.015360,0.007680,0.003840,0.001920,0.000960,0.000480,0.000240];
  var zyl = [0.088064,0.044032,0.022016,0.011008,0.005504,0.002752,0.001376,0.000688,0.000344,0.000172,0.000086];
//Obdelní na stojato
  var zxs = [0.075562,0.037781,0.018890,0.009445,0.004723,0.002361,0.001181,0.000590,0.000295,0.000148,0.000074];
  var zys = [0.088064,0.044032,0.022016,0.011008,0.005504,0.002752,0.001376,0.000688,0.000344,0.000172,0.000086];
//Čtverec
  var zxc = [0.136272,0.068136,0.034068,0.017034,0.008517,0.004259,0.002129,0.001065,0.000532,0.000266,0.000133];
  var zyc = [0.088064,0.044032,0.022016,0.011008,0.005504,0.002752,0.001376,0.000688,0.000344,0.000172,0.000086];


//Ošetření service Greasymonkey
function freedit_bootstrap()
{
	var bGreasemonkeyServiceDefined 	= false;

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

	if ( "undefined" === typeof unsafeWindow  ||  ! bGreasemonkeyServiceDefined)
	{
		unsafeWindow	= ( function ()
		{
			var dummyElem	= document.createElement('p');
			dummyElem.setAttribute ('onclick', 'return window;');
			return dummyElem.onclick ();
		} ) ();
	}
	/* Začátek kódu */
    setTimeout(InitMapRaidOverlay, 2200);
	setTimeout(freedit_wait, 2000);
}

//definování funkce a vzhled polygonu
function AddRaidPolygon(raidLayer,groupPoints,groupColor,groupNumber){
    
    var mro_Map = unsafeWindow.Waze.map;
    var mro_OL = unsafeWindow.OpenLayers;
    var raidGroupLabel = 'Freedit ' + groupNumber;
    var groupName = 'RaidGroup' + groupNumber;
    
    var style = {                     //nastavení vzhledu polygonu
        strokeColor: groupColor,
        strokeOpacity: .7,      //pruhlednost čáry
        strokeWidth: 2,   //toušťka obvodové čáry
        fillColor: groupColor,
        fillOpacity: 0.10,    //průhlednost výplně
        label: raidGroupLabel,
        labelOutlineColor: "black",   //linka kolem textu
        labelOutlineWidth: 3,     //šířka linky
        fontSize: 14,
        fontColor: groupColor,
        fontOpacity: .85,
        fontWeight: "bold"  
    };
    
    var attributes = {
        name: groupName,
        number: groupNumber
    };
    
    var pnt= [];
    for(i=0;i<groupPoints.length;i++){
        convPoint = new OpenLayers.Geometry.Point(groupPoints[i].lon,groupPoints[i].lat).transform(new OpenLayers.Projection("EPSG:4326"), mro_Map.getProjectionObject());
        //console.log('MapRaid: ' + JSON.stringify(groupPoints[i]) + ', ' + groupPoints[i].lon + ', ' + groupPoints[i].lat);
        pnt.push(convPoint);
    }
		       
    var ring = new mro_OL.Geometry.LinearRing(pnt);
    var polygon = new mro_OL.Geometry.Polygon([ring]);
    
    var feature = new mro_OL.Feature.Vector(polygon,attributes,style);
    raidLayer.addFeatures([feature]);
}

//funkce vycuc lon / lat / zoom z permalinku
function getQueryString(link, name)
{
    var pos = link.indexOf( name + '=' ) + name.length + 1;
    var len = link.substr(pos).indexOf('&');
    if (-1 == len) len = link.substr(pos).length;
    return link.substr(pos,len);
}

//funkce MMR??
function CurrentRaidLocation(raid_mapLayer){
    var mro_Map = unsafeWindow.Waze.map;

    for(i=0;i<raid_mapLayer.features.length;i++){
        var raidMapCenter = mro_Map.getCenter();
        var raidCenterPoint = new OpenLayers.Geometry.Point(raidMapCenter.lon,raidMapCenter.lat);
        var raidCenterCheck = raid_mapLayer.features[i].geometry.components[0].containsPoint(raidCenterPoint);
        //console.log('MapRaid: ' + raid_mapLayer.features[i].attributes.number + ': ' + raidCenterCheck);
        if(raidCenterCheck === true){
        	var raidLocationLabel = 'Editorův ráj - '/* + raid_mapLayer.features[i].attributes.number + ' - '*/ + $('.WazeControlLocationInfo').text();
    		setTimeout(function(){$('.WazeControlLocationInfo').text(raidLocationLabel);},200);
        }
    }
}
//funkce inicializace MMR??
function InitMapRaidOverlay(){

    var mro_Map = unsafeWindow.Waze.map;
    var mro_OL = unsafeWindow.OpenLayers;

    var mro_mapLayers = mro_Map.getLayersBy("uniqueName","Freedit L1+");
    
    var raid_mapLayer = new mro_OL.Layer.Vector("Freedit L1+", {
        displayInLayerSwitcher: true,
        uniqueName: "Freedit L1+"
    });
        
    I18n.translations.en.layers.name["Freedit L1+"] = "Freedit L1+";
    mro_Map.addLayer(raid_mapLayer);
    raid_mapLayer.setVisibility(true);

for (var i = 0; i < konec; i++) {
  var href = FElink[i];     //kde link je údaj z tabulky ve sloupci permalink 
  var x = parseFloat(getQueryString(href, 'lon'));
  var y = parseFloat(getQueryString(href, 'lat'));
  var zoom = parseInt(getQueryString(href, 'zoom'));

  if(FEtvar[i].indexOf('1') !== -1) {zx = zxl; zy = zyl;}
  if(FEtvar[i].indexOf('2') !== -1) {zx = zxs; zy = zys;}
  if(FEtvar[i].indexOf('3') !== -1) {zx = zxc; zy = zyc;}
  
  var b1x = x - zx[zoom]; var b1y = y + zy[zoom]; var b2x = x + zx[zoom]; var b3y = y - zy[zoom];   

var Freedit01 = [{lon:b1x,lat:b1y},{lon:b2x,lat:b1y},{lon:b2x,lat:b3y},{lon:b1x,lat:b3y}];
    //aktuality - pokud je editor vypiš jmeno, pokud není tady muze byt tvoje jmeno
    // pokud stav 0 ( tady muze byt tvoje jmeno) 1 jmeno editora 2 jmeno editora a 'ke kontrole' 3 hotovo (editoval) 4 editor + chyba čti forum/rozcestník
    //if(FEeditor[i] !== "") {} else { FEeditor[i] = ' tady může být tvoje jméno ';}
    var FEinfo = '';
    if(FEstav[i] == 0) {FEinfo = '\n Tento Freedit je VOLNÝ \n zbývá : ' + FEvyprsi[i] + ' dnů' + '\n' + FEatributy[i] + ' viz záložka «';}
    if(FEstav[i] == 1) {FEinfo = '\n edituje : ' + FEeditor[i] + '\n zbývá : ' + FEvyprsi[i] + ' dnů' + '\n' + FEatributy[i] + ' viz záložka «';}
    if(FEstav[i] == 2) {FEinfo = '\n editoval : ' + FEeditor[i] + '\n ke kontrole' + '\n' + FEatributy[i] + ' viz záložka «';}
    if(FEstav[i] == 3) {FEinfo = '\n editoval : ' + FEeditor[i] + '\n HOTOVO, děkujeme ';}
    if(FEstav[i] == 4) {FEinfo = '\n editoval : ' + FEeditor[i] + '\n CHYBA, více info Fórum/rozcestník.\n «« odkaz na záložce ««';}
    
AddRaidPolygon(raid_mapLayer, Freedit01, barva[FEstav[i]], FEid[i] + '\n' + FEnazev[i] + '\n vložil : ' + FEvlozil[i] + FEinfo);    
}    
    setTimeout(function(){CurrentRaidLocation(raid_mapLayer);},3000);
    mro_Map.events.register("moveend", Waze.map, function(){CurrentRaidLocation(raid_mapLayer);});
    mro_Map.events.register("zoomend", Waze.map, function(){CurrentRaidLocation(raid_mapLayer);});       
}

$.getJSON('https://spreadsheets.google.com/feeds/list/1wywD5uYNmejO_t6Gufzu5tBW0SeVAFdr2KVdeSY1mWg/od6/public/values?alt=json', function(data) {
 for (var i = 0; data.feed.entry[i].gsx$id.$t !== ""; i++) {
     
  FEid[i] = data.feed.entry[i].gsx$id.$t;
  FEnazev[i] = data.feed.entry[i].gsx$nazev.$t;
  FEkraj[i] = data.feed.entry[i].gsx$kraj.$t;
  FEvlozil[i] = data.feed.entry[i].gsx$vlozil.$t;
  FEeditor[i] = data.feed.entry[i].gsx$editor.$t;
  FEstav[i] = data.feed.entry[i].gsx$stav.$t;
  FEvyprsi[i] = data.feed.entry[i].gsx$vyprsi.$t;
  FEtvar[i] = data.feed.entry[i].gsx$tvar.$t;
  FElink[i] = data.feed.entry[i].gsx$permalink.$t;
  FEatributy[i] = data.feed.entry[i].gsx$atribut.$t;
  konec++;  
 }    
});

//fce k záložce
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;
}

//fce obsah záložky
function getId(node)
{
	return document.getElementById(node);
}

//fce záložka obsah
function freedit_init()
{
	var addon = document.createElement('section');
	//addon.id = "freedit-addon";

    //zavolat permalink
    var href = $('.WazeControlPermalink a').attr('href');

    var lon = parseFloat(getQueryString(href, 'lon'));
    var lat = parseFloat(getQueryString(href, 'lat'));
    var zoom = parseInt(getQueryString(href, 'zoom'));
    
    // mezera  &nbsp; /nové okno  target="_blank" /
    /*addon.innerHTML = '<b><u><a href="https://docs.google.com/forms/d/1Xs8J_hfjtePXo9XhymZSfJ3hiFuwYGvtmS-470ibtIE/viewform?entry.1259126728=https://www.waze.com/cs/editor/?env%3Drow%26lon%3D' + lon + '%26lat%3D' + lat + '%26zoom%3D' + zoom + '" target="_blank">Formulář pro zadání nového</a></u></b>';*/
    addon.innerHTML = '<b><u><a href="https://docs.google.com/forms/d/1Xs8J_hfjtePXo9XhymZSfJ3hiFuwYGvtmS-470ibtIE/viewform" target="_blank">Formulář pro zadání nového</a></u></b>';
    addon.innerHTML += '<br><u><a href="https://docs.google.com/spreadsheets/d/1wywD5uYNmejO_t6Gufzu5tBW0SeVAFdr2KVdeSY1mWg/edit#gid=0" target="_blank">Tabulka</a></u></b>&nbsp<i><font size="1">(online přehled a seznam)</font></i>';
    addon.innerHTML += '<br><u><a href="https://www.waze.com/forum/viewtopic.php?f=274&amp;t=134151#p1065158&quot;" target="_blank">Fórum</a></u>&nbsp;<i><font size="1">(Rozcestník / chat místnost)</font></i>';
    addon.innerHTML += '<br><b><u><a href="https://docs.google.com/forms/d/1fVT1LuYThOO8zvlsAyMtzNrUh1coDsz5muv--quIFAo/viewform" target="_blank">Formulář k přihlášení editování</u></a></b></br><i><font size="1">(změnu stavu např. ke kontrole, zkontrolováno, atd..)</font></i>';
    addon.innerHTML += '<br><br>';
    addon.innerHTML += '<b>Horké tipy: </b><i><font size="1">(vyprší za:)</font></i><br>';
    for (var h = 0; h < konec; h++) {
        if (FEvyprsi[h] < 25 && FEvyprsi[h] > 0) {
            if (FEeditor[h] === "") {
            addon.innerHTML += '<i>' + FEvyprsi[h] + 'dnů </i><u><a href="' + FElink[h] + '" target="_blank">Freedit ' + FEid[h] + '</a></u> ' + FEatributy[h] + ' &nbsp;<u><a href="https://docs.google.com/forms/d/1fVT1LuYThOO8zvlsAyMtzNrUh1coDsz5muv--quIFAo/viewform?entry.1410492847=' + FEid[h] + ' ' + FEnazev[h] + '&entry.1719066620" target="_blank">chci ho</a></u><br>';
            }
        }
    }
    addon.innerHTML += '<br><b>Edituje se: </b><i><font size="1"></font></i><br>';
    for (var h = 0; h < konec; h++) {
        if (FEstav[h] == "1") {
            addon.innerHTML += '<u><a href="' + FElink[h] + '" target="_blank">Freedit ' + FEid[h] + '</a></u> ' + FEeditor[h]+ ' : ' + FEatributy[h] + '</u><br>';
            
        }
    }
    addon.innerHTML += '<br><b>Ke kontrlole: </b><i><font size="1"><a href="https://docs.google.com/forms/d/1fVT1LuYThOO8zvlsAyMtzNrUh1coDsz5muv--quIFAo/viewform" target="_blank">(použij formulář)</u></a></font></i><br>';
    for (var h = 0; h < konec; h++) {
        if (FEstav[h] == "2") {
            addon.innerHTML += '<u><a href="' + FElink[h] + '" target="_blank">Freedit ' + FEid[h] + '</a></u> ' + FEeditor[h]+ ' : ' + FEatributy[h] + '</u><br>';
            
        }
    }
    addon.innerHTML += '<br><b>Chyby: </b><i><font size="1"><a href="https://www.waze.com/forum/viewtopic.php?f=274&amp;t=134151#p1065158&quot;" target="_blank">(více info Fórum/rozcestník)</a></font></i><br>';
    for (var h = 0; h < konec; h++) {
        if (FEstav[h] == "4") {
            addon.innerHTML += '<u><a href="' + FElink[h] + '" target="_blank">Freedit ' + FEid[h] + '</a></u> ' + FEeditor[h]+ ' : ' + FEatributy[h] + '</u><br>';
            
        }
    }
    addon.innerHTML += '<font size="1"><br>Celkový počet načtených Freeditů : </b>' + konec + '</i></font>';
    addon.innerHTML += '<font size="1"><br>Legenda: <i><a href="https://www.waze.com/forum/viewtopic.php?f=22&t=136397" target="_blank"> (Script Freedit L1+ verze ' + fe_verze + ')</a></i></font>';
    addon.innerHTML += '<font size="1"><br>G - oprava geometrie <br> K - kreslit nové uličky / parkoviště / areály <br> O - kontrola odbočení / jednosměrek <br> N - kontrola názvu ulic / obce</font>'; //vytvoří odkaz v tabu a připojí proměnnou
    
    var userTabs = getId('user-info');
	var navTabs = getElementsByClassName('nav-tabs', userTabs)[0];
	var tabContent = getElementsByClassName('tab-content', userTabs)[0];

	newtab = document.createElement('li');
	newtab.innerHTML = '<a href="#sidepanel-freedit" data-toggle="tab">Freedit</a>';
	navTabs.appendChild(newtab);

	addon.id = "sidepanel-freedit";
	addon.className = "tab-pane";
	tabContent.appendChild(addon); 
   
}

//fce wait co volá freedit_init
function freedit_wait()
{
	if ((typeof(Waze.model.countries.objects) === 'undefined') || (Object.keys(Waze.model.countries.objects).length === 0)) {
		setTimeout(freedit_wait, 500);
	} else {
		hasStates = Waze.model.hasStates();
		freedit_init();
	}
}

//volání fce a samotný script
freedit_bootstrap();

/*--------------------------------------------------------------------------------------
poznámky pod čarou :D

*/