WME Split POI

Split POI with a new seg

当前为 2018-04-25 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name WME Split POI
  3. // @namespace https://greasyfork.org/fr/scripts/13008-wme-split-poi
  4. // @description Split POI with a new seg
  5. // @description:fr Découpage d'un POI en deux en utisant un nouveau segment
  6. // @include https://www.waze.com/editor*
  7. // @include https://www.waze.com/*/editor*
  8. // @include https://beta.waze.com/editor*
  9. // @include https://beta.waze.com/*/editor*
  10. // @exclude https://www.waze.com/user*
  11. // @exclude https://www.waze.com/*/user*
  12. // @icon data:image/png;base64,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
  13. // @author seb-d59
  14. // @version 2.2
  15. // @grant none
  16. // ==/UserScript==
  17.  
  18. var debug=false;
  19. var WMESP_Version = GM_info.script.version;
  20. var WMESP_OldVersion = WMESP_Version;
  21. var WMESP_API = {};
  22. WMESP_API.require = {};
  23.  
  24. var WMESP_Maj = {
  25. fr: "Mise à jour WME Split POI: v" + WMESP_Version + "\nCompatibilité New WME Prod",
  26. en: "Update WME Split POI: v" + WMESP_Version + "\nCompatibility New WME Prod"
  27. };
  28.  
  29. /* bootstrap, will call initialize() */
  30. function WMESP_bootstrap(){
  31. log('Init');
  32. if (typeof(unsafeWindow) === "undefined"){
  33. unsafeWindow = ( function () {
  34. var dummyElem = document.createElement('p');
  35. dummyElem.setAttribute('onclick', 'return window;');
  36. return dummyElem.onclick();
  37. }) ();
  38. }
  39. /* begin running the code! */
  40. setTimeout(initialize, 1000);
  41. }
  42.  
  43. //========== Helper ==============================//
  44. function getElementsByClassName(classname, node) {
  45. if(!node) node = document.getElementsByTagName("body")[0];
  46. var a = [];
  47. var re = new RegExp('\\b' + classname + '\\b');
  48. var els = node.getElementsByTagName("*");
  49. for (var i=0,j=els.length; i<j; i++)
  50. if (re.test(els[i].className)) a.push(els[i]);
  51. return a;
  52. }
  53.  
  54. function getId(node) {
  55. return document.getElementById(node);
  56. }
  57.  
  58. function log(msg, obj)
  59. {
  60. if (obj==null)
  61. console.log ("WME Split POI v" + WMESP_Version + " - " + msg);
  62. else if (debug)
  63. console.debug("WME Split POI v" + WMESP_Version + " - " + msg + " " ,obj);
  64. }
  65. function IsJsonString(str) {
  66. try {
  67. JSON.parse(str);
  68. } catch (e) {
  69. return false;
  70. }
  71. return true;
  72. }
  73.  
  74. function cloneObj(obj){
  75. var copy = JSON.parse(JSON.stringify(obj));
  76. return copy;
  77. }
  78.  
  79. //========== /Helper ==============================//
  80.  
  81. function WMESP_TestVersion() {
  82.  
  83. if (typeof(localStorage.WMESPVersion) !== "undefined" && IsJsonString(localStorage.getItem('WMESPVersion'))) {
  84. WMESP_OldVersion=JSON.parse(localStorage.WMESPVersion);
  85. }else WMESP_OldVersion = "1.1";
  86.  
  87. var locale = navigator.language.match(/fr|en/);
  88. var WMESPMaj = "";
  89. if(locale != null){
  90. switch(locale[0]) {
  91. case "fr":
  92. WMESPMaj=WMESP_Maj.fr;
  93. break;
  94. case "en":
  95. WMESPMaj=WMESP_Maj.en;
  96. break;
  97. }
  98. }else if(locale == null){
  99. WMESPMaj=WMESP_Maj.en;
  100. }
  101. log('WMESP_OldVersion ='+WMESP_OldVersion+'; WMESP_Version ='+WMESP_Version);
  102. if (WMESP_OldVersion != WMESP_Version) {
  103. alert(WMESPMaj);
  104. WMESP_OldVersion = WMESP_Version;
  105. }
  106. localStorage.setItem('WMESPVersion', JSON.stringify(WMESP_Version));
  107.  
  108. }
  109.  
  110. function initialize()
  111. {
  112. log("init");
  113. initializeWazeObjects();
  114. }
  115.  
  116. function waitForObject(object)
  117. {
  118. var obj=null;
  119. if (object.r==true)
  120. {
  121. if (debug) log ("eval: " + (object.s!=null?object.s:'dummy') + "="+ ((typeof(window.require)=="function")?"require":"WMESP_API.require") +"(\"" + object.o + "\")");
  122. eval ((object.s!=null?object.s:'dummy') + '=' + ((typeof(window.require)=="function")?'require':'WMESP_API.require') +'("' + object.o + '")');
  123. eval ("obj=" + (object.s!=null?object.s:'dummy'));
  124. log("obj", obj);
  125. }else{
  126. if (debug) log ("eval: " + "typeof(unsafeWindow." + object.o.replace(/\//g, '.') + ")");
  127. obj=eval("typeof(unsafeWindow." + object.o.replace(/\//g, '.') + ")");
  128. }
  129. if(obj === "undefined")
  130. {
  131. log(object.o + ' KO');
  132. window.setTimeout(waitForObject.caller, 500);
  133. return false;
  134. }
  135. if (debug) log(object.s + ' OK');
  136.  
  137.  
  138. if (object.s!=null && object.r==false)
  139. eval (object.s + "=" + object.o.replace(/\//g, '.'));
  140.  
  141. return true;
  142.  
  143.  
  144.  
  145. }
  146.  
  147.  
  148. function initializeWazeObjects()
  149. {
  150. var objectToCheck = [
  151. {o: "W", s: "waze", r: false},
  152. {o: "W.map", s: "wazeMap", r: false},
  153. {o: "W.model", s: "wazeModel", r: false},
  154. {o: "OL", s: "wazeOL", r: false},
  155. {o: "W.loginManager", s: "loginManager", r: false},
  156. {o: "W.selectionManager", s: "selectionManager", r: false},
  157. {o: "W.loginManager.user", s: "me", r: false},
  158. {o: "Waze/Action/UpdateObject", s: "WazeActionUpdateObject", r: true},
  159. {o: "Waze/Action/UpdateSegmentGeometry", s: "WazeUpdateSegmentGeometry", r: true},
  160. {o: "Waze/Action/UpdateFeatureAddress", s: "WazeActionUpdateFeatureAddress", r: true},
  161. {o: "Waze/Action/DeleteObject", s: "WazeActionDeleteObject", r: true},
  162. {o: "Waze/Action/UpdateFeatureGeometry", s: "WazeActionUpdateFeatureGeometry", r: true},
  163. {o: "Waze/Feature/Vector/Landmark", s: "WazefeatureVectorLandmark", r: true},
  164. {o: "Waze/Action/CreateObject", s: "WazeActionCreateObject", r: true},
  165. {o: "Waze/Action/AddLandmark", s: "WazeActionAddLandmark", r: true},
  166. {o: "localStorage", s: null, r: false}
  167. ];
  168. for (var i=0; i<objectToCheck.length; i++)
  169. {
  170. if (!waitForObject(objectToCheck[i])) return;
  171. }
  172. initializeWazeUI();
  173.  
  174. }
  175. function initializeWazeUI()
  176. {
  177.  
  178. var userInfo = getId('user-info');
  179. if (userInfo==null)
  180. {
  181. window.setTimeout(initializeWazeUI, 500);
  182. return;
  183. }
  184.  
  185. var navTabs=userInfo.getElementsByTagName('ul');
  186. if (navTabs.length==0)
  187. {
  188. window.setTimeout(initializeWazeUI, 500);
  189. return;
  190. }
  191. if (typeof(navTabs[0])==='undefined')
  192. {
  193. window.setTimeout(initializeWazeUI, 500);
  194. return;
  195. }
  196. var tabContents=userInfo.getElementsByTagName('div');
  197. if (tabContents.length==0)
  198. {
  199. window.setTimeout(initializeWazeUI, 500);
  200. return;
  201. }
  202. if (typeof(tabContents[0])==='undefined')
  203. {
  204. window.setTimeout(initializeWazeUI, 500);
  205. return;
  206. }
  207. WMESP_TestVersion();
  208. selectionManager.events.register("selectionchanged", null, WMESP_newSelectionAvailable);
  209. log("init done.");
  210. }
  211.  
  212. function WMESP_newSelectionAvailable()
  213. {
  214. if (selectionManager.getSelectedFeatures().length !=1 )
  215. return;
  216. var selectedObject = selectionManager.getSelectedFeatures()[0].model;
  217. if (selectedObject.type!="venue")
  218. return;
  219. var attributes = selectedObject.attributes;
  220. if (!attributes.geometry.hasOwnProperty("components"))
  221. return;
  222. if (!((attributes.categories == "NATURAL_FEATURES" ) || (attributes.categories == "ISLAND" ) || (attributes.categories == "SEA_LAKE_POOL") || (attributes.categories == "RIVER_STREAM" ) || (attributes.categories == "FOREST_GROVE") || (attributes.categories == "FARM" ) || (attributes.categories == "CANAL" ) || (attributes.categories == "SWAMP_MARSH" ) || (attributes.categories == "DAM" )))
  223. return;
  224. log("selectionManager",selectionManager);
  225. var editPanel=getId('edit-panel');
  226. if (editPanel.firstElementChild.style.display=='none')
  227. window.setTimeout(WMESP_newSelectionAvailable, 100);
  228. // ok: 1 selected item and pannel is shown
  229.  
  230. // On verifie que le segment est éditable
  231. if (!objIsEditable(selectedObject))
  232. return;
  233. if (selectedObject.type=="venue")
  234. {
  235. item=getId("landmark-edit-general");
  236. var attSection = getElementsByClassName("attributes-form side-panel-section", item);
  237. /*var btnResidential = getElementsByClassName("btn-link toggle-residential",item);
  238. var parent1 = btnResidential[0].parentNode;
  239. var parent = parent1.parentNode;
  240. var WMESP_Controle=document.createElement('Div');
  241. WMESP_Controle.id="WMESP-Controle";
  242. WMESP_Controle.innerHTML+='<br><input type="button" id="_btnSplitPOI" class="action-button waze-btn waze-btn-white" value="Split POI"><br>';
  243. attSection[0].insertBefore(WMESP_Controle, parent);
  244. getId("_btnSplitPOI").onclick=SplitPOI;
  245. */
  246. var btnGoogle = getElementsByClassName("external-providers-view",item);
  247. var parent1 = btnGoogle[0].parentNode;
  248. var parent = parent1.parentNode;
  249. var WMESP_Controle=document.createElement('Div');
  250. WMESP_Controle.id="WMESP-Controle";
  251. WMESP_Controle.innerHTML+='<br><input type="button" id="_btnSplitPOI" class="action-button waze-btn waze-btn-white" value="Split POI"><br>';
  252. attSection[0].insertBefore(WMESP_Controle, parent);
  253. getId("_btnSplitPOI").onclick=SplitPOI;
  254. }
  255. }
  256.  
  257.  
  258. function onScreen(obj)
  259. {
  260. if (obj.geometry)
  261. {
  262. return(wazeMap.getExtent().intersectsBounds(obj.geometry.getBounds()));
  263. }
  264. return false;
  265. }
  266.  
  267. function objIsEditable(obj)
  268. {
  269. if (obj==null) return false;
  270. if (Waze.loginManager.user.isCountryManager()) return true;
  271. if (obj.attributes.permissions == 0)
  272. return false;
  273.  
  274. return true;
  275. }
  276.  
  277. function SplitPOI()
  278. {
  279. if (selectionManager.getSelectedFeatures().length !=1 )
  280. return;
  281. var poi = selectionManager.getSelectedFeatures()[0].model;
  282. if (poi.type!="venue")
  283. return;
  284. var poiAttr = poi.attributes;
  285. if (!poiAttr.geometry.components[0].hasOwnProperty("components"))
  286. return;
  287. var poiPoints = [];
  288. var segPoints = [];
  289.  
  290. log("poi",poi);
  291. log("poiAttr",poiAttr);
  292. for (var seg in Waze.model.segments.objects)
  293. {
  294. var segment = Waze.model.segments.get(seg);
  295. var segAttr = segment.attributes;
  296. if (segAttr.primaryStreetID==null)
  297. {
  298. if (onScreen(segment))
  299. {
  300. var segLineString = segAttr.geometry.clone();
  301. }
  302. }
  303. }
  304. var poiGeo = poiAttr.geometry.clone();
  305. var oldPoiGeo = poiAttr.geometry.clone();
  306. var poiLineString = poiGeo.components[0].clone();
  307. var poiLine = new OpenLayers.Geometry.LinearRing();
  308. var segLine = new OpenLayers.Geometry.LinearRing();
  309. var intersectPoint = [];
  310. var intersectLine = [];
  311. // Calcul des point d'intersection seg // poi
  312. for (var n=0; n < parseInt(poiLineString.components.length-1); n++)
  313. {
  314. poiLine.components["0"] = poiLineString.components[n].clone();
  315. poiLine.components["1"] = poiLineString.components[n+1].clone();
  316. for (var m=0; m < parseInt(segLineString.components.length-1); m++)
  317. {
  318. segLine.components["0"] = segLineString.components[m].clone();
  319. segLine.components["1"] = segLineString.components[m+1].clone();
  320. if (poiLine.intersects(segLine))
  321. {
  322. intersectPoint.push({index: n, intersect: intersection(poiLine, segLine)});
  323. }
  324. segLine.removeComponent("0");
  325. segLine.removeComponent("1");
  326. }
  327. poiLine.removeComponent("0");
  328. poiLine.removeComponent("1");
  329. }
  330. log('intersectPoint= ',intersectPoint);
  331. // intégration des points au contour du POI avec memo du nouvel index
  332. var i=1;
  333. for (var n=0; n < intersectPoint.length; n++)
  334. {
  335. var point = intersectPoint[n].intersect;
  336. var index = parseInt(intersectPoint[n].index)+i;
  337. poiLineString.addComponent(point, index);
  338. intersectPoint[n].newIndex = index;
  339. i++;
  340. }
  341. // création des deux nouvelles géométries
  342. var TabLine1 = [];
  343. var TabLine2 = [];
  344. var index1 = parseInt(intersectPoint[0].newIndex);
  345. var index2 = parseInt(intersectPoint[1].newIndex);
  346. for (var n=0; n < parseInt(poiLineString.components.length); n++)
  347. {
  348. var x = poiLineString.components[n].x;
  349. var y = poiLineString.components[n].y;
  350. var point = new OpenLayers.Geometry.Point(x ,y);
  351. if (n < index1){
  352. TabLine1.push(point);
  353.  
  354. }
  355. if (n == index1){
  356. TabLine1.push(point);
  357. TabLine2.push(point);
  358. }
  359. if ((index1 < n) && (n < index2)){
  360. TabLine2.push(point);
  361. }
  362. if (n == index2){
  363. TabLine1.push(point);
  364. TabLine2.push(point);
  365. }
  366. if (index2 < n){
  367. TabLine1.push(point);
  368. }
  369. }
  370. /*
  371. log('TabLine1['+0+']= ',TabLine1[0]);
  372. log('TabLine1['+(TabLine1.length-1)+']= ',TabLine1[(TabLine1.length-1)]);
  373. log('TabLine2['+0+']= ',TabLine2[0]);
  374. log('TabLine2['+(TabLine2.length-1)+']= ',TabLine2[(TabLine2.length-1)]);
  375. */
  376. //log('TabLine1= ',TabLine1);
  377. //log('TabLine2= ',TabLine2);
  378. var LineString1 = new OpenLayers.Geometry.LinearRing(TabLine1);
  379. var LineString2 = new OpenLayers.Geometry.LinearRing(TabLine2);
  380. log('LineString1= ',LineString1);
  381. log('LineString2= ',LineString2);
  382. poiGeo = new OpenLayers.Geometry.Polygon(LineString1);
  383. log('poiGeo = ',poiGeo);
  384. wazeModel.actionManager.add(new WazeActionUpdateFeatureGeometry(poi, Waze.model.venues,oldPoiGeo,poiGeo));
  385. // Création du nouveau poi
  386. clonePoi = new WazefeatureVectorLandmark();
  387. var clonePoiAttr = clonePoi.attributes;
  388.  
  389. clonePoiAttr.adLocked = poi.attributes.adLocked;
  390. clonePoiAttr.aliases = poi.attributes.aliases;
  391. clonePoiAttr.approved = poi.attributes.approved;
  392. clonePoiAttr.categories = poi.attributes.categories;
  393. clonePoiAttr.description = poi.attributes.description;
  394. clonePoiAttr.externalProviderIDs = poi.attributes.externalProviderIDs;
  395. clonePoiAttr.houseNumber = poi.attributes.houseNumber;
  396. clonePoiAttr.openingHours = poi.attributes.openingHours;
  397. clonePoiAttr.lockRank = poi.attributes.lockRank;
  398. clonePoiAttr.name = poi.attributes.name;
  399. clonePoiAttr.residential = poi.attributes.residential;
  400. clonePoiAttr.phone = poi.attributes.phone;
  401. clonePoiAttr.services = poi.attributes.services;
  402. clonePoiAttr.url = poi.attributes.url;
  403. //clonePoiAttr.entryExitPoints = poi.attributes.entryExitPoints;
  404. //clonePoiAttr.images = poi.attributes.images;
  405. clonePoi.geometry = new OpenLayers.Geometry.Polygon(LineString2);
  406.  
  407. log('clonePoi',clonePoi);
  408. wazeModel.actionManager.add(new WazeActionAddLandmark(clonePoi));
  409. // copie du nom et mise à jour du nouveau poi
  410. var street = wazeModel.streets.objects[poi.attributes.streetID];
  411. streetName = street.name;
  412. var cityID = street.cityID;
  413. var city = wazeModel.cities.objects[cityID];
  414. var stateID = wazeModel.cities.objects[cityID].attributes.stateID;
  415. var state = wazeModel.states.objects[stateID];
  416. var countryID = wazeModel.cities.objects[cityID].attributes.countryID;
  417. var country = wazeModel.countries.objects[countryID];
  418. if (!street.isEmpty || !city.attributes.isEmpty){ // nok
  419. var newAtts = { emptyStreet: true, stateID: stateID, countryID: countryID, cityName: city.attributes.name, streetName: streetName, emptyCity: true };
  420. log ('Natural feature POI: no street name and city');
  421. wazeModel.actionManager.add(new WazeActionUpdateFeatureAddress(poi, newAtts));
  422. }
  423. var street = wazeModel.streets.objects[clonePoi.attributes.streetID];
  424. streetName = street.name;
  425. var cityID = street.cityID;
  426. var city = wazeModel.cities.objects[cityID];
  427. var stateID = wazeModel.cities.objects[cityID].attributes.stateID;
  428. var state = wazeModel.states.objects[stateID];
  429. var countryID = wazeModel.cities.objects[cityID].attributes.countryID;
  430. var country = wazeModel.countries.objects[countryID];
  431. if (!street.isEmpty || !city.attributes.isEmpty){ // nok
  432. var newAtts = { emptyStreet: true, stateID: stateID, countryID: countryID, cityName: city.attributes.name, streetName: streetName, emptyCity: true };
  433. log ('Natural feature POI: no street name and city');
  434. wazeModel.actionManager.add(new WazeActionUpdateFeatureAddress(clonePoi, newAtts));
  435. }
  436. //log('wazeModel.actionManager = ',wazeModel.actionManager);
  437.  
  438. }
  439. function intersection(D1, D2)
  440. {
  441. var a,b,c,d,x,y;
  442. var seg = {}; //{x1, y1, x2, y2};
  443. var seg1 = {}; //{x1, y1, x2, y2};
  444. var seg2 = {}; //{x1, y1, x2, y2};
  445. var options = {};
  446. options.point = true;
  447. if (D1.components[0].x < D1.components[1].x)
  448. {
  449. seg1.x1 = D1.components[0].x;
  450. seg1.y1 = D1.components[0].y;
  451. seg1.x2 = D1.components[1].x;
  452. seg1.y2 = D1.components[1].y;
  453. }else if (D1.components[0].x > D1.components[1].x)
  454. {
  455. seg1.x1 = D1.components[1].x;
  456. seg1.y1 = D1.components[1].y;
  457. seg1.x2 = D1.components[0].x;
  458. seg1.y2 = D1.components[0].y;
  459. }
  460. if (D2.components[0].x < D2.components[1].x)
  461. {
  462. seg2.x1 = D2.components[0].x;
  463. seg2.y1 = D2.components[0].y;
  464. seg2.x2 = D2.components[1].x;
  465. seg2.y2 = D2.components[1].y;
  466. }else if (D2.components[0].x > D2.components[1].x)
  467. {
  468. seg2.x1 = D2.components[1].x;
  469. seg2.y1 = D2.components[1].y;
  470. seg2.x2 = D2.components[0].x;
  471. seg2.y2 = D2.components[0].y;
  472. }
  473. return OpenLayers.Geometry.segmentsIntersect(seg1,seg2,options);
  474. }
  475.  
  476. if (typeof(window.require) == "function"){
  477. log("bootstrap classique");
  478. WMESP_bootstrap();
  479. }else{
  480. ///////////////////////////////////////////////
  481. /// Big thanks to dummyd2 for this Patch //
  482. ///////////////////////////////////////////////
  483. log("load patch by dummyd2");
  484.  
  485. // setup one global var and put all in
  486. var WMESPAPI = {};
  487.  
  488.  
  489. // detect URL of WME source code
  490. WMESPAPI.scripts = document.getElementsByTagName('script');
  491. WMESPAPI.url=null;
  492. for (i=0;i<WMESPAPI.scripts.length;i++)
  493. {
  494. if (WMESPAPI.scripts[i].src.indexOf('/assets-editor/js/app')!=-1)
  495. {
  496. WMESPAPI.url=WMESPAPI.scripts[i].src;
  497. break;
  498. }
  499. }
  500. if (WMESPAPI.url==null)
  501. {
  502. throw new Error("WME Hack: can't detect WME main JS");
  503. }
  504.  
  505.  
  506.  
  507. // setup a fake require and require.define
  508. WMESPAPI.require=function (e) {
  509. return WMESPAPI.require.define.modules[e];
  510. };
  511.  
  512. WMESPAPI.require.define=function (m) {
  513. if (WMESPAPI.require.define.hasOwnProperty('modules')==false)
  514. WMESPAPI.require.define.modules={};
  515. for (var p in m)
  516. {
  517. WMESPAPI.require.define.modules[p]=m[p];
  518. }
  519. };
  520.  
  521.  
  522. // save the original webpackJsonp function
  523. WMESPAPI.tmp = window.webpackJsonp;
  524.  
  525. // taken from WME code: this function is a wrapper that setup the API and may call recursively other functions
  526. WMESPAPI.t = function (n) {
  527. if (WMESPAPI.s[n]) return WMESPAPI.s[n].exports;
  528. var r = WMESPAPI.s[n] = {
  529. exports: {},
  530. id: n,
  531. loaded: !1
  532. };
  533. return WMESPAPI.e[n].call(r.exports, r, r.exports, WMESPAPI.t), r.loaded = !0, r.exports;
  534. };
  535.  
  536. // e is a copy of all WME funcs because function t need to access to this list
  537. WMESPAPI.e=[];
  538.  
  539. // the patch
  540. window.webpackJsonp = function(a, i) {
  541. // our API but we will use it only to build the require stuffs
  542. var api={};
  543. // taken from WME code. a is [1], so...
  544. for (var o, d, u = 0, l = []; u < a.length; u++) d = a[u], WMESPAPI.r[d] && l.push.apply(l, WMESPAPI.r[d]), WMESPAPI.r[d] = 0;
  545. var unknownCount=0;
  546. var classname, funcStr;
  547. // copy i in e and keep a link from classname to index in e
  548. for (o in i)
  549. {
  550. WMESPAPI.e[o] = i[o];
  551. funcStr = i[o].toString();
  552. classname = funcStr.match(/CLASS_NAME:\"([^\"]*)\"/);
  553. if (classname)
  554. {
  555. // keep the link.
  556. api[classname[1].replace(/\./g,'/').replace(/^W\//, 'Waze/')]={index: o, func: WMESPAPI.e[o]};
  557. }
  558. else
  559. {
  560. api['Waze/Unknown/' + unknownCount]={index: o, func: WMESPAPI.e[o]};
  561. unknownCount++;
  562. }
  563. }
  564. // taken from WME code: it calls the original webpackJsonp and do something else, but I don't really know what.
  565. // removed the call to the original webpackJsonp: still works...
  566. //for (tmp && tmp(a, i); l.length;) l.shift().call(null, t);
  567. for (; l.length;) l.shift().call(null, WMESPAPI.t);
  568. WMESPAPI.s[0] = 0;
  569. // run the first func of WME. This first func will call recusrsively all funcs needed to setup the API.
  570. // After this call, s will contain all instanciables classes.
  571. //var ret = WMESPAPI.t(0);
  572. // now, build the requires thanks to the link we've built in var api.
  573. var module={};
  574. var apiFuncName;
  575. unknownCount=0;
  576. for (o in i)
  577. {
  578. funcStr = i[o].toString();
  579. classname = funcStr.match(/CLASS_NAME:\"([^\"]*)\"/);
  580. if (classname)
  581. {
  582. module={};
  583. apiFuncName = classname[1].replace(/\./g,'/').replace(/^W\//, 'Waze/');
  584. module[apiFuncName]=WMESPAPI.t(api[apiFuncName].index);
  585. WMESPAPI.require.define(module);
  586. }
  587. else
  588. {
  589. var matches = funcStr.match(/SEGMENT:"segment",/);
  590. if (matches)
  591. {
  592. module={};
  593. apiFuncName='Waze/Model/ObjectType';
  594. module[apiFuncName]=WMESPAPI.t(api['Waze/Unknown/' + unknownCount].index);
  595. WMESPAPI.require.define(module);
  596. }
  597. unknownCount++;
  598. }
  599. }
  600.  
  601. // restore the original func
  602. window.webpackJsonp=WMESPAPI.tmp;
  603.  
  604. // set the require public if needed
  605. // if so: others scripts must wait for the window.require to be available before using it.
  606. //window.require=WMESPAPI.require;
  607. WMESP_API.require=WMESPAPI.require;
  608. // all available functions are in WMESPAPI.require.define.modules
  609. // console.debug this variable to read it:
  610. //console.debug('WMESPAPI Modules: ', WMESPAPI.require.define.modules);
  611. // run your script here:
  612. setTimeout(WMESP_bootstrap, 1000);
  613. // again taken from WME code. Not sure about what it does.
  614. //if (i[0]) return ret;
  615. };
  616.  
  617. // some kind of global vars and init
  618. WMESPAPI.s = {};
  619. WMESPAPI.r = {
  620. 0: 0
  621. };
  622.  
  623. // hacking finished
  624.  
  625. // load again WME through our patched func
  626. WMESPAPI.WMEHACK_Injected_script = document.createElement("script");
  627. WMESPAPI.WMEHACK_Injected_script.setAttribute("type", "application/javascript");
  628. WMESPAPI.WMEHACK_Injected_script.src = WMESPAPI.url;
  629. document.body.appendChild(WMESPAPI.WMEHACK_Injected_script);
  630. }
  631.