Fixed context menus in web application.
Ylian Saint-Hilaire committed
Dec 23, 2019 at 15:46 UTC
2da3061efb7a10c1c27484937f9c36611a37ed6f
3 files changed
+18
-19
package.json
+1
-1
@@ -1,6 +1,6 @@
1
{
2
"name": "meshcentral",
3
- "version": "0.4.6-k",
3
+ "version": "0.4.6-l",
4
"keywords": [
5
"Remote Management",
6
"Intel AMT",
public/styles/style.css
-2
@@ -1840,8 +1840,6 @@ a {
1840
/*border-radius: 4px;*/
1841
display: none;
1842
position: absolute;
1843
- top: 0;
1844
- left: 0;
1843
list-style: none;
1844
margin: 0;
1845
padding: 5px;
views/default.handlebars
+17
-16
@@ -1170,7 +1170,7 @@
1170
document.onkeyup = ondockeyup;
1171
//window.addEventListener('focus', ondocfocus, false);
1172
window.addEventListener('blur', ondocblur, false);
1173
- window.onresize = function () { masterUpdate(512); }
1173
+ window.onresize = function () { hideContextMenu(); masterUpdate(512); }
1174
setTimeout(function() { masterUpdate(512); }, 200);
1175
1176
// Connect to the mesh server
@@ -3691,35 +3691,26 @@
3691
if (elem && elem != null && elem.id == 'connectbutton2' && currentNode && currentNode.agent && (currentNode.agent.id > 0) && (currentNode.agent.id < 5)) {
3692
contextelement = elem;
3693
var contextmenudiv = document.getElementById('termShellContextMenu');
3694
- contextmenudiv.style.left = event.pageX + 'px';
3695
- contextmenudiv.style.top = event.pageY + 'px';
3696
- contextmenudiv.style.display = 'block';
3694
+ showContextMenuDiv(contextmenudiv, event.pageX, event.pageY);
3695
} else if (elem && elem != null && elem.id == 'connectbutton2' && currentNode && currentNode.agent && (currentNode.agent.id > 4)) {
3696
contextelement = elem;
3697
var contextmenudiv = document.getElementById('termShellContextMenuLinux');
3700
- contextmenudiv.style.left = event.pageX + 'px';
3701
- contextmenudiv.style.top = event.pageY + 'px';
3702
- contextmenudiv.style.display = 'block';
3698
+ showContextMenuDiv(contextmenudiv, event.pageX, event.pageY);
3699
} else if (elem && elem != null && elem.id == 'MxMESH') {
3700
contextelement = elem;
3701
var contextmenudiv = document.getElementById('meshContextMenu');
3706
- contextmenudiv.style.left = event.pageX + 'px';
3707
- contextmenudiv.style.top = event.pageY + 'px';
3708
- contextmenudiv.style.display = 'block';
3702
+ showContextMenuDiv(contextmenudiv, event.pageX, event.pageY);
3703
/*} else if (elem && elem != null && elem.classList.contains('pluginTab')) {
3704
contextelement = elem;
3705
var contextmenudiv = document.getElementById('pluginTabContextMenu');
3712
- contextmenudiv.style.left = event.pageX + 'px';
3713
- contextmenudiv.style.top = event.pageY + 'px';
3714
- contextmenudiv.style.display = 'block';*/
3706
+ showContextMenuDiv(contextmenudiv, event.pageX, event.pageY);
3707
+ */
3708
} else {
3709
while (elem && elem != null && elem.id != 'devs') { elem = elem.parentElement; }
3710
if (!elem || elem == null) return true;
3711
contextelement = elem;
3712
var contextmenudiv = document.getElementById('contextMenu');
3720
- contextmenudiv.style.left = event.pageX + 'px';
3721
- contextmenudiv.style.top = event.pageY + 'px';
3722
- contextmenudiv.style.display = 'block';
3713
+ showContextMenuDiv(contextmenudiv, event.pageX, event.pageY);
3714
3715
// Get the node and set the menu options
3716
var nodeid = contextelement.children[1].attributes.onclick.value;
@@ -3743,6 +3734,16 @@
3734
return haltEvent(event);
3735
}
3736
3737
+ function showContextMenuDiv(element, x, y) {
3738
+ var clientRect = document.documentElement.getBoundingClientRect();
3739
+ var docHeight = clientRect.height;
3740
+ var docWidth = clientRect.width;
3741
+ element.style.left = element.style.right = element.style.top = element.style.bottom = null;
3742
+ if (x > (docWidth / 2)) { element.style.right = (docWidth - event.pageX) + 'px'; } else { element.style.left = event.pageX + 'px'; }
3743
+ if (y > (docHeight / 2)) { element.style.bottom = (docHeight - event.pageY) + 'px'; } else { element.style.top = event.pageY + 'px'; }
3744
+ element.style.display = 'block';
3745
+ }
3746
+
3747
function cmaction(action,event) {
3748
var nodeid = contextelement.children[1].attributes.onclick.value;
3749
nodeid = nodeid.substring(12, nodeid.length - 18);