IITC plugin: Navigate to portal from waze

[local-2016-09-25-104955] Navigate to portal

  1. // ==UserScript==
  2. // @id iitc-plugin-waze-navigte
  3. // @name IITC plugin: Navigate to portal from waze
  4. // @category Controls
  5. // @version 0.0.2.20161001.104955
  6. // @namespace waze
  7. // @description [local-2016-09-25-104955] Navigate to portal
  8. // @include https://www.ingress.com/intel*
  9. // @include http://www.ingress.com/intel*
  10. // @match https://www.ingress.com/intel*
  11. // @match http://www.ingress.com/intel*
  12. // @include https://www.ingress.com/mission/*
  13. // @include http://www.ingress.com/mission/*
  14. // @match https://www.ingress.com/mission/*
  15. // @match http://www.ingress.com/mission/*
  16. // @grant none
  17. // ==/UserScript==
  18.  
  19.  
  20. function wrapper(plugin_info) {
  21. // ensure plugin framework is there, even if iitc is not yet loaded
  22. if(typeof window.plugin !== 'function') window.plugin = function() {};
  23.  
  24. //PLUGIN AUTHORS: writing a plugin outside of the IITC build environment? if so, delete these lines!!
  25. //(leaving them in place might break the 'About IITC' page or break update checks)
  26. plugin_info.buildName = 'local';
  27. plugin_info.dateTimeVersion = '20160925.104955';
  28. plugin_info.pluginId = 'waze-navigate';
  29. //END PLUGIN AUTHORS NOTE
  30.  
  31.  
  32.  
  33. // PLUGIN START ////////////////////////////////////////////////////////
  34.  
  35. // use own namespace for plugin
  36. window.plugin.waze = function() {};
  37.  
  38. window.plugin.waze.addLink = function(d) {
  39. var portal = window.selectedPortal;
  40. if (window.portals[portal]) {
  41. var lat = window.portals[portal].options.data.latE6/1000000;
  42. var lng = window.portals[portal].options.data.lngE6/1000000;
  43. var $link = $('#waze-link');
  44. if ($link.length == 0) {
  45. $link = $('body').append('<a id="waze-link" title="Navigate"></a></aside>');
  46. if (window.useAndroidPanes()) {
  47. $link.click(function(){
  48. window.prompt('Вставьте в браузер', $(this).attr('href'));
  49. })
  50. }
  51. }
  52. var url = 'waze://?ll=' + lat + ',' + lng + '&navigate=yes'
  53. $link.attr('href', url);
  54. }
  55. }
  56.  
  57. var setup = function () {
  58. addHook('portalSelected', window.plugin.waze.addLink);
  59.  
  60. $('head').append('<style>' +
  61. '#waze-link {' +
  62. 'position: fixed;' +
  63. 'display: block;' +
  64. 'right: 0;' +
  65. 'background-image: url(data:image/jpeg;base64,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);' +
  66. 'background-size: contain;' +
  67. 'bottom: 24px;' +
  68. 'width: 30px;' +
  69. 'z-index: 999999;' +
  70. 'height: 30px;' +
  71. '}' +
  72. '</style>');
  73. }
  74.  
  75.  
  76. // PLUGIN END //////////////////////////////////////////////////////////
  77.  
  78.  
  79. setup.info = plugin_info; //add the script info data to the function as a property
  80. if(!window.bootPlugins) window.bootPlugins = [];
  81. window.bootPlugins.push(setup);
  82. // if IITC has already booted, immediately run the 'setup' function
  83. if(window.iitcLoaded && typeof setup === 'function') setup();
  84. } // wrapper end
  85. // inject code into site context
  86. var script = document.createElement('script');
  87. var info = {};
  88. if (typeof GM_info !== 'undefined' && GM_info && GM_info.script) info.script = { version: GM_info.script.version, name: GM_info.script.name, description: GM_info.script.description };
  89. script.appendChild(document.createTextNode('('+ wrapper +')('+JSON.stringify(info)+');'));
  90. (document.body || document.head || document.documentElement).appendChild(script);
  91.