draw-tools plugin: support import from stock URL pls= parameter (as well as the existing json format)

This commit is contained in:
Jon Atkins 2014-12-16 04:34:32 +00:00
parent 186971d003
commit 0d1f3f20d5

View File

@ -425,14 +425,53 @@ window.plugin.drawTools.optExport = function() {
} }
window.plugin.drawTools.optPaste = function() { window.plugin.drawTools.optPaste = function() {
var promptAction = prompt('Press CTRL+V to paste it.', ''); var promptAction = prompt('Press CTRL+V to paste (draw-tools data or stock intel URL).', '');
if(promptAction !== null && promptAction !== '') { if(promptAction !== null && promptAction !== '') {
try { try {
var data = JSON.parse(promptAction); // first see if it looks like a URL-format stock intel link, and if so, try and parse out any stock drawn items
window.plugin.drawTools.drawnItems.clearLayers(); // from the pls parameter
window.plugin.drawTools.import(data); if (promptAction.match(new RegExp("^(https?://)?(www\\.)ingress\\.com/intel.*[?&]pls="))) {
console.log('DRAWTOOLS: reset and imported drawn items'); //looks like a ingress URL that has drawn items...
window.plugin.drawTools.optAlert('Import Successful.'); var items = promptAction.split(/[?&]/);
var foundAt = -1;
for (var i=0; i<items.length; i++) {
if (items[i].substr(0,4) == "pls=") {
foundAt = i;
}
}
if (foundAt == -1) throw ("No drawn items found in intel URL");
var newLines = [];
var linesStr = items[foundAt].substr(4).split('_');
for (var i=0; i<linesStr.length; i++) {
var floats = linesStr[i].split(',').map(Number);
if (floats.length != 4) throw("URL item not a set of four floats");
for (var j=0; j<floats.length; j++) {
if (isNaN(floats[j])) throw("URL item had invalid number");
}
var layer = L.geodesicPolyline([[floats[0],floats[1]],[floats[2],floats[3]]], window.plugin.drawTools.lineOptions);
newLines.push(layer);
}
// all parsed OK - clear and insert
window.plugin.drawTools.drawnItems.clearLayers();
for (var i=0; i<newLines.length; i++) {
window.plugin.drawTools.drawnItems.addLayer(newLines[i]);
}
runHooks('pluginDrawTools', {event: 'import'});
console.log('DRAWTOOLS: reset and imported drawn items from stock URL');
window.plugin.drawTools.optAlert('Import Successful.');
} else {
var data = JSON.parse(promptAction);
window.plugin.drawTools.drawnItems.clearLayers();
window.plugin.drawTools.import(data);
console.log('DRAWTOOLS: reset and imported drawn items');
window.plugin.drawTools.optAlert('Import Successful.');
}
// to write back the data to localStorage // to write back the data to localStorage
window.plugin.drawTools.save(); window.plugin.drawTools.save();