<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Traque | Client admin</title> <!-- LEAFLET INCLUDE --> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.8.0/dist/leaflet.css" integrity="sha512-hoalWLoI8r4UszCkZ5kL8vayOGVae1oxXe/2A4AO6J9+580uKHDO3JdHb7NzwwzK5xr/Fs0W40kiNHxM9vyTtQ==" crossorigin=""/> <script src="https://unpkg.com/leaflet@1.8.0/dist/leaflet.js" integrity="sha512-BB3hKbKWOc9Ez/TAwyWxNXeoV9c1v6FIeYiBieIWkpLjauysF18NzgR1MBNBXf8/KABdlkX68nAhlwcDFLGPCQ==" crossorigin=""></script> <!-- SOCKET.IO INCLUDE --> <script src="/socket.io/socket.io.js"></script> <style type="text/css"> #map { height: 750px; } </style> <script type="text/javascript" src="utils.js"></script> </head> <body> <div id="map"></div><br/> <input id="popup"/><button id="sendPopup">Send popup to all clients</button><br/> <button id="genCode">Generate invisibility code</button><div id="code"></div><br/> <script type="text/javascript"> ////////////////////////////////////////////////////////////////////////////// // SETUP MAP function makeCode() { var result = ''; var characters = 'abcdefghijklmnopqrstuvwxyz0123456789'; var charactersLength = characters.length; for ( var i = 0; i < 10; i++ ) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } setup_map(); map.on("dblclick", function(data){ socket.emit("newTracker", {"position": [data.latlng.lat, data.latlng.lng]}); }); ////////////////////////////////////////////////////////////////////////////// // UPDATE MAP socket.on("yourId", function(data){ console.log("yourId", data); id = data.id; if(!(id in colors)) colors[id] = 0; if(id in markers) markers[id].setIcon(self_icons[colors[id]]); socket.emit("admin"); }); socket.on("changeColor", function(data){ console.log("changeColor", data); if(data.id in colors && colors[data.id] == -1 && data.id in markers) markers[data.id].addTo(map); colors[data.id] = data.color; if(data.id in markers){ if(data.id == id) markers[data.id].setOpacity(0); else if(data.color == -1) markers[data.id].setIcon(self_invisible); else markers[data.id].setIcon(icons[data.color]); } }); setup_socket_common(); ////////////////////////////////////////////////////////////////////////////// // INTERACTION document.querySelector('#sendPopup').addEventListener('click', function(){ const input = document.querySelector('#popup'); socket.emit("popup", {"content": input.value}); }); document.querySelector('#genCode').addEventListener('click', function(){ var code = makeCode(); socket.emit('newCode', {"code":code}); document.getElementById("code").innerHTML = code; }); </script> </body> </html>