var clearResult = function() {}; var mymap; var curLevel = ""; var marker = { '-1' : [ { level : '-1', room_id : '3-U27a', name : '', pos : [195, 455], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U27b', name : '', pos : [234, 442], rotation : -90, members : ` Simone Lehmann (ID)
`, display : true, modified : false }, { level : '-1', room_id : '3-U05', name : '', pos : [454, 172], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U07', name : '', pos : [393, 66], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U08', name : '', pos : [360, 50], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U09', name : '', pos : [331, 70], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U12', name : '', pos : [213, 51], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U13', name : '', pos : [159, 51], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U15', name : '', pos : [188, 189], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U19', name : '', pos : [384, 139], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U01', name : '', pos : [388, 462], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U01a', name : '', pos : [449, 512], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U02', name : '', pos : [453, 318], rotation : 0, members : ` Bernd Hubert (TeBa)
Robert Franz Köhler (TeBa)
`, display : true, modified : false }, { level : '-1', room_id : '3-U03', name : '', pos : [402, 289], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U04', name : '', pos : [453, 274], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U10', name : '', pos : [298, 51], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U11', name : '', pos : [261, 51], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U14', name : '', pos : [188, 147], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U16', name : '', pos : [238, 166], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U17', name : '', pos : [309, 164], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U18', name : '', pos : [384, 182], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U21', name : '', pos : [16, 29], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U22', name : '', pos : [53, 344], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U23', name : '', pos : [168, 342], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U24', name : '', pos : [306, 340], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U32a', name : '', pos : [359, 217], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U27', name : '', pos : [149, 455], rotation : 0, members : ` Anton Siebert (AIS)
Anton Siebert (FMA)
`, display : true, modified : false }, { level : '-1', room_id : '3-U06', name : '', pos : [440, 49], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U29', name : '', pos : [16, 454], rotation : 0, members : ` Markus Gronau (TeBa)
Lukas Grunwald (TeBa)
`, display : true, modified : false }, { level : '-1', room_id : '3-U30', name : '', pos : [71, 454], rotation : 0, members : ` Holger Renner (TeBa)
`, display : true, modified : false }, { level : '-1', room_id : '3-U23a', name : '', pos : [229, 383], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U09a', name : '', pos : [343, 20], rotation : -90, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U20', name : '', pos : [59, 106], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U22a', name : '', pos : [90, 314], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U23b', name : '', pos : [237, 272], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U23c', name : '', pos : [165, 258], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U24a', name : '', pos : [275, 258], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U28', name : '', pos : [44, 467], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U31', name : '', pos : [44, 447], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U31a', name : '', pos : [43, 435], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U32', name : '', pos : [245, 227], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U32b', name : '', pos : [117, 227], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U33', name : '', pos : [454, 138], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U34', name : '', pos : [262, 454], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U35', name : '', pos : [110, 455], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U37', name : '', pos : [444, 455], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U20a', name : '', pos : [48, 227], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U21a', name : '', pos : [46, 18], rotation : -90, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U25', name : '', pos : [341, 454], rotation : 0, members : ``, display : true, modified : false }, { level : '-1', room_id : '3-U26', name : '', pos : [304, 454], rotation : 0, members : ``, display : true, modified : false }, ], '1' : [ { level : '1', room_id : '3-104', name : '', pos : [30, 418], rotation : 0, members : ``, display : true, modified : false }, { level : '1', room_id : '3-108', name : '', pos : [254, 284], rotation : 0, members : ``, display : true, modified : false }, { level : '1', room_id : '3-109', name : '', pos : [285, 264], rotation : 0, members : ``, display : true, modified : false }, { level : '1', room_id : '3-103', name : '', pos : [24, 345], rotation : 0, members : ``, display : true, modified : false }, { level : '1', room_id : '3-102', name : '', pos : [59, 282], rotation : 0, members : ``, display : true, modified : false }, { level : '1', room_id : '3-101', name : '', pos : [89, 327], rotation : 0, members : ``, display : true, modified : false }, { level : '1', room_id : '3-105', name : '', pos : [89, 349], rotation : 0, members : ``, display : true, modified : false }, { level : '1', room_id : '3-106a', name : '', pos : [317, 332], rotation : 0, members : ``, display : true, modified : false }, { level : '1', room_id : '3-106', name : '', pos : [327, 285], rotation : 0, members : ` Antje Vondran (FNG)
`, display : true, modified : false }, { level : '1', room_id : '3-107', name : '', pos : [323, 396], rotation : 0, members : ``, display : true, modified : false }, ], '0' : [ { level : '0', room_id : '3-015', name : '', pos : [553, 309], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-018', name : '', pos : [266, 772], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-022a', name : '', pos : [47, 809], rotation : 0, members : ` Wanda Hehn (TeBa)
Bianca Wilk (TeBa)
Kerstin Emrich (TeBa)
Bianca Wilk (FiCo)
`, display : true, modified : false }, { level : '0', room_id : '3-003', name : '', pos : [771, 124], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-004', name : '', pos : [683, 124], rotation : 0, members : ` Jürgen Holzheid (TeBa)
`, display : true, modified : false }, { level : '0', room_id : '3-006', name : '', pos : [401, 94], rotation : 0, members : ` Dominik Schmidt (TeBa)
Roland Schäfer (TeBa)
`, display : true, modified : false }, { level : '0', room_id : '3-007', name : '', pos : [134, 231], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-008', name : '', pos : [77, 545], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-009', name : '', pos : [346, 624], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-014', name : '', pos : [666, 309], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-016', name : '', pos : [426, 309], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-017', name : '', pos : [346, 309], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-020', name : '', pos : [288, 819], rotation : 0, members : ` Sandro Krempel (TeBa)
`, display : true, modified : false }, { level : '0', room_id : '3-021', name : '', pos : [212, 819], rotation : 0, members : ` Susanna Buchwald (TeBa)
`, display : true, modified : false }, { level : '0', room_id : '3-022', name : '', pos : [133, 820], rotation : 0, members : ` Rafael Vogt (TeBa)
`, display : true, modified : false }, { level : '0', room_id : '3-032', name : '', pos : [938, 31], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-031', name : '', pos : [961, 117], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-007b', name : '', pos : [112, 75], rotation : 0, members : ` Rainer Ehrlicher (FMA)
`, display : true, modified : false }, { level : '0', room_id : '3-008b', name : '', pos : [128, 692], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-001', name : '', pos : [783, 368], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-002', name : '', pos : [792, 293], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-008d', name : '', pos : [160, 568], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-011', name : '', pos : [562, 502], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-023', name : '', pos : [476, 415], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-024', name : '', pos : [940, 414], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-025', name : '', pos : [793, 266], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-027', name : '', pos : [465, 831], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-029', name : '', pos : [249, 470], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-030', name : '', pos : [911, 111], rotation : -90, members : ``, display : true, modified : false }, { level : '0', room_id : '3-001a', name : '', pos : [789, 345], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-007d', name : '', pos : [77, 418], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-007e', name : '', pos : [222, 417], rotation : -90, members : ``, display : true, modified : false }, { level : '0', room_id : '3-005', name : '', pos : [603, 94], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-007f', name : '', pos : [102, 113], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-007g', name : '', pos : [238, 131], rotation : -90, members : ``, display : true, modified : false }, { level : '0', room_id : '3-007a', name : '', pos : [191, 75], rotation : 0, members : ` Michael Schmitz (FMA)
`, display : true, modified : false }, { level : '0', room_id : '3-007c', name : '', pos : [41, 75], rotation : 0, members : ` Peter Grüdl (FMA)
`, display : true, modified : false }, { level : '0', room_id : '3-019', name : '', pos : [371, 821], rotation : 0, members : ` Kirsten Panzer (TeBa)
`, display : true, modified : false }, { level : '0', room_id : '3-026a', name : '', pos : [582, 779], rotation : 0, members : ` Sebastian Bieber (TeBa)
`, display : true, modified : false }, { level : '0', room_id : '3-010', name : '', pos : [570, 588], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-010a', name : '', pos : [490, 496], rotation : -90, members : ``, display : true, modified : false }, { level : '0', room_id : '3-010b', name : '', pos : [561, 701], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-010c', name : '', pos : [488, 640], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-008a', name : '', pos : [55, 695], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-008c', name : '', pos : [196, 695], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-012', name : '', pos : [719, 538], rotation : 0, members : ``, display : true, modified : false }, { level : '0', room_id : '3-026', name : '', pos : [532, 809], rotation : 0, members : ` Robin Knorr (TeBa)
Manfred Hoh (TeBa)
`, display : true, modified : false }, ], }; var sel_marker = null; var map_modus = "normal"; var levels = { "-1" : { "bounds" : [520, 561], "image" : "https://meine-dienste.hs-coburg.de/raumplan/img-floor/458", "id" : 458}, "1" : { "bounds" : [501, 498], "image" : "https://meine-dienste.hs-coburg.de/raumplan/img-floor/459", "id" : 459}, "0" : { "bounds" : [1140, 853], "image" : "https://meine-dienste.hs-coburg.de/raumplan/img-floor/457", "id" : 457}, }; function clickMarker(m, data){ sel_marker = m; selectMarker(m.level, m.room_id); } function addMarker(level){ for(var i = 0; i < marker[level].length; i++){ var m = marker[level][i]; var className = 'marker'; if(m.members.length > 0){ className += ' staff'; } var myIcon = L.divIcon({className: className, html: '
' + m["room_id"] + '
'}); if (m["pos"][0] == null || m["pos"][1] == null){ continue; } var x = m['pos'][0]; var y = m['pos'][1]; m["marker"] = L.marker({lon: x, lat: y}, {icon: myIcon}); m["marker"].on("click", clickMarker.bind(null, m)); m["marker"].addTo(mymap); } mymap.on('zoom', function() { $(".marker").css("font-size", getFontSize()); }); } function getFontSize(){ var maxZoom = mymap.getMaxZoom(); var minZoom = mymap.getMinZoom(); var zoom = mymap.getZoom(); return (1 + (zoom - minZoom) / (maxZoom - minZoom) * 0.9) * 10; } function selectMarker(level, room_id){ $("#rooms .room").removeClass("text-primary"); $("#room" + room_id).addClass("text-primary"); mymap.invalidateSize() $(".marker div").removeClass("text-primary"); var divs = $(".marker div"); for(var i = 0; i < divs.length; i++){ if($(divs[i]).html() == room_id){ $(divs[i]).addClass("text-primary"); break; } } var ms = marker[level]; for(var i = 0; i < ms.length; i++){ if(ms[i]['room_id'] == room_id){ var x = ms[i]['pos'][0]; var y = ms[i]['pos'][1]; var center = L.latLng(y, x); if(map_modus == "normal"){ mymap.setView(center, mymap.getMaxZoom()); }else{ return; } if(ms[i].members.length > 0){ var offset_x = 0; var offset_y = -10; if(ms[i]["rotation"] == -90){ offset_y = -40; offset_x = -10; } }else{ return; } var popup = ms[i].members; if(ms[i].name){ popup = '' + ms[i].name + '
' + popup; } ms[i]["marker"].unbindPopup(); ms[i]["marker"].bindPopup(popup, {offset : [offset_x, offset_y]}); ms[i]["marker"].openPopup(); return; } } } function switchLevel(level){ if (level == curLevel){ return; } curLevel = level; if(mymap){ mymap.off(); mymap.remove(); } var bounds = [[0, 0], [levels[level]["bounds"][1], levels[level]["bounds"][0]]]; // set up the map mymap = new L.Map('floor_map',{ crs: L.CRS.Simple, maxBounds : bounds, maxZoom: 3, keyboard: false, zoomSnap: 0.05 }); var image = L.imageOverlay(levels[level]["image"], bounds).addTo(mymap); addMarker(level); mymap.fitBounds(bounds); $("#levels .level").removeClass("text-primary"); $("#level" + level).addClass("text-primary"); } document.onkeydown = function(e) { if (sel_marker == null || map_modus != 'position'){ return; } var x = parseInt(sel_marker.marker.getLatLng()["lng"]); var y = parseInt(sel_marker.marker.getLatLng()["lat"]); switch(e.which) { case 65: // a x -= 10; break; case 87: // w y += 10; break; case 68: // d x += 10; break; case 83: // s y -= 10; break; case 37: // left x -= 1; break; case 38: // up y += 1; break; case 39: // right x += 1; break; case 40: // down y -= 1; break; case 72: sel_marker.display = !sel_marker.display; $(sel_marker.marker._icon).hide(); break; case 82: if (sel_marker.rotation == 0){ $(sel_marker.marker._icon).children("div").css("transform","rotate(-90deg)"); sel_marker.rotation = -90; }else{ $(sel_marker.marker._icon).children("div").css("transform","rotate(0deg)"); sel_marker.rotation = 0; } break; default: return; // exit this handler for other keys } sel_marker.marker.setLatLng({lng: x, lat: y}); sel_marker.pos = [x, y]; sel_marker.modified = true; e.preventDefault(); // prevent the default action (scroll / move caret) }; function startPositionMode(){ alert("Positionierungs Modus wurde aktiviert.\nDie Marker können durch klicken ausgewählt werden.\nDie grobe Positionierung erfolgt mit Hilfe der wasd-Taste.\nDie feine Positionieren erfolgt mit Hilfe der Pfeiltasten.\nMarker können mit der r-Taste rotiert werden.\nMarker können mit der h-Taste ausgeblendet werden"); map_modus = "position"; $('#position-safe-button').removeClass('d-none'); } function endPositionMode(){ map_modus = "normal"; $('#position-safe-button').addClass('d-none'); } function savePositions(){ var sql = ""; let store = []; for (let level in levels) { console.log("Iterating " + level + " found " + marker[level].length + " marker"); for (var m = 0; m < marker[level].length; m++){ if (marker[level][m]["modified"]){ let x = marker[level][m]["pos"][0]; let y = marker[level][m]["pos"][1]; let code = marker[level][m]["room_id"]; let rotation = marker[level][m].rotation; let display = marker[level][m].display; store.push({"pos_x" : x, "pos_y" : y, "rotation" : rotation, "display" : display, "code" : code}); } } } $('#position-safe-spinner').removeClass('d-none'); $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': '2LR5ypbVAAWhvjyK3iKzw4PPJz6GgIWdEGZwL3oC' } }); $.ajax('https://meine-dienste.hs-coburg.de/raumplan/admin/save-position', { data : JSON.stringify(store), contentType : 'application/json', type : 'POST' }) .done(function(data) { if(data == "1"){ alert('Positionen wurden erfolgreich gespeichert'); }else{ alert('Positionen konnten nicht gespeichert werden. ' + data); } }) .fail(function(jqXHR, textStatus, errorThrown) { alert(errorThrown + " " + jqXHR.responseText); }) .always(function(){ $('#position-safe-spinner').addClass('d-none'); }); }