mirror of
				https://github.com/Ylianst/MeshCentral.git
				synced 2025-03-09 15:40:18 +00:00 
			
		
		
		
	Added expand/collapse all devices context menu.
This commit is contained in:
		
							parent
							
								
									083fd92e44
								
							
						
					
					
						commit
						c06f9f2691
					
				
					 3 changed files with 2183 additions and 2140 deletions
				
			
		
							
								
								
									
										2
									
								
								public/scripts/amt-wsman-0.2.0-min.js
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								public/scripts/amt-wsman-0.2.0-min.js
									
										
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
					@ -87,9 +87,16 @@
 | 
				
			||||||
        <div class="cmtext" onclick="cmfilesaction(2,event)">Edit</div>
 | 
					        <div class="cmtext" onclick="cmfilesaction(2,event)">Edit</div>
 | 
				
			||||||
        <div class="cmtext" onclick="cmfilesaction(3,event)">Delete</div>
 | 
					        <div class="cmtext" onclick="cmfilesaction(3,event)">Delete</div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div id="expandAllContextMenu" class="contextMenu noselect" style="display:none;min-width:0px">
 | 
				
			||||||
 | 
					        <div class="cmtext" onclick="cmexpandaction(1,event)">Expand All</div>
 | 
				
			||||||
 | 
					        <div class="cmtext" onclick="cmexpandaction(2,event)">Collapse All</div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
    <div id="deskPlayerContextMenu" class="contextMenu noselect" style="display:none;min-width:0px">
 | 
					    <div id="deskPlayerContextMenu" class="contextMenu noselect" style="display:none;min-width:0px">
 | 
				
			||||||
        <div class="cmtext" onclick="cmdeskplayeraction(1,event)">Open Player...</div>
 | 
					        <div class="cmtext" onclick="cmdeskplayeraction(1,event)">Open Player...</div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!--
 | 
					    <!--
 | 
				
			||||||
    <div id="pluginTabContextMenu" class="contextMenu noselect" style="display:none;min-width:0px">
 | 
					    <div id="pluginTabContextMenu" class="contextMenu noselect" style="display:none;min-width:0px">
 | 
				
			||||||
        <div id="cxclose" class="cmtext" onclick="pluginTabClose(event)">Close Tab</div>
 | 
					        <div id="cxclose" class="cmtext" onclick="pluginTabClose(event)">Close Tab</div>
 | 
				
			||||||
| 
						 | 
					@ -3401,7 +3408,7 @@
 | 
				
			||||||
                            r += '</span>';
 | 
					                            r += '</span>';
 | 
				
			||||||
                            if ((view == 1) || (view == 2) || (view == 3)) {
 | 
					                            if ((view == 1) || (view == 2) || (view == 3)) {
 | 
				
			||||||
                                var collapsed = CollapsedGroups[node.meshid];
 | 
					                                var collapsed = CollapsedGroups[node.meshid];
 | 
				
			||||||
                                r += '<img class=collapseImage id="DevxColImg' + deviceHeaderId + '" src=images/c' + ((collapsed === true)?'1':'2') + '.png height=8 width=8 style=margin-left:2px;margin-right:2px;cursor:pointer onclick=toggleCollapseGroup("' + deviceHeaderId + '","' + node.meshid + '",' + view + ')></img>'; // Collapse action
 | 
					                                r += '<img class=collapseImage cmenu=expandAllContextMenu id="DevxColImg' + deviceHeaderId + '" src=images/c' + ((collapsed === true)?'1':'2') + '.png height=8 width=8 style=margin-left:2px;margin-right:2px;cursor:pointer onclick=toggleCollapseGroup("' + deviceHeaderId + '","' + node.meshid + '",' + view + ')></img>'; // Collapse action
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            if (meshes[node.meshid]) {
 | 
					                            if (meshes[node.meshid]) {
 | 
				
			||||||
                                r += '<span id=MxMESH cmenu=meshContextMenu tabindex=0 style=cursor:pointer onclick=gotoMesh("' + node.meshid + '") onkeypress="if (event.key==\'Enter\') gotoMesh(\'' + node.meshid + '\')">' + EscapeHtml(meshes[node.meshid].name) + '</span>' + getMeshActions(mesh2, meshrights) + '</div>';
 | 
					                                r += '<span id=MxMESH cmenu=meshContextMenu tabindex=0 style=cursor:pointer onclick=gotoMesh("' + node.meshid + '") onkeypress="if (event.key==\'Enter\') gotoMesh(\'' + node.meshid + '\')">' + EscapeHtml(meshes[node.meshid].name) + '</span>' + getMeshActions(mesh2, meshrights) + '</div>';
 | 
				
			||||||
| 
						 | 
					@ -3427,7 +3434,7 @@
 | 
				
			||||||
                            r += '<div class=DevSt style=width:100%;padding-top:4px><span id=DevxHeader' + deviceHeaderId + ' class=devHeaderx style=float:right></span>';
 | 
					                            r += '<div class=DevSt style=width:100%;padding-top:4px><span id=DevxHeader' + deviceHeaderId + ' class=devHeaderx style=float:right></span>';
 | 
				
			||||||
                            if ((view == 1) || (view == 2) || (view == 3)) {
 | 
					                            if ((view == 1) || (view == 2) || (view == 3)) {
 | 
				
			||||||
                                var collapsed = CollapsedGroups['pwr:' + pwr];
 | 
					                                var collapsed = CollapsedGroups['pwr:' + pwr];
 | 
				
			||||||
                                r += '<img class=collapseImage id="DevxColImg' + deviceHeaderId + '" src=images/c' + ((collapsed === true)?'1':'2') + '.png height=8 width=8 style=margin-left:2px;margin-right:2px;cursor:pointer onclick=toggleCollapseGroup("' + deviceHeaderId + '","pwr:' + pwr + '",' + view + ')></img>'; // Collapse action
 | 
					                                r += '<img class=collapseImage cmenu=expandAllContextMenu id="DevxColImg' + deviceHeaderId + '" src=images/c' + ((collapsed === true)?'1':'2') + '.png height=8 width=8 style=margin-left:2px;margin-right:2px;cursor:pointer onclick=toggleCollapseGroup("' + deviceHeaderId + '","pwr:' + pwr + '",' + view + ')></img>'; // Collapse action
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            r += '<span>' + PowerStateStr2(node.pwr) + '</span></div>';
 | 
					                            r += '<span>' + PowerStateStr2(node.pwr) + '</span></div>';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3594,16 +3601,14 @@
 | 
				
			||||||
                        if (view == 2) {
 | 
					                        if (view == 2) {
 | 
				
			||||||
                            r += '<tr><td colspan=4><div class=DevSt style=width:100%;padding-top:4px>';
 | 
					                            r += '<tr><td colspan=4><div class=DevSt style=width:100%;padding-top:4px>';
 | 
				
			||||||
                            var collapsed = CollapsedGroups['tag:' + encodeURIComponentEx(i)];
 | 
					                            var collapsed = CollapsedGroups['tag:' + encodeURIComponentEx(i)];
 | 
				
			||||||
                            r += '<img class=collapseImage id="DevxColImg' + tagDeviceHeaderId + '" src=images/c' + ((collapsed === true)?'1':'2') + '.png height=8 width=8 style=margin-left:2px;margin-right:2px;cursor:pointer onclick=toggleCollapseGroup("' + tagDeviceHeaderId + '","tag:' + encodeURIComponentEx(i) + '",2)></img>'; // Collapse action
 | 
					                            r += '<img class=collapseImage cmenu=expandAllContextMenu id="DevxColImg' + tagDeviceHeaderId + '" src=images/c' + ((collapsed === true)?'1':'2') + '.png height=8 width=8 style=margin-left:2px;margin-right:2px;cursor:pointer onclick=toggleCollapseGroup("' + tagDeviceHeaderId + '","tag:' + encodeURIComponentEx(i) + '",2)></img>'; // Collapse action
 | 
				
			||||||
                            r += '<span class=devHeaderx style=float:right>' + groupCount[i] + ' node' + ((groupCount[i] > 1) ? 's' : '') + '</span><span>' + EscapeHtml(i).split('|').join(' → ').split('**INDV*~*DEVS**').join('<i>' + "Individual Devices" + '</i>') + '</span></div>' + groups[i];
 | 
					                            r += '<span class=devHeaderx style=float:right>' + groupCount[i] + ' node' + ((groupCount[i] > 1) ? 's' : '') + '</span><span>' + EscapeHtml(i).split('|').join(' → ').split('**INDV*~*DEVS**').join('<i>' + "Individual Devices" + '</i>') + '</span></div>' + groups[i];
 | 
				
			||||||
                        } else {
 | 
					                        } else {
 | 
				
			||||||
                            r += '<div class=DevSt style=width:100%;padding-top:4px><span class=devHeaderx style=float:right>' + format(((groupCount[i] > 1) ? '{0} nodes' : '{0} node'), groupCount[i]) + '</span>';
 | 
					                            r += '<div class=DevSt style=width:100%;padding-top:4px><span class=devHeaderx style=float:right>' + format(((groupCount[i] > 1) ? '{0} nodes' : '{0} node'), groupCount[i]) + '</span>';
 | 
				
			||||||
                            var collapsed = CollapsedGroups['tag:' + encodeURIComponentEx(i)];
 | 
					                            var collapsed = CollapsedGroups['tag:' + encodeURIComponentEx(i)];
 | 
				
			||||||
                            r += '<img class=collapseImage id="DevxColImg' + tagDeviceHeaderId + '" src=images/c' + ((collapsed === true)?'1':'2') + '.png height=8 width=8 style=margin-left:2px;margin-right:2px;cursor:pointer onclick=toggleCollapseGroup("' + tagDeviceHeaderId + '","tag:' + encodeURIComponentEx(i) + '")></img>'; // Collapse action
 | 
					                            r += '<img class=collapseImage cmenu=expandAllContextMenu id="DevxColImg' + tagDeviceHeaderId + '" src=images/c' + ((collapsed === true)?'1':'2') + '.png height=8 width=8 style=margin-left:2px;margin-right:2px;cursor:pointer onclick=toggleCollapseGroup("' + tagDeviceHeaderId + '","tag:' + encodeURIComponentEx(i) + '")></img>'; // Collapse action
 | 
				
			||||||
                            r += '<span>' + EscapeHtml(i).split('|').join(' → ').split('**INDV*~*DEVS**').join('<i>' + "Individual Devices" + '</i>') + '</span></div>';
 | 
					                            r += '<span>' + EscapeHtml(i).split('|').join(' → ').split('**INDV*~*DEVS**').join('<i>' + "Individual Devices" + '</i>') + '</span></div>';
 | 
				
			||||||
                            r += '<div id=DevxCol' + tagDeviceHeaderId + ((collapsed === true)?' style=display:none':'') + '>'; // Open collapse div
 | 
					                            r += '<div id=DevxCol' + tagDeviceHeaderId + ((collapsed === true)?' style=display:none':'') + '>' + groups[i] + '</div>'; // Open collapse div
 | 
				
			||||||
                            r += groups[i];
 | 
					 | 
				
			||||||
                            r += '</div>';
 | 
					 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        tagDeviceHeaderId++;
 | 
					                        tagDeviceHeaderId++;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
| 
						 | 
					@ -3636,7 +3641,7 @@
 | 
				
			||||||
                            // Collapsing header & start collapsing area
 | 
					                            // Collapsing header & start collapsing area
 | 
				
			||||||
                            deviceHeaderId2++;
 | 
					                            deviceHeaderId2++;
 | 
				
			||||||
                            var collapsed = CollapsedGroups[mesh._id];
 | 
					                            var collapsed = CollapsedGroups[mesh._id];
 | 
				
			||||||
                            r += '<img class=collapseImage id="DevxColImg' + deviceHeaderId2 + '" src=images/c' + ((collapsed === true)?'1':'2') + '.png height=8 width=8 style=margin-left:2px;margin-right:2px;cursor:pointer onclick=toggleCollapseGroup("' + deviceHeaderId2 + '","' + mesh._id + '")></img>'; // Collapse action
 | 
					                            r += '<img class=collapseImage cmenu=expandAllContextMenu id="DevxColImg' + deviceHeaderId2 + '" src=images/c' + ((collapsed === true)?'1':'2') + '.png height=8 width=8 style=margin-left:2px;margin-right:2px;cursor:pointer onclick=toggleCollapseGroup("' + deviceHeaderId2 + '","' + mesh._id + '")></img>'; // Collapse action
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            r += '<span id=MxMESH style=cursor:pointer onclick=gotoMesh("' + mesh._id + '")>' + EscapeHtml(mesh.name) + '</span><span>';
 | 
					                            r += '<span id=MxMESH style=cursor:pointer onclick=gotoMesh("' + mesh._id + '")>' + EscapeHtml(mesh.name) + '</span><span>';
 | 
				
			||||||
                            r += getMeshActions(mesh, meshrights);
 | 
					                            r += getMeshActions(mesh, meshrights);
 | 
				
			||||||
| 
						 | 
					@ -4868,6 +4873,31 @@
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function cmexpandaction(action) {
 | 
				
			||||||
 | 
					            if (action == 1) {
 | 
				
			||||||
 | 
					                CollapsedGroups = {};
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                if (sort == 0) { CollapsedGroups = {}; for (var i in meshes) { CollapsedGroups[i] = true; } for (var i in nodes) { if (meshes[nodes[i].meshid] == null) { CollapsedGroups[nodes[i].meshid] = true; } } }
 | 
				
			||||||
 | 
					                if (sort == 1) { CollapsedGroups = {}; for (var i = 0; i < 10; i++) { CollapsedGroups['pwr:' + i] = true; } }
 | 
				
			||||||
 | 
					                if (sort == 3) { CollapsedGroups = {}; for (var i in nodes) { var node = nodes[i]; if (node.tags) { for (var j in node.tags) { CollapsedGroups['tag:' + encodeURIComponentEx(node.tags[j])] = true; } } } }
 | 
				
			||||||
 | 
					                if (sort == 4) {
 | 
				
			||||||
 | 
					                    CollapsedGroups = {};
 | 
				
			||||||
 | 
					                    for (var i in nodes) {
 | 
				
			||||||
 | 
					                        var node = nodes[i];
 | 
				
			||||||
 | 
					                        if (node.tags) {
 | 
				
			||||||
 | 
					                            var mesh2 = meshes[node.meshid];
 | 
				
			||||||
 | 
					                            if (mesh2) {
 | 
				
			||||||
 | 
					                                for (var j in node.tags) { CollapsedGroups['tag:' + encodeURIComponentEx(mesh2.name + ' - ' + node.tags[j])] = true; }
 | 
				
			||||||
 | 
					                            } else {
 | 
				
			||||||
 | 
					                                for (var j in node.tags) { CollapsedGroups['tag:' + encodeURIComponentEx('**INDV*~*DEVS** - ' + node.tags[j])] = true; }
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            mainUpdate(4);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        function cmdeskplayeraction(action) {
 | 
					        function cmdeskplayeraction(action) {
 | 
				
			||||||
            if (xxdialogMode) return;
 | 
					            if (xxdialogMode) return;
 | 
				
			||||||
            safeNewWindow(window.location.origin + '{{{domainurl}}}player.htm', 'meshcentral-deskplayer');
 | 
					            safeNewWindow(window.location.origin + '{{{domainurl}}}player.htm', 'meshcentral-deskplayer');
 | 
				
			||||||
| 
						 | 
					@ -4900,6 +4930,7 @@
 | 
				
			||||||
            QV('rfbPortContextMenu', false);
 | 
					            QV('rfbPortContextMenu', false);
 | 
				
			||||||
            QV('filesContextMenu', false);
 | 
					            QV('filesContextMenu', false);
 | 
				
			||||||
            QV('deskPlayerContextMenu', false);
 | 
					            QV('deskPlayerContextMenu', false);
 | 
				
			||||||
 | 
					            QV('expandAllContextMenu', false);
 | 
				
			||||||
            //QV('pluginTabContextMenu', false);
 | 
					            //QV('pluginTabContextMenu', false);
 | 
				
			||||||
            contextelement = null;
 | 
					            contextelement = null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue