WME Invalidated Camera Mass Eraser

Allow delete visible, unvalidated and in your managed area all speed camera in 1 click!

目前为 2014-06-11 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name WME Invalidated Camera Mass Eraser
  3. // @namespace @UCME_Myriades
  4. // @description Allow delete visible, unvalidated and in your managed area all speed camera in 1 click!
  5. // @include https://www.waze.com/editor/*
  6. // @include https://www.waze.com/*/editor/*
  7. // @icon
  8. // @version 0.4.2
  9. // @grant WME_GB_Myriades
  10. // ==/UserScript==
  11.  
  12. var wme_ucme_script_name = 'WME Unvalidated Camera Mass Eraser';
  13. wme_ucme_version = "0.4.1";
  14. var wme_ucme_script_url = 'https://greasyfork.org/scripts/2377-wme-invalidated-camera-mass-eraser';
  15.  
  16. /* bootstrap, will call initialiseHighlights() */
  17. function UCME_bootstrap(){
  18. UCME_addLog('init');
  19. if (typeof(unsafeWindow) === "undefined"){
  20. unsafeWindow = ( function () {
  21. var dummyElem = document.createElement('p');
  22. dummyElem.setAttribute('onclick', 'return window;');
  23. return dummyElem.onclick();
  24. }) ();
  25. }
  26. /* begin running the code! */
  27. window.setTimeout(UCME_init, 500);
  28. }
  29.  
  30. /* helper function */
  31. function getElementsByClassName(classname, node) {
  32. if(!node) node = document.getElementsByTagName("body")[0];
  33. var a = [];
  34. var re = new RegExp('\\b' + classname + '\\b');
  35. var els = node.getElementsByTagName("*");
  36. for (var i=0,j=els.length; i<j; i++)
  37. if (re.test(els[i].className)) a.push(els[i]);
  38. return a;
  39. }
  40.  
  41. function getId(node) {
  42. return document.getElementById(node);
  43. }
  44.  
  45. function getSelectedValue(node){
  46. var t = getId(node);
  47. return t.options[t.selectedIndex].value;
  48. }
  49.  
  50. function UCME_addLog(UCME_text){
  51. console.log('WME_UCME_' + wme_ucme_version + ' : ' + UCME_text);
  52. }
  53.  
  54. function UCME_del_cams(){
  55. if(UCME_waze_Map.camerasLayer.visibility === false)return;
  56. if(UCME_waze_controler.zoom < 1)return;
  57. var action = [];
  58. // action.length = 0;
  59. for(var cams in UCME_waze_cameras.objects){
  60. UCME_addLog(cams);
  61. }
  62. for(var cams in UCME_waze_cameras.objects){
  63. var the_cam = UCME_waze_cameras.objects[cams];
  64. if(!the_cam.onScreen(the_cam))continue;
  65. if(the_cam.attributes.validated === true)continue;
  66. if(the_cam.state == 'Delete')continue;
  67. if(the_cam.attributes.permissions == -1){
  68. action.unshift(new UCME_Waze.Action.DeleteObject(UCME_waze_cameras.objects[cams]));
  69. }
  70. }
  71. var delCams = action.length;
  72. if(delCams > 0){
  73. UCME_addLog('Invalidated cam deleted : ' + delCams);
  74. UCME_waze_model.actionManager.add(new UCME_Waze.Action.MultiAction(action));
  75. }
  76. }
  77.  
  78. function UCME_html(){
  79. WME_UCME_addon = document.createElement('div');
  80. WME_UCME_addon.id = 'UCME_btn';
  81. WME_UCME_addon.innerHTML = '<input type="button" id="_UCME_btn" value="Delete unvalidated cameras" /><hr>';
  82. UCME_userInfos.appendChild(WME_UCME_addon);
  83. UCME_addLog('HTML renderred');
  84. }
  85.  
  86. function UCME_init(){
  87. // Waze object needed
  88. UCME_Waze = unsafeWindow.W;
  89. if(typeof(UCME_Waze) === 'undefined'){
  90. UCME_addLog('unsafeWindow.W NOK');
  91. window.setTimeout(UCME_init, 500);
  92. return;
  93. }
  94. UCME_waze_loginmanager = UCME_Waze.loginManager;
  95. if(typeof(UCME_waze_loginmanager) === 'undefined'){
  96. UCME_addLog('login manager NOK');
  97. window.setTimeout(UCME_init, 500);
  98. return;
  99. }
  100. UCME_waze_user = UCME_waze_loginmanager.user;
  101. if(typeof(UCME_waze_user) === 'undefined' || UCME_waze_user === null){
  102. UCME_addLog('user NOK');
  103. window.setTimeout(UCME_init, 500);
  104. return;
  105. }
  106. if(UCME_waze_user.rank < 2){
  107. UCME_addLog('User rank is not high enough. Exiting script.');
  108. return;
  109. }
  110. UCME_addLog('User rank OK : ' + eval(UCME_waze_user.rank + 1));
  111. UCME_waze_controler = UCME_Waze.controller;
  112. if(typeof(UCME_waze_controler) === 'undefined'){
  113. UCME_addLog('UCME_waze_controler NOK');
  114. window.setTimeout(UCME_init, 500);
  115. return;
  116. }
  117. UCME_waze_Map = UCME_Waze.map;
  118. if(typeof(UCME_waze_Map) === 'undefined'){
  119. UCME_addLog('map NOK');
  120. window.setTimeout(UCME_init, 500);
  121. return;
  122. }
  123. UCME_waze_model = UCME_Waze.model;
  124. if(typeof(UCME_waze_model) === 'undefined'){
  125. UCME_addLog('model NOK');
  126. window.setTimeout(UCME_init, 500);
  127. return;
  128. }
  129. UCME_waze_cameras = UCME_waze_model.cameras;
  130. if(typeof(UCME_waze_cameras) === 'undefined'){
  131. UCME_addLog('cameras NOK');
  132. window.setTimeout(UCME_init, 500);
  133. return;
  134. }
  135. UCME_addLog('Waze OK');
  136. // Waze GUI needed
  137. UCME_userInfos = getId('user-details');
  138. if(typeof(UCME_userInfos) === 'undefined'){
  139. UCME_addLog('userInfos NOK');
  140. window.setTimeout(UCME_init, 500);
  141. return;
  142. }
  143. // Then do the job
  144. // HTML
  145. UCME_html();
  146. // Event
  147. getId('_UCME_btn').onclick = UCME_del_cams;
  148. }
  149.  
  150. /* engage! =================================================================== */
  151. UCME_bootstrap();
  152. /* end ======================================================================= */