let user set context menu for drawings
(pretty ugly but)
This commit is contained in:
parent
b6bbdb64ef
commit
668e232718
10
README.md
10
README.md
@ -27,16 +27,6 @@ Feel free to [![](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%
|
||||
- v2.41.0 - Bump leaflet libs to latest stable (1.9.4)
|
||||
- v2.40.1 - Fix missing countries overlay when starting disconnected.
|
||||
- v2.40.0 - Add handling for TAK event points from TAK ingest node.
|
||||
- v2.39.0 - Add client timezone to connect message. PR #245
|
||||
- v2.38.3 - Better fix for geojson multipoint icons.
|
||||
- v2.38.1 - Fix for geojson multipoint icons.
|
||||
- v2.38.0 - Return client headers as part of connect message.
|
||||
- v2.37.4 - Fix sessionid specific data not to be sent on reload/refresh
|
||||
- v2.37.3 - Fix hang on layer change
|
||||
- v2.37.2 - If custom layer is only layer then show it automatically. Issue #230
|
||||
- v2.37.1 - Warn (and drop) messages that are missing a payload. Issue #229
|
||||
- v2.37.0 - Allow fly instead of fit option when using command to move view window. (PR #225)
|
||||
- v2.36.0 - Add edge icons for SIDC markers just off the map.
|
||||
|
||||
- see [CHANGELOG](https://github.com/dceejay/RedMap/blob/master/CHANGELOG.md) for full list of changes.
|
||||
|
||||
|
@ -316,7 +316,7 @@ module.exports = function(RED) {
|
||||
if ((node.events.indexOf("draw")!==-1) && ((message.action === "draw")||(message.action === "drawdelete"))) {
|
||||
setImmediate(function() {node.send({payload:message, topic:node.path.substr(1), _sessionid:client.id, _sessionip:sessionip})});
|
||||
}
|
||||
if (node.events.indexOf("other")!==-1 && "connected,point,delete,move,draw,files,bounds".indexOf(message.action) === -1) {
|
||||
if (node.events.indexOf("other")!==-1 && "connected,point,delete,move,draw,drawdelete,files,bounds".indexOf(message.action) === -1) {
|
||||
setImmediate(function() {node.send({payload:message, topic:node.path.substr(1), _sessionid:client.id, _sessionip:sessionip})});
|
||||
}
|
||||
}
|
||||
|
@ -30,6 +30,7 @@ var sidebyside;
|
||||
var layercontrol;
|
||||
var drawCount = 0;
|
||||
var drawingColour = "#910000";
|
||||
var drawcontextmenu = "";
|
||||
var sendDrawing;
|
||||
var colorControl;
|
||||
var sendRoute;
|
||||
@ -836,6 +837,8 @@ var addThing = function() {
|
||||
map.addLayer(layers[lay]);
|
||||
}
|
||||
|
||||
var form = {};
|
||||
var addToForm = function(n,v) { form[n] = v; }
|
||||
var feedback = function(n,v,a,c) {
|
||||
if (v === "$form") { v = form; }
|
||||
if (markers[n]) {
|
||||
@ -846,6 +849,9 @@ var feedback = function(n,v,a,c) {
|
||||
if (v !== undefined) { fb.value = v; }
|
||||
ws.send(JSON.stringify(fb));
|
||||
}
|
||||
else if (polygons[n]) {
|
||||
sendDrawing(n,v,a)
|
||||
}
|
||||
else {
|
||||
if (n === undefined) { n = "map"; }
|
||||
ws.send(JSON.stringify({action:a||"feedback", name:n, value:v, lat:rclk.lat, lon:rclk.lng}));
|
||||
@ -853,11 +859,6 @@ var feedback = function(n,v,a,c) {
|
||||
if (c === true) { map.closePopup(); }
|
||||
}
|
||||
|
||||
var form = {};
|
||||
var addToForm = function(n,v) {
|
||||
form[n] = v;
|
||||
}
|
||||
|
||||
// map.on('click', function(e) {
|
||||
// ws.send(JSON.stringify({action:"click", lat:e.latlng.lat.toFixed(5), lon:e.latlng.lng.toFixed(5)}));
|
||||
// });
|
||||
@ -1113,7 +1114,8 @@ var addOverlays = function(overlist) {
|
||||
L.DomEvent.stopPropagation(e);
|
||||
var name = e.target.name;
|
||||
var rmen = L.popup({offset:[0,-12]}).setLatLng(e.latlng);
|
||||
rmen.setContent("<input type='text' value='"+name+"' id='dinput' placeholder='name (,icon, layer)'/><br/><button onclick='editPoly(\""+name+"\");'>Edit points</button><button onclick='editPoly(\""+name+"\",\"drag\");'>Drag</button><button onclick='editPoly(\""+name+"\",\"rot\");'>Rotate</button><button onclick='delMarker(\""+name+"\",true);'>Delete</button><button onclick='sendDrawing();'>OK</button>");
|
||||
var d = drawcontextmenu || "<input type='text' value='$name' id='dinput' placeholder='name (,icon, layer)'/><br/><button onclick='editPoly(\"$name\");'>Edit points</button><button onclick='editPoly(\"$name\",\"drag\");'>Drag</button><button onclick='editPoly(\"$name\",\"rot\");'>Rotate</button><button onclick='delMarker(\"$name\",true);'>Delete</button><button onclick='sendDrawing();'>OK</button>";
|
||||
rmen.setContent(d.replace(/\$name/g,name));
|
||||
map.openPopup(rmen);
|
||||
});
|
||||
e.layer.bindPopup(name);
|
||||
@ -1139,21 +1141,24 @@ var addOverlays = function(overlist) {
|
||||
polygons[name].name = name;
|
||||
layers["_drawing"].addLayer(shape.layer);
|
||||
|
||||
var rightmenuMarker = L.popup({offset:[0,-12]}).setContent("<input type='text' autofocus value='"+name+"' id='dinput' placeholder='name (,icon, layer)'/><br/><button onclick='editPoly(\""+name+"\");'>Edit points</button><button onclick='editPoly(\""+name+"\",\"drag\");'>Drag</button><button onclick='editPoly(\""+name+"\",\"rot\");'>Rotate</button><button onclick='delMarker(\""+name+"\",true);'>Delete</button><button onclick='sendDrawing(\""+name+"\");'>OK</button>");
|
||||
var rightmenuMarker = L.popup({offset:[0,-12]}).setContent(drawcontextmenu.replace(/\$name/g,name) || "<input type='text' autofocus value='"+name+"' id='dinput' placeholder='name (,icon, layer)'/><br/><button onclick='editPoly(\""+name+"\");'>Edit points</button><button onclick='editPoly(\""+name+"\",\"drag\");'>Drag</button><button onclick='editPoly(\""+name+"\",\"rot\");'>Rotate</button><button onclick='delMarker(\""+name+"\",true);'>Delete</button><button onclick='sendDrawing(\""+name+"\");'>OK</button>");
|
||||
if (e.layer.options.fill === false && navigator.onLine) {
|
||||
rightmenuMarker = L.popup({offset:[0,-12]}).setContent("<input type='text' autofocus value='"+name+"' id='dinput' placeholder='name (,icon, layer)'/><br/><button onclick='editPoly(\""+name+"\");'>Edit points</button><button onclick='editPoly(\""+name+"\",\"drag\");'>Drag</button><button onclick='editPoly(\""+name+"\",\"rot\");'>Rotate</button><button onclick='delMarker(\""+name+"\",true);'>Delete</button><button onclick='sendRoute(\""+name+"\");'>Route</button><button onclick='sendDrawing(\""+name+"\");'>OK</button>");
|
||||
rightmenuMarker = L.popup({offset:[0,-12]}).setContent(drawcontextmenu.replace(/\$name/g,name) || "<input type='text' autofocus value='"+name+"' id='dinput' placeholder='name (,icon, layer)'/><br/><button onclick='editPoly(\""+name+"\");'>Edit points</button><button onclick='editPoly(\""+name+"\",\"drag\");'>Drag</button><button onclick='editPoly(\""+name+"\",\"rot\");'>Rotate</button><button onclick='delMarker(\""+name+"\",true);'>Delete</button><button onclick='sendRoute(\""+name+"\");'>Route</button><button onclick='sendDrawing(\""+name+"\");'>OK</button>");
|
||||
}
|
||||
rightmenuMarker.setLatLng(cent);
|
||||
setTimeout(function() {map.openPopup(rightmenuMarker)},25);
|
||||
});
|
||||
|
||||
sendDrawing = function(n) {
|
||||
var thing = document.getElementById('dinput').value;
|
||||
sendDrawing = function(n,v,a) {
|
||||
var thing = document.getElementById('dinput')?.value || n;
|
||||
map.closePopup();
|
||||
shape.m.name = thing;
|
||||
shape.layer.bindPopup(thing);
|
||||
delMarker(n,true);
|
||||
|
||||
if (v) {
|
||||
shape.layer.form = v;
|
||||
shape.m.form = v;
|
||||
}
|
||||
polygons[thing] = shape.layer;
|
||||
polygons[thing].lay = "_drawing";
|
||||
polygons[thing].name = thing;
|
||||
@ -1405,8 +1410,8 @@ var delMarker = function(dname,note) {
|
||||
}
|
||||
delete allData[dname];
|
||||
if (note) {
|
||||
if (pol === false) { ws.send(JSON.stringify({action:"delete", name:dname, deleted:true})); }
|
||||
else { ws.send(JSON.stringify({action:"drawdelete", name:dname, deleted:true}))}
|
||||
if (pol === true) { ws.send(JSON.stringify({action:"drawdelete", name:dname, deleted:true})); }
|
||||
else { ws.send(JSON.stringify({action:"delete", name:dname, deleted:true})); }
|
||||
}
|
||||
}
|
||||
|
||||
@ -1426,6 +1431,7 @@ var editPoly = function(pname,fun) {
|
||||
lo = e.target._latlng.lng;
|
||||
}
|
||||
var m = {action:"draw", name:pname, layer:polygons[pname].lay, options:e.target.options, radius:e.target._mRadius, lat:la, lon:lo};
|
||||
if (e.target.form) { m.form = e.target.form; }
|
||||
if (e.target.hasOwnProperty("_latlngs")) {
|
||||
if (e.target.options.fill === false) { m.line = e.target._latlngs; }
|
||||
else { m.area = e.target._latlngs[0]; }
|
||||
@ -2385,6 +2391,11 @@ function doCommand(cmd) {
|
||||
rightmenuMap.setContent(addmenu);
|
||||
}
|
||||
}
|
||||
if (cmd.hasOwnProperty("drawcontextmenu")) {
|
||||
if (typeof cmd.drawcontextmenu === "string") {
|
||||
drawcontextmenu = cmd.drawcontextmenu;
|
||||
}
|
||||
}
|
||||
if (cmd.hasOwnProperty("allowFileDrop")) {
|
||||
if (typeof cmd.allowFileDrop === "string") {
|
||||
allowFileDrop = cmd.allowFileDrop === "false" ? false : true;
|
||||
|
Loading…
Reference in New Issue
Block a user