您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allow delete visible, unvalidated and in your managed area all speed camera in 1 click!
// ==UserScript== // @name WME Invalidated Camera Mass Eraser // @namespace @UCME_Myriades // @description Allow delete visible, unvalidated and in your managed area all speed camera in 1 click! // @include https://www.waze.com/editor/* // @include https://www.waze.com/*/editor/* // @icon // @version 0.5.1 // @grant WME_GB_Myriades // ==/UserScript== var wme_ucme_script_name = 'WME Unvalidated Camera Mass Eraser'; wme_ucme_version = GM_info.script.version; var wme_ucme_script_url = 'https://greasyfork.org/scripts/2377-wme-invalidated-camera-mass-eraser'; /* bootstrap, will call initialiseHighlights() */ function UCME_bootstrap(){ UCME_addLog('init'); if (typeof(unsafeWindow) === "undefined"){ unsafeWindow = ( function () { var dummyElem = document.createElement('p'); dummyElem.setAttribute('onclick', 'return window;'); return dummyElem.onclick(); }) (); } /* begin running the code! */ window.setTimeout(UCME_init, 500); } /* helper function */ function onScreen(obj){ if(obj.geometry)return UCME_waze_Map.getExtent().intersectsBounds(obj.geometry.getBounds()); return false; } function getId(node) { return document.getElementById(node); } function UCME_addLog(UCME_text){ console.log('WME_UCME_' + wme_ucme_version + ' : ' + UCME_text); } function UCME_del_cams(){ UCME_addLog('del cams called'); if(UCME_waze_Map.camerasLayer.visibility === false)return; UCME_addLog('cam layer ok'); if(UCME_waze_controler.zoom < 1)return; UCME_addLog('zoom ok'); var delCams = 0; for(var cams in UCME_waze_cameras.objects){ var the_cam = UCME_waze_cameras.objects[cams]; if(!onScreen(the_cam)){ UCME_addLog('Cam n° : ' + cams + ' not on screen -> not deleted'); continue; } if(the_cam.attributes.validated === true){ UCME_addLog('Cam n° : ' + cams + ' already validated -> not deleted'); continue; } if(the_cam.state == 'Delete'){ UCME_addLog('Cam n° : ' + cams + ' already deleted -> do not delete again'); continue; } if(the_cam.attributes.permissions == -1){ UCME_addLog('Cam n° : ' + cams + ' is in editable area -> OK deleted'); delCams++; UCME_waze_model.actionManager.add(new DeleteObject(UCME_waze_cameras.objects[cams])); } else UCME_addLog('Cam n° : ' + cams + ' is NOT in editable area -> not deleted'); } UCME_addLog('Deleted cams : ' + delCams); } function UCME_html(){ WME_UCME_addon = document.createElement('div'); WME_UCME_addon.id = 'UCME_btn'; WME_UCME_addon.innerHTML = '<input type="button" id="_UCME_btn" value="Delete unvalidated cameras" /><hr>'; UCME_userInfos.appendChild(WME_UCME_addon); // Event getId('_UCME_btn').onclick = UCME_del_cams; UCME_addLog('HTML renderred'); } function UCME_init(){ // Waze object needed UCME_Waze = unsafeWindow.W; if(typeof(UCME_Waze) === 'undefined'){ UCME_addLog('unsafeWindow.W NOK'); window.setTimeout(UCME_init, 500); return; } UCME_waze_loginmanager = UCME_Waze.loginManager; if(typeof(UCME_waze_loginmanager) === 'undefined'){ UCME_addLog('login manager NOK'); window.setTimeout(UCME_init, 500); return; } UCME_waze_user = UCME_waze_loginmanager.user; if(typeof(UCME_waze_user) === 'undefined' || UCME_waze_user === null){ UCME_addLog('user NOK'); window.setTimeout(UCME_init, 500); return; } if(UCME_waze_user.rank < 2){ UCME_addLog('User rank is not high enough. Exiting script.'); return; } UCME_addLog('User rank OK : ' + eval(UCME_waze_user.rank + 1)); UCME_waze_controler = UCME_Waze.controller; if(typeof(UCME_waze_controler) === 'undefined'){ UCME_addLog('UCME_waze_controler NOK'); window.setTimeout(UCME_init, 500); return; } UCME_waze_Map = UCME_Waze.map; if(typeof(UCME_waze_Map) === 'undefined'){ UCME_addLog('map NOK'); window.setTimeout(UCME_init, 500); return; } UCME_waze_model = UCME_Waze.model; if(typeof(UCME_waze_model) === 'undefined'){ UCME_addLog('model NOK'); window.setTimeout(UCME_init, 500); return; } UCME_waze_cameras = UCME_waze_model.cameras; if(typeof(UCME_waze_cameras) === 'undefined'){ UCME_addLog('cameras NOK'); window.setTimeout(UCME_init, 500); return; } // New WME compatibility if(typeof(unsafeWindow.require) === "undefined"){ UCME_addLog('require NOK'); window.setTimeout(UCME_init, 500); return; } require = unsafeWindow.require; DeleteObject = require("Waze/Action/DeleteObject"); UCME_addLog('Waze OK'); // Waze GUI needed UCME_userInfos = getId('user-details'); if(typeof(UCME_userInfos) === 'undefined'){ UCME_addLog('userInfos NOK'); window.setTimeout(UCME_init, 500); return; } // Then do the job // HTML UCME_html(); } /* engage! =================================================================== */ UCME_bootstrap(); /* end ======================================================================= */