// ==UserScript== // @author modkin // @id multi_export@modkin // @name Portal Multi Export // @category Misc // @version 0.11 // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL https://raw.githubusercontent.com/IITC-CE/Community-plugins/master/dist/modkin/multi_export.meta.js // @downloadURL https://raw.githubusercontent.com/IITC-CE/Community-plugins/master/dist/modkin/multi_export.user.js // @description Export portals from bookmarks, current view or polygon // @include http*://*intel.ingress.com/* // @match https://intel.ingress.com/* // @grant none // ==/UserScript== function wrapper(plugin_info) { // ensure plugin framework is there, even if iitc is not yet loaded if(typeof window.plugin !== 'function') window.plugin = function() {}; window.plugin.multiexport = function() {}; /*********** MENUE ************************************************************/ window.plugin.multiexport.createmenu = function() { var htmldata = "

Export from Current View , inside Polygon or Bookmarks to various formats by clicking the corresponding cell in the table.

" + "

Please note that the first drawn polygon will be choosen to export from.

" + "

BE AWARE: If you choose BKMRK all portals will be added to the default bookmarks folder.

" + "" + "" + "" + "" + "" + "" + ""; if(plugin.bookmarks){ htmldata += ""; } htmldata += ""; if(plugin.drawTools) { htmldata += "" + "" + "" + "" + "" + ""; if(plugin.bookmarks){ htmldata += ""; } htmldata += ""; } if(plugin.bookmarks) { htmldata += "" + "" + "" + "" + "" + "" + ""; } window.dialog({ title: "Multi Export Options", html: htmldata, dialogClass: 'ui-dialog-multiExport' }); }; /*********** HELPER FUNCTION ****************************************************/ window.plugin.multiexport.portalinpolygon = function(portal,LatLngsObjectsArray) { var portalCoords = portal.split(','); var x = portalCoords[0], y = portalCoords[1]; var inside = false; for (var i = 0, j = LatLngsObjectsArray.length - 1; i < LatLngsObjectsArray.length; j = i++) { var xi = LatLngsObjectsArray[i]['lat'], yi = LatLngsObjectsArray[i]['lng']; var xj = LatLngsObjectsArray[j]['lat'], yj = LatLngsObjectsArray[j]['lng']; var intersect = ((yi > y) != (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); if (intersect) inside = !inside; } return inside; }; /*********** BOOKMARK MENUE ****************************************************/ window.plugin.multiexport.bkmrkmenu = function(type) { var htmlcontent = '
'; var bookmarks = JSON.parse(localStorage[plugin.bookmarks.KEY_STORAGE]); for(var i in bookmarks.portals){ htmlcontent += "" + bookmarks.portals[i].label + ""; } htmlcontent += '
'; window.dialog({ title: "Multi Export Options", html: htmlcontent }).parent(); }; /*********** ABSTRACT EXPORT FUNCTION ******************************************/ window.plugin.multiexport.export = function(type, source, bkmrkFolder) { console.log(type); var o = []; var portals; var sourceTitle; var windowTitle; if(type === 'MF') { windowTitle = 'Maxfield Export'; } else { windowTitle = type + ' Export'; } if(localStorage['plugin-draw-tools-layer']) { var drawLayer = JSON.parse(localStorage['plugin-draw-tools-layer']); } if(source == 'BKMRK') { var bookmarks = JSON.parse(localStorage[plugin.bookmarks.KEY_STORAGE]); portals = bookmarks.portals[bkmrkFolder].bkmrk; } else { portals = window.portals; } switch(type){ case 'GPX': o.push(""); o.push(""); o.push("" +"" +"" ); break; case 'JSON': o.push("["); } for(var i in portals){ var keys = 0; if(source === 'BKMRK') { var name = bookmarks.portals[bkmrkFolder].bkmrk[i].label; var latlng = bookmarks.portals[bkmrkFolder].bkmrk[i].latlng; if(plugin.keys) { keys = plugin.keys.keys[bookmarks.portals[bkmrkFolder].bkmrk[i].guid]; } }else { var p = window.portals[i]; var name = p.options.data.title; var guid = p.options.guid; var latlng = p._latlng.lat + ',' + p._latlng.lng; var pimage = p.options.data.image; if(source === 'VIEWFIL') { var portalInPolygon = false; for(var dl in drawLayer){ if(drawLayer[dl].type === 'polygon'){ if(window.plugin.multiexport.portalinpolygon(latlng,drawLayer[dl].latLngs)){ portalInPolygon = true; break; } } } if (!portalInPolygon){ continue; } } if(plugin.keys){ keys = plugin.keys.keys[i]; } var b = window.map.getBounds(); // skip if not currently visible if (p._latlng.lat < b._southWest.lat || p._latlng.lng < b._southWest.lng || p._latlng.lat > b._northEast.lat || p._latlng.lng > b._northEast.lng) continue; } var lat = latlng.split(',')[0]; var lng = latlng.split(',')[1]; var iitcLink = "https://intel.ingress.com/intel?ll=" + latlng + "&z=16&pll=" + latlng; var gmapLink = "https://google.com/maps/place/" + latlng; switch(type){ case 'MF': o.push(name + ";" + iitcLink + ";" + keys); break; case 'CSV': o.push(guid + "," + JSON.stringify(name) + "," + lat + "," + lng ); break; case 'TSV': o.push(guid + "\t" + JSON.stringify(name) + "\t" + lat + "\t" + lng + "\t" + iitcLink + "\t" + gmapLink + "\t" + pimage ); break; case 'GPX': o.push("" +"" + name + "" +"\n\n" + + "Intel Link: " + iitcLink + "\n" + "GMap: " + gmapLink + "\n" + "guid: " + guid + "\n" + "image: " + pimage + "\n" +"\n" +"\n" +"" ); break; case 'JSON': var obj = { guid: guid, title: name, coordinates: {lat: lat, lng: lng}, link: { intel: iitcLink, gmap: gmapLink }, image: pimage }; o.push(JSON.stringify(obj) + ","); break; case 'BKMRK': if(!window.plugin.bookmarks.findByGuid(guid)){ plugin.bookmarks.addPortalBookmark(guid, latlng, name); } break; } } if(type == 'BKMRK'){ return; } var ostr = o.join("\n"); switch(type){ case 'GPX': ostr += ""; ostr = ostr.replace(/[&]/g, ''); break; case 'JSON': //remove the last "," if (ostr.length > 1) { ostr = ostr.slice(0, -1); } ostr += "]"; break; } var dialog = window.dialog({ title: windowTitle, dialogClass: 'ui-dialog-maxfieldexport', html: '' + '

Select all

' }).parent(); dialog.css("width", 630).css({ "top": ($(window).height() - dialog.height()) / 2, "left": ($(window).width() - dialog.width()) / 2 }); $("#idmExport").val(ostr); }; /*********** PLUGIN SETUP *****************************************************/ // setup function called by IITC var setup = function() { $("#toolbox").append("Multi Export"); $('head').append(''); }; setup.info = plugin_info; //add the script info data to the function as a property if(!window.bootPlugins) window.bootPlugins = []; window.bootPlugins.push(setup); // if IITC has already booted, immediately run the 'setup' function if(window.iitcLoaded && typeof setup === 'function') setup(); } // wrapper end // inject code into site context var script = document.createElement('script'); var info = {}; 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 }; script.appendChild(document.createTextNode('('+ wrapper +')('+JSON.stringify(info)+');')); (document.body || document.head || document.documentElement).appendChild(script);
CSV TSV GPX Maxfield JSON BKMRK
Current View XXX XXX XXX XXX XXX XXX
Polygon XXX XXX XXX XXX XXX XXX
Bookmarks XXX XXX XXX XXX XXX