draw-tools plugin: support import from stock URL pls= parameter (as well as the existing json format)
This commit is contained in:
parent
186971d003
commit
0d1f3f20d5
@ -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();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user