From 29749ebbe1a64904dd6f0249cf534c5b81e6b6d1 Mon Sep 17 00:00:00 2001 From: boombuler Date: Sat, 23 Feb 2013 17:06:21 +0100 Subject: [PATCH] add to layerchooser instead of the toolbox + code cleanup --- plugins/max-links.user.js | 113 +++++++++++++++++++------------------- 1 file changed, 55 insertions(+), 58 deletions(-) diff --git a/plugins/max-links.user.js b/plugins/max-links.user.js index 07c1261a..0738f0c9 100644 --- a/plugins/max-links.user.js +++ b/plugins/max-links.user.js @@ -192,71 +192,68 @@ function wrapper() { Array.prototype.push.apply(closed, open); i = closed.length; - while(i--) + while(i--) { if(closed[i].a.__sentinel || closed[i].b.__sentinel || closed[i].c.__sentinel) closed.splice(i, 1); - - /* Yay, we're done! */ - return closed; } + + /* Yay, we're done! */ + return closed; + } - var layer = null; + window.plugin.portalfolding.layer = null; - window.plugin.portalfolding.toggle = function() { - if (layer) { - // toggle off - window.map.removeLayer(layer); - layer = null; - return; - } - - var locations = []; - var minX = 0; - var minY = 0; - - for (var key in window.portals) { - var loc = window.portals[key].options.details.locationE6; - var nloc = { x: loc.lngE6, y: loc.latE6 }; - if (nloc.x < minX) - minX = nloc.x; - if (nloc.y < minX) - minX = nloc.y; - locations.push(nloc); - } - - var i = locations.length; - while(i) { - var nloc = locations[--i]; - nloc.x += Math.abs(minX); - nloc.y += Math.abs(minY); - } - - layer = L.layerGroup([]) - - var triangles = triangulate(locations); - i = triangles.length; - while(i) { - var triangle = triangles[--i]; - triangle.draw(layer, minX, minY) - } - - window.map.addLayer(layer); - return layer; - } + var updating = false; + var fillLayer = function() { + if (updating) + return; + updating = true; + window.plugin.portalfolding.layer.clearLayers(); - var setup = function() { - $('#toolbox').append('toggle MaxLinks '); - } + var locations = []; + var minX = 0; + var minY = 0; + + $.each(window.portals, function(guid, portal) { + var loc = portal.options.details.locationE6; + var nloc = { x: loc.lngE6, y: loc.latE6 }; + if (nloc.x < minX) + minX = nloc.x; + if (nloc.y < minX) + minX = nloc.y; + locations.push(nloc); + }); + + $.each(locations, function(idx, nloc) { + nloc.x += Math.abs(minX); + nloc.y += Math.abs(minY); + }); - // PLUGIN END ////////////////////////////////////////////////////////// - if(window.iitcLoaded && typeof setup === 'function') { - setup(); - } else { - if(window.bootPlugins) - window.bootPlugins.push(setup); - else - window.bootPlugins = [setup]; - } + var triangles = triangulate(locations); + $.each(triangles, function(idx, triangle) { + triangle.draw(window.plugin.portalfolding.layer, minX, minY) + }); + updating = false; + } + + var setup = function() { + window.plugin.portalfolding.layer = L.layerGroup([]); + window.map.on('layeradd', function(e) { + if (e.layer === window.plugin.portalfolding.layer) + fillLayer(); + }); + window.layerChooser.addOverlay(window.plugin.portalfolding.layer, 'Maximum Links'); + } + + // PLUGIN END ////////////////////////////////////////////////////////// + if(window.iitcLoaded && typeof setup === 'function') { + setup(); + } else { + if(window.bootPlugins) + window.bootPlugins.push(setup); + else + window.bootPlugins = [setup]; + } } // wrapper end // inject code into site context