mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-11-02 20:02:29 +01:00 
			
		
		
		
	new UI - details tab actions - optimize code of after-actions.
This commit is contained in:
		
							parent
							
								
									a93d36d81a
								
							
						
					
					
						commit
						c4496a9453
					
				@ -269,14 +269,7 @@ long milliseconds = new Date().getTime();
 | 
			
		||||
                                <img src="images/routers_leftmenuicon.png" alt="Router" /></div>
 | 
			
		||||
                            <%=t.t("router")%>
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                    <div class="leftmenu_content" id="leftmenu_system">
 | 
			
		||||
                        <div class="leftmenu_secondindent">                           
 | 
			
		||||
                            <div class="leftmenu_list_icons">
 | 
			
		||||
                                <img src="images/storage_leftmenuicon.png" alt="System" /></div>
 | 
			
		||||
                            System
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                    </div>                   
 | 
			
		||||
                </div>
 | 
			
		||||
                <div class="leftmenu_list">
 | 
			
		||||
                    <div class="leftmenu_content">
 | 
			
		||||
 | 
			
		||||
@ -47,19 +47,20 @@ function accountJsonToDetailsTab(jsonObj) {
 | 
			
		||||
    $actionMenu.find("#action_list").empty(); 
 | 
			
		||||
    var noAvailableActions = true;
 | 
			
		||||
     
 | 
			
		||||
    var midmenuItemId = getMidmenuId(jsonObj); 
 | 
			
		||||
    if(jsonObj.id != systemAccountId && jsonObj.id != adminAccountId) {
 | 
			
		||||
        if (jsonObj.accounttype == roleTypeUser || jsonObj.accounttype == roleTypeDomainAdmin) {
 | 
			
		||||
            buildActionLinkForDetailsTab("Resource limits", accountActionMap, $actionMenu, accountListAPIMap);	
 | 
			
		||||
            buildActionLinkForDetailsTab("Resource limits", accountActionMap, $actionMenu, accountListAPIMap, midmenuItemId);	
 | 
			
		||||
            noAvailableActions = false;	
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        if(jsonObj.state == "enabled") {
 | 
			
		||||
            buildActionLinkForDetailsTab("Disable account", accountActionMap, $actionMenu, accountListAPIMap);  
 | 
			
		||||
            buildActionLinkForDetailsTab("Lock account", accountActionMap, $actionMenu, accountListAPIMap);
 | 
			
		||||
            buildActionLinkForDetailsTab("Disable account", accountActionMap, $actionMenu, accountListAPIMap, midmenuItemId);  
 | 
			
		||||
            buildActionLinkForDetailsTab("Lock account", accountActionMap, $actionMenu, accountListAPIMap, midmenuItemId);
 | 
			
		||||
            noAvailableActions = false;	
 | 
			
		||||
        }          	        
 | 
			
		||||
        else if(jsonObj.state == "disabled" || jsonObj.state == "locked") {
 | 
			
		||||
            buildActionLinkForDetailsTab("Enable account", accountActionMap, $actionMenu, accountListAPIMap);   
 | 
			
		||||
            buildActionLinkForDetailsTab("Enable account", accountActionMap, $actionMenu, accountListAPIMap, midmenuItemId);   
 | 
			
		||||
            noAvailableActions = false;	
 | 
			
		||||
        }           
 | 
			
		||||
    }  
 | 
			
		||||
@ -72,7 +73,7 @@ function accountJsonToDetailsTab(jsonObj) {
 | 
			
		||||
 | 
			
		||||
var accountActionMap = {  
 | 
			
		||||
    "Resource limits": {                 
 | 
			
		||||
        customActionFn : doResourceLimits 
 | 
			
		||||
        dialogBeforeActionFn : doResourceLimits 
 | 
			
		||||
    } 
 | 
			
		||||
    ,
 | 
			
		||||
    "Disable account": {              
 | 
			
		||||
@ -80,8 +81,19 @@ var accountActionMap = {
 | 
			
		||||
        asyncJobResponse: "disableaccountresponse",
 | 
			
		||||
        dialogBeforeActionFn : doDisableAccount,
 | 
			
		||||
        inProcessText: "Disabling account....",
 | 
			
		||||
        afterActionSeccessFn: function(jsonObj) {            
 | 
			
		||||
            $("#midmenuItem_"+jsonObj.id).data("jsonObj", jsonObj); 
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId) { 
 | 
			
		||||
            //Get embedded object from listVolume API until bug 6482("enableAccount, disableAccount, lockAccount should return an embedded object") is fixed.
 | 
			
		||||
            var jsonObj;           
 | 
			
		||||
            $.ajax({
 | 
			
		||||
                data: createURL("command=listAccounts&id="+id),
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                async: false,
 | 
			
		||||
                success: function(json) { 
 | 
			
		||||
                    jsonObj = json.listaccountsresponse.account[0];
 | 
			
		||||
                }            
 | 
			
		||||
            });           
 | 
			
		||||
                
 | 
			
		||||
            accountToMidmenu(jsonObj, $("#"+midmenuItemId));           
 | 
			
		||||
            accountJsonToDetailsTab(jsonObj);
 | 
			
		||||
        }
 | 
			
		||||
    }    
 | 
			
		||||
@ -90,8 +102,19 @@ var accountActionMap = {
 | 
			
		||||
        isAsyncJob: false,       
 | 
			
		||||
        dialogBeforeActionFn : doLockAccount,
 | 
			
		||||
        inProcessText: "Locking account....",
 | 
			
		||||
        afterActionSeccessFn: function(jsonObj) {
 | 
			
		||||
            $("#midmenuItem_"+jsonObj.id).data("jsonObj", jsonObj); 
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId) {  
 | 
			
		||||
            //Get embedded object from listVolume API until bug 6482("enableAccount, disableAccount, lockAccount should return an embedded object") is fixed.
 | 
			
		||||
            var jsonObj;           
 | 
			
		||||
            $.ajax({
 | 
			
		||||
                data: createURL("command=listAccounts&id="+id),
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                async: false,
 | 
			
		||||
                success: function(json) {    
 | 
			
		||||
                    jsonObj = json.listaccountsresponse.account[0];
 | 
			
		||||
                }            
 | 
			
		||||
            });       
 | 
			
		||||
                  
 | 
			
		||||
            accountToMidmenu(jsonObj, $("#"+midmenuItemId));           
 | 
			
		||||
            accountJsonToDetailsTab(jsonObj);
 | 
			
		||||
        }
 | 
			
		||||
    }    
 | 
			
		||||
@ -100,8 +123,19 @@ var accountActionMap = {
 | 
			
		||||
        isAsyncJob: false,       
 | 
			
		||||
        dialogBeforeActionFn : doEnableAccount,
 | 
			
		||||
        inProcessText: "Enabling account....",
 | 
			
		||||
        afterActionSeccessFn: function(jsonObj) {
 | 
			
		||||
            $("#midmenuItem_"+jsonObj.id).data("jsonObj", jsonObj); 
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId) {   
 | 
			
		||||
            //Get embedded object from listVolume API until bug 6482("enableAccount, disableAccount, lockAccount should return an embedded object") is fixed.
 | 
			
		||||
            var jsonObj;           
 | 
			
		||||
            $.ajax({
 | 
			
		||||
                data: createURL("command=listAccounts&id="+id),
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                async: false,
 | 
			
		||||
                success: function(json) {  
 | 
			
		||||
                    jsonObj = json.listaccountsresponse.account[0];
 | 
			
		||||
                }            
 | 
			
		||||
            });       
 | 
			
		||||
                
 | 
			
		||||
            accountToMidmenu(jsonObj, $("#"+midmenuItemId));           
 | 
			
		||||
            accountJsonToDetailsTab(jsonObj);
 | 
			
		||||
        }
 | 
			
		||||
    }    
 | 
			
		||||
 | 
			
		||||
@ -155,11 +155,6 @@ function isoToMidmenu(jsonObj, $midmenuItem1) {
 | 
			
		||||
    $midmenuItem1.find("#second_row").text(fromdb(jsonObj.zonename).substring(0,25));  
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function isoAfterDetailsTabAction(jsonObj) {
 | 
			
		||||
    isoToMidmenu(jsonObj, $("#"+isoGetMidmenuId(jsonObj))); 
 | 
			
		||||
    isoJsonToDetailsTab(jsonObj);	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function isoToRigntPanel($midmenuItem) {       
 | 
			
		||||
    var jsonObj = $midmenuItem.data("jsonObj");
 | 
			
		||||
    isoJsonToDetailsTab(jsonObj);   
 | 
			
		||||
@ -205,7 +200,7 @@ function isoJsonToDetailsTab(jsonObj) {
 | 
			
		||||
    }
 | 
			
		||||
    else {        
 | 
			
		||||
        $("#edit_button").show();
 | 
			
		||||
        buildActionLinkForDetailsTab("Copy ISO", isoActionMap, $actionMenu, isoListAPIMap);		
 | 
			
		||||
        buildActionLinkForDetailsTab("Copy ISO", isoActionMap, $actionMenu, isoListAPIMap, isoGetMidmenuId(jsonObj));		
 | 
			
		||||
        noAvailableActions = false;
 | 
			
		||||
    }
 | 
			
		||||
		
 | 
			
		||||
@ -213,7 +208,7 @@ function isoJsonToDetailsTab(jsonObj) {
 | 
			
		||||
	if (((isUser() && jsonObj.ispublic == "true" && !(jsonObj.domainid == g_domainid && jsonObj.account == g_account)) || jsonObj.isready == "false") || (jsonObj.bootable == "false")) {
 | 
			
		||||
	}
 | 
			
		||||
    else {        
 | 
			
		||||
        buildActionLinkForDetailsTab("Create VM", isoActionMap, $actionMenu, isoListAPIMap);	
 | 
			
		||||
        buildActionLinkForDetailsTab("Create VM", isoActionMap, $actionMenu, isoListAPIMap, isoGetMidmenuId(jsonObj));	
 | 
			
		||||
        noAvailableActions = false;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
@ -221,7 +216,7 @@ function isoJsonToDetailsTab(jsonObj) {
 | 
			
		||||
	if (((isUser() && jsonObj.ispublic == "true" && !(jsonObj.domainid == g_domainid && jsonObj.account == g_account))) || (jsonObj.isready == "false" && jsonObj.isostatus != null && jsonObj.isostatus.indexOf("% Downloaded") != -1)) {
 | 
			
		||||
	}
 | 
			
		||||
	else {	    
 | 
			
		||||
	    buildActionLinkForDetailsTab("Delete ISO", isoActionMap, $actionMenu, isoListAPIMap);	
 | 
			
		||||
	    buildActionLinkForDetailsTab("Delete ISO", isoActionMap, $actionMenu, isoListAPIMap, isoGetMidmenuId(jsonObj));	
 | 
			
		||||
	    noAvailableActions = false;
 | 
			
		||||
	}    
 | 
			
		||||
	
 | 
			
		||||
@ -261,19 +256,19 @@ var isoActionMap = {
 | 
			
		||||
        asyncJobResponse: "deleteisosresponse",
 | 
			
		||||
        dialogBeforeActionFn : doDeleteIso,
 | 
			
		||||
        inProcessText: "Deleting ISO....",
 | 
			
		||||
        afterActionSeccessFn: function(jsonObj) {          
 | 
			
		||||
            var $midmenuItem1 = $("#"+isoGetMidmenuId(jsonObj)); 
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId){                    
 | 
			
		||||
            var $midmenuItem1 = $("#"+midmenuItemId); 
 | 
			
		||||
            $midmenuItem1.remove();
 | 
			
		||||
            clearRightPanel();
 | 
			
		||||
            isoClearRightPanel();
 | 
			
		||||
        }
 | 
			
		||||
        }        
 | 
			
		||||
    },
 | 
			
		||||
    "Copy ISO": {
 | 
			
		||||
        isAsyncJob: true,
 | 
			
		||||
        asyncJobResponse: "copyisoresponse",            
 | 
			
		||||
        dialogBeforeActionFn : doCopyIso,
 | 
			
		||||
        inProcessText: "Copying ISO....",
 | 
			
		||||
        afterActionSeccessFn: function(){}   
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId){}   
 | 
			
		||||
    }  
 | 
			
		||||
    ,
 | 
			
		||||
    "Create VM": {
 | 
			
		||||
@ -281,7 +276,7 @@ var isoActionMap = {
 | 
			
		||||
        asyncJobResponse: "deployvirtualmachineresponse",            
 | 
			
		||||
        dialogBeforeActionFn : doCreateVMFromIso,
 | 
			
		||||
        inProcessText: "Creating VM....",
 | 
			
		||||
        afterActionSeccessFn: function(){}   
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId){}   
 | 
			
		||||
    }  
 | 
			
		||||
}   
 | 
			
		||||
 | 
			
		||||
@ -303,6 +298,7 @@ function doUpdateIso() {
 | 
			
		||||
       
 | 
			
		||||
    var jsonObj = $detailsTab.data("jsonObj"); 
 | 
			
		||||
	var id = jsonObj.id;
 | 
			
		||||
	var midmenuId = isoGetMidmenuId(jsonObj);
 | 
			
		||||
							
 | 
			
		||||
	var name = trim($detailsTab.find("#name_edit").val());
 | 
			
		||||
	var displaytext = trim($detailsTab.find("#displaytext_edit").val());
 | 
			
		||||
@ -311,12 +307,14 @@ function doUpdateIso() {
 | 
			
		||||
	    data: createURL("command=updateIso&id="+id+"&name="+todb(name)+"&displayText="+todb(displaytext)),
 | 
			
		||||
		dataType: "json",
 | 
			
		||||
		success: function(json) {	
 | 
			
		||||
		    isoAfterDetailsTabAction(json.updateisoresponse);		    					
 | 
			
		||||
		    var jsonObj = json.updateisoresponse;		    
 | 
			
		||||
		    isoToMidmenu(jsonObj, $("#"+midmenuId)); 
 | 
			
		||||
            isoJsonToDetailsTab(jsonObj);	    					
 | 
			
		||||
		}
 | 
			
		||||
	});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function doDeleteIso($actionLink, listAPIMap, $detailsTab) {   
 | 
			
		||||
function doDeleteIso($actionLink, listAPIMap, $detailsTab, midmenuItemId) {   
 | 
			
		||||
    var $detailsTab = $("#right_panel_content #tab_content_details"); 
 | 
			
		||||
    var jsonObj = $detailsTab.data("jsonObj");
 | 
			
		||||
	var id = jsonObj.id;
 | 
			
		||||
@ -338,7 +336,7 @@ function doDeleteIso($actionLink, listAPIMap, $detailsTab) {
 | 
			
		||||
		"Confirm": function() { 			
 | 
			
		||||
			$(this).dialog("close");			
 | 
			
		||||
			var apiCommand = "command=deleteIso&id="+id+moreCriteria.join("");
 | 
			
		||||
            doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap);	
 | 
			
		||||
            doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, midmenuItemId);	
 | 
			
		||||
		}, 
 | 
			
		||||
		"Cancel": function() { 
 | 
			
		||||
			$(this).dialog("close"); 
 | 
			
		||||
@ -356,7 +354,7 @@ function populateZoneFieldExcludeSourceZone(zoneField, excludeZoneId) {
 | 
			
		||||
    }			    
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function doCopyIso($actionLink, listAPIMap, $detailsTab) {   
 | 
			
		||||
function doCopyIso($actionLink, listAPIMap, $detailsTab, midmenuItemId) {   
 | 
			
		||||
	var jsonObj = $detailsTab.data("jsonObj");
 | 
			
		||||
	var id = jsonObj.id;
 | 
			
		||||
	var name = jsonObj.name;			
 | 
			
		||||
@ -376,7 +374,7 @@ function doCopyIso($actionLink, listAPIMap, $detailsTab) {
 | 
			
		||||
	        				        
 | 
			
		||||
	        var destZoneId = thisDialog.find("#copy_iso_zone").val();	
 | 
			
		||||
            var apiCommand = "command=copyIso&id="+id+"&sourcezoneid="+sourceZoneId+"&destzoneid="+destZoneId;
 | 
			
		||||
            doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap);	 
 | 
			
		||||
            doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, midmenuItemId);	 
 | 
			
		||||
	    }, 
 | 
			
		||||
	    "Cancel": function() {				        
 | 
			
		||||
		    $(this).dialog("close");
 | 
			
		||||
@ -384,7 +382,7 @@ function doCopyIso($actionLink, listAPIMap, $detailsTab) {
 | 
			
		||||
	}).dialog("open");	
 | 
			
		||||
}	
 | 
			
		||||
 | 
			
		||||
function doCreateVMFromIso($actionLink, listAPIMap, $detailsTab) { 
 | 
			
		||||
function doCreateVMFromIso($actionLink, listAPIMap, $detailsTab, midmenuItemId) { 
 | 
			
		||||
    var jsonObj = $detailsTab.data("jsonObj");	
 | 
			
		||||
	var id = jsonObj.id;		
 | 
			
		||||
	var name = jsonObj.name;				
 | 
			
		||||
@ -410,7 +408,7 @@ function doCreateVMFromIso($actionLink, listAPIMap, $detailsTab) {
 | 
			
		||||
	        var diskOfferingId = thisDialog.find("#disk_offering").val();	        		        
 | 
			
		||||
	                         
 | 
			
		||||
		    var apiCommand = "command=deployVirtualMachine&zoneId="+zoneId+"&serviceOfferingId="+serviceOfferingId+"&diskOfferingId="+diskOfferingId+"&templateId="+id+"&group="+todb(group)+"&displayname="+todb(name);
 | 
			
		||||
    	    doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap);		
 | 
			
		||||
    	    doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, midmenuItemId);		
 | 
			
		||||
	    }, 
 | 
			
		||||
	    "Cancel": function() {
 | 
			
		||||
	        $(this).dialog("close");
 | 
			
		||||
 | 
			
		||||
@ -22,7 +22,7 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//***** actions for details tab in right panel (begin) ************************************************************************
 | 
			
		||||
function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap) { 
 | 
			
		||||
function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap, midmenuItemId) { 
 | 
			
		||||
    var apiInfo = actionMap[label];
 | 
			
		||||
    var $listItem = $("#action_list_item").clone();
 | 
			
		||||
    $actionMenu.find("#action_list").append($listItem.show());
 | 
			
		||||
@ -45,16 +45,16 @@ function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap)
 | 
			
		||||
        var dialogBeforeActionFn = $actionLink.data("dialogBeforeActionFn"); 
 | 
			
		||||
        if(dialogBeforeActionFn == null) {	 
 | 
			
		||||
            var apiCommand = "command="+$actionLink.data("api")+"&id="+id;                      
 | 
			
		||||
            doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap); 
 | 
			
		||||
            doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, midmenuItemId); 
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            dialogBeforeActionFn($actionLink, listAPIMap, $detailsTab);	
 | 
			
		||||
            dialogBeforeActionFn($actionLink, listAPIMap, $detailsTab, midmenuItemId);	
 | 
			
		||||
        }               
 | 
			
		||||
        return false;
 | 
			
		||||
    });  
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap) {  
 | 
			
		||||
function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, midmenuItemId) {  
 | 
			
		||||
    var label = $actionLink.data("label");	
 | 
			
		||||
    var inProcessText = $actionLink.data("inProcessText");		           
 | 
			
		||||
    var isAsyncJob = $actionLink.data("isAsyncJob");
 | 
			
		||||
@ -69,7 +69,8 @@ function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap) {
 | 
			
		||||
    var $detailsTab = $("#right_panel_content #tab_content_details");     
 | 
			
		||||
    var $spinningWheel = $detailsTab.find("#spinning_wheel");
 | 
			
		||||
    $spinningWheel.find("#description").text(inProcessText);  
 | 
			
		||||
    $spinningWheel.show();        
 | 
			
		||||
    $spinningWheel.show();  
 | 
			
		||||
    $("#right_panel_content #after_action_info_container").removeClass("errorbox").hide();       
 | 
			
		||||
    
 | 
			
		||||
	//Async job (begin) *****
 | 
			
		||||
	if(isAsyncJob == true) {	                     
 | 
			
		||||
@ -97,6 +98,9 @@ function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap) {
 | 
			
		||||
			                            $("#right_panel_content #after_action_info").text(label + " action succeeded.");
 | 
			
		||||
                                        $("#right_panel_content #after_action_info_container").removeClass("errorbox").show(); 
 | 
			
		||||
                                        
 | 
			
		||||
                                        afterActionSeccessFn(json, id, midmenuItemId);
 | 
			
		||||
                                        
 | 
			
		||||
                                        /*
 | 
			
		||||
			                            if(apiCommand.indexOf("command=delete")!=0) { 	
 | 
			
		||||
			                                //DestroyVirtualMachine API doesn't return an embedded object on success (Bug 6041)
 | 
			
		||||
	                                        //Before Bug 6041 get fixed, use the temporary solution below.							            
 | 
			
		||||
@ -112,8 +116,10 @@ function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap) {
 | 
			
		||||
			                                //afterActionSeccessFn(json[listAPIResponse][listAPIResponseObj][0]);	   
 | 
			
		||||
			                            }
 | 
			
		||||
				                        else { //apiCommand is deleteXXXXXXX	
 | 
			
		||||
				                            afterActionSeccessFn(id);
 | 
			
		||||
				                        }			                             
 | 
			
		||||
				                            afterActionSeccessFn(json, id, midmenuItemId);
 | 
			
		||||
				                        }		
 | 
			
		||||
				                        */
 | 
			
		||||
				                        	                             
 | 
			
		||||
			                        } else if (result.jobstatus == 2) { // Failed		
 | 
			
		||||
			                            $("#right_panel_content #after_action_info").text(label + " action failed. Reason: " + fromdb(result.jobresult));
 | 
			
		||||
                                        $("#right_panel_content #after_action_info_container").addClass("errorbox").show();
 | 
			
		||||
@ -146,7 +152,10 @@ function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap) {
 | 
			
		||||
	            $spinningWheel.hide(); 	        
 | 
			
		||||
	            $("#right_panel_content #after_action_info").text(label + " action succeeded.");
 | 
			
		||||
                $("#right_panel_content #after_action_info_container").removeClass("errorbox").show();  
 | 
			
		||||
								
 | 
			
		||||
				
 | 
			
		||||
				afterActionSeccessFn(json, id, midmenuItemId);
 | 
			
		||||
				
 | 
			
		||||
				/*				
 | 
			
		||||
				if(apiCommand.indexOf("command=delete")!=0 && apiCommand.indexOf("command=disassociateIpAddress")!=0) { 									              
 | 
			
		||||
	                //RecoverVirtualMachine API doesn't return an embedded object on success (Bug 6037)
 | 
			
		||||
	                //Before Bug 6037 get fixed, use the temporary solution below.							            
 | 
			
		||||
@ -163,8 +172,10 @@ function doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap) {
 | 
			
		||||
				    //afterActionSeccessFn(json[listAPIResponse][listAPIResponseObj][0]);	   
 | 
			
		||||
				}
 | 
			
		||||
				else { //apiCommand is deleteXXXXXXX	
 | 
			
		||||
				    afterActionSeccessFn(id);
 | 
			
		||||
				    afterActionSeccessFn(json, id, midmenuItemId);
 | 
			
		||||
				}
 | 
			
		||||
				*/
 | 
			
		||||
				
 | 
			
		||||
	        },
 | 
			
		||||
            error: function(XMLHttpResponse) {	                
 | 
			
		||||
		        handleErrorInDetailsTab(XMLHttpResponse, $detailsTab, label);    
 | 
			
		||||
@ -594,7 +605,10 @@ function clearMiddleMenu() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function clearRightPanel() {
 | 
			
		||||
    $("#right_panel_content #tab_content_details #action_link #action_menu #action_list").empty();    
 | 
			
		||||
    var $actionMenu = $("#right_panel_content #tab_content_details #action_link #action_menu");
 | 
			
		||||
    $actionMenu.find("#action_list").empty();
 | 
			
		||||
    $actionMenu.find("#action_list").append($("#no_available_actions").clone().show());
 | 
			
		||||
     
 | 
			
		||||
    $("#right_panel_content #tab_content_details #spinning_wheel").hide();
 | 
			
		||||
    $("#right_panel_content #after_action_info_container").hide(); 
 | 
			
		||||
}
 | 
			
		||||
@ -832,6 +846,9 @@ function enableMultipleSelectionInMiddleMenu() {
 | 
			
		||||
    });    
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function getMidmenuId(jsonObj) {
 | 
			
		||||
    return "midmenuItem_" + jsonObj.id; 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -11,8 +11,9 @@ function routerToMidmenu(jsonObj, $midmenuItem1) {
 | 
			
		||||
    updateStateInMidMenu(jsonObj, $midmenuItem1);       
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function routerAfterDetailsTabAction(jsonObj) {
 | 
			
		||||
    $("#midmenuItem_"+jsonObj.id).data("jsonObj", jsonObj);   
 | 
			
		||||
function routerAfterDetailsTabAction(json, id, midmenuItemId) {        
 | 
			
		||||
    var jsonObj = json.queryasyncjobresultresponse.router[0];    
 | 
			
		||||
    routerToMidmenu(jsonObj, $("#"+midmenuItemId));  
 | 
			
		||||
    routerJsonToDetailsTab(jsonObj);   
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -44,12 +45,12 @@ function routerJsonToDetailsTab(jsonObj) {
 | 
			
		||||
    var noAvailableActions = true;
 | 
			
		||||
    
 | 
			
		||||
    if (jsonObj.state == 'Running') {   
 | 
			
		||||
        buildActionLinkForDetailsTab("Stop Router", routerActionMap, $actionMenu, routerListAPIMap);	
 | 
			
		||||
        buildActionLinkForDetailsTab("Reboot Router", routerActionMap, $actionMenu, routerListAPIMap);	  
 | 
			
		||||
        buildActionLinkForDetailsTab("Stop Router", routerActionMap, $actionMenu, routerListAPIMap, getMidmenuId(jsonObj));	
 | 
			
		||||
        buildActionLinkForDetailsTab("Reboot Router", routerActionMap, $actionMenu, routerListAPIMap, getMidmenuId(jsonObj));	  
 | 
			
		||||
        noAvailableActions = false;      
 | 
			
		||||
    }
 | 
			
		||||
    else if (jsonObj.state == 'Stopped') {        
 | 
			
		||||
        buildActionLinkForDetailsTab("Start Router", routerActionMap, $actionMenu, routerListAPIMap);	
 | 
			
		||||
        buildActionLinkForDetailsTab("Start Router", routerActionMap, $actionMenu, routerListAPIMap, getMidmenuId(jsonObj));	
 | 
			
		||||
        noAvailableActions = false;
 | 
			
		||||
    }  
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
@ -59,9 +59,10 @@ function snapshotJsonToDetailsTab(jsonObj) {
 | 
			
		||||
    //actions ***
 | 
			
		||||
    var $actionMenu = $("#right_panel_content #tab_content_details #action_link #action_menu");
 | 
			
		||||
    $actionMenu.find("#action_list").empty();
 | 
			
		||||
    buildActionLinkForDetailsTab("Create Volume", snapshotActionMap, $actionMenu, snapshotListAPIMap);		
 | 
			
		||||
    buildActionLinkForDetailsTab("Delete Snapshot", snapshotActionMap, $actionMenu, snapshotListAPIMap);	
 | 
			
		||||
    buildActionLinkForDetailsTab("Create Template", snapshotActionMap, $actionMenu, snapshotListAPIMap);					
 | 
			
		||||
    var midmenuItemId = getMidmenuId(jsonObj);
 | 
			
		||||
    buildActionLinkForDetailsTab("Create Volume", snapshotActionMap, $actionMenu, snapshotListAPIMap, midmenuItemId);		
 | 
			
		||||
    buildActionLinkForDetailsTab("Delete Snapshot", snapshotActionMap, $actionMenu, snapshotListAPIMap, midmenuItemId);	
 | 
			
		||||
    buildActionLinkForDetailsTab("Create Template", snapshotActionMap, $actionMenu, snapshotListAPIMap, midmenuItemId);					
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function snapshotClearRightPanel() {
 | 
			
		||||
@ -81,7 +82,7 @@ var snapshotActionMap = {
 | 
			
		||||
        asyncJobResponse: "createvolumeresponse",
 | 
			
		||||
        dialogBeforeActionFn : doCreateVolumeFromSnapshotInSnapshotPage,
 | 
			
		||||
        inProcessText: "Creating Volume....",
 | 
			
		||||
        afterActionSeccessFn: function(jsonObj) {}
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId) {}
 | 
			
		||||
    }   
 | 
			
		||||
    , 
 | 
			
		||||
    "Delete Snapshot": {              
 | 
			
		||||
@ -89,9 +90,8 @@ var snapshotActionMap = {
 | 
			
		||||
        isAsyncJob: true,
 | 
			
		||||
        asyncJobResponse: "deletesnapshotresponse",        
 | 
			
		||||
        inProcessText: "Deleting snapshot....",
 | 
			
		||||
        afterActionSeccessFn: function(id) { 
 | 
			
		||||
            var $midmenuItem1 = $("#midmenuItem_"+id); 
 | 
			
		||||
            $midmenuItem1.remove();
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId) {            
 | 
			
		||||
            $("#"+midmenuItemId).remove();
 | 
			
		||||
            clearRightPanel();
 | 
			
		||||
            snapshotClearRightPanel();
 | 
			
		||||
        }
 | 
			
		||||
@ -102,7 +102,7 @@ var snapshotActionMap = {
 | 
			
		||||
        asyncJobResponse: "createtemplateresponse",
 | 
			
		||||
        dialogBeforeActionFn : doCreateTemplateFromSnapshotInSnapshotPage,
 | 
			
		||||
        inProcessText: "Creating Template....",
 | 
			
		||||
        afterActionSeccessFn: function(jsonObj) {}
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId) {}
 | 
			
		||||
    }
 | 
			
		||||
}   
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -211,13 +211,6 @@ function templateToMidmenu(jsonObj, $midmenuItem1) {
 | 
			
		||||
    $midmenuItem1.find("#second_row").text(fromdb(jsonObj.zonename).substring(0,25));   
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function templateAfterDetailsTabAction(jsonObj) {
 | 
			
		||||
    var $midmenuItem1 = $("#"+templateGetMidmenuId(jsonObj));
 | 
			
		||||
    $midmenuItem1.data("jsonObj", jsonObj);   
 | 
			
		||||
    templateToMidmenu(jsonObj, $midmenuItem1);
 | 
			
		||||
    templateJsonToDetailsTab(jsonObj);       
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function templateToRigntPanel($midmenuItem) {       
 | 
			
		||||
    var jsonObj = $midmenuItem.data("jsonObj");
 | 
			
		||||
    templateJsonToDetailsTab(jsonObj);   
 | 
			
		||||
@ -275,8 +268,8 @@ function templateJsonToDetailsTab(jsonObj) {
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
        $("#edit_button").show();
 | 
			
		||||
        buildActionLinkForDetailsTab("Copy Template", templateActionMap, $actionMenu, templateListAPIMap);			
 | 
			
		||||
        buildActionLinkForDetailsTab("Create VM", templateActionMap, $actionMenu, templateListAPIMap);	
 | 
			
		||||
        buildActionLinkForDetailsTab("Copy Template", templateActionMap, $actionMenu, templateListAPIMap, templateGetMidmenuId(jsonObj));			
 | 
			
		||||
        buildActionLinkForDetailsTab("Create VM", templateActionMap, $actionMenu, templateListAPIMap, templateGetMidmenuId(jsonObj));	
 | 
			
		||||
        noAvailableActions = false;		
 | 
			
		||||
    }
 | 
			
		||||
	
 | 
			
		||||
@ -285,7 +278,7 @@ function templateJsonToDetailsTab(jsonObj) {
 | 
			
		||||
		//template.find("#template_delete_container").hide();
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
        buildActionLinkForDetailsTab("Delete Template", templateActionMap, $actionMenu, templateListAPIMap);
 | 
			
		||||
        buildActionLinkForDetailsTab("Delete Template", templateActionMap, $actionMenu, templateListAPIMap, templateGetMidmenuId(jsonObj));
 | 
			
		||||
        noAvailableActions = false;	
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
@ -350,8 +343,8 @@ var templateActionMap = {
 | 
			
		||||
        asyncJobResponse: "deletetemplateresponse",
 | 
			
		||||
        dialogBeforeActionFn : doDeleteTemplate,
 | 
			
		||||
        inProcessText: "Deleting Template....",
 | 
			
		||||
        afterActionSeccessFn: function(jsonObj) {           
 | 
			
		||||
            var $midmenuItem1 = $("#"+templateGetMidmenuId(jsonObj)); 
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId){                    
 | 
			
		||||
            var $midmenuItem1 = $("#"+midmenuItemId); 
 | 
			
		||||
            $midmenuItem1.remove();
 | 
			
		||||
            clearRightPanel();
 | 
			
		||||
            templateClearRightPanel();
 | 
			
		||||
@ -362,7 +355,7 @@ var templateActionMap = {
 | 
			
		||||
        asyncJobResponse: "createtemplateresponse",            
 | 
			
		||||
        dialogBeforeActionFn : doCopyTemplate,
 | 
			
		||||
        inProcessText: "Copying Template....",
 | 
			
		||||
        afterActionSeccessFn: function(){}   
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId){}   
 | 
			
		||||
    }  
 | 
			
		||||
    ,
 | 
			
		||||
    "Create VM": {
 | 
			
		||||
@ -370,7 +363,7 @@ var templateActionMap = {
 | 
			
		||||
        asyncJobResponse: "deployvirtualmachineresponse",            
 | 
			
		||||
        dialogBeforeActionFn : doCreateVMFromTemplate,
 | 
			
		||||
        inProcessText: "Creating VM....",
 | 
			
		||||
        afterActionSeccessFn: function(){}   
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId){}   
 | 
			
		||||
    }  
 | 
			
		||||
}   
 | 
			
		||||
 | 
			
		||||
@ -395,6 +388,7 @@ function doUpdateTemplate() {
 | 
			
		||||
	
 | 
			
		||||
	var jsonObj = $detailsTab.data("jsonObj"); 
 | 
			
		||||
	var id = jsonObj.id;
 | 
			
		||||
	var midmenuId = templateGetMidmenuId(jsonObj);
 | 
			
		||||
	
 | 
			
		||||
	//updateTemplate	
 | 
			
		||||
	var array1 = [];
 | 
			
		||||
@ -457,12 +451,14 @@ function doUpdateTemplate() {
 | 
			
		||||
        data:createURL("command=listTemplates&templatefilter=self&id="+id),
 | 
			
		||||
        dataType: "json",
 | 
			
		||||
        success: function(json) {            
 | 
			
		||||
            templateAfterDetailsTabAction(json.listtemplatesresponse.template[0]);
 | 
			
		||||
            var jsonObj = json.listtemplatesresponse.template[0];           
 | 
			
		||||
            templateToMidmenu(jsonObj, $("#"+midmenuId));
 | 
			
		||||
            templateJsonToDetailsTab(jsonObj);              
 | 
			
		||||
        }
 | 
			
		||||
    });   
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function doDeleteTemplate($actionLink, listAPIMap, $detailsTab) {   
 | 
			
		||||
function doDeleteTemplate($actionLink, listAPIMap, $detailsTab, midmenuItemId) {   
 | 
			
		||||
    var $detailsTab = $("#right_panel_content #tab_content_details"); 
 | 
			
		||||
    var jsonObj = $detailsTab.data("jsonObj");
 | 
			
		||||
	var id = jsonObj.id;
 | 
			
		||||
@ -484,7 +480,7 @@ function doDeleteTemplate($actionLink, listAPIMap, $detailsTab) {
 | 
			
		||||
		"Confirm": function() { 			
 | 
			
		||||
			$(this).dialog("close");			
 | 
			
		||||
			var apiCommand = "command=deleteTemplate&id="+id+moreCriteria.join("");
 | 
			
		||||
            doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap);	
 | 
			
		||||
            doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, midmenuItemId);	
 | 
			
		||||
		}, 
 | 
			
		||||
		"Cancel": function() { 
 | 
			
		||||
			$(this).dialog("close"); 
 | 
			
		||||
@ -502,7 +498,7 @@ function populateZoneFieldExcludeSourceZone(zoneField, excludeZoneId) {
 | 
			
		||||
    }			    
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function doCopyTemplate($actionLink, listAPIMap, $detailsTab) { 
 | 
			
		||||
function doCopyTemplate($actionLink, listAPIMap, $detailsTab, midmenuItemId) { 
 | 
			
		||||
	var jsonObj = $detailsTab.data("jsonObj");
 | 
			
		||||
	var id = jsonObj.id;
 | 
			
		||||
	var name = jsonObj.name;						
 | 
			
		||||
@ -529,7 +525,7 @@ function doCopyTemplate($actionLink, listAPIMap, $detailsTab) {
 | 
			
		||||
	        
 | 
			
		||||
            var id = $detailsTab.data("jsonObj").id;			
 | 
			
		||||
	        var apiCommand = "command=copyTemplate&id="+id+"&sourcezoneid="+sourceZoneId+"&destzoneid="+destZoneId;
 | 
			
		||||
	        doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap);	
 | 
			
		||||
	        doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, midmenuItemId);	
 | 
			
		||||
	    }, 
 | 
			
		||||
	    "Cancel": function() {				        
 | 
			
		||||
		    $(this).dialog("close");
 | 
			
		||||
@ -537,7 +533,7 @@ function doCopyTemplate($actionLink, listAPIMap, $detailsTab) {
 | 
			
		||||
	}).dialog("open");			
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function doCreateVMFromTemplate($actionLink, listAPIMap, $detailsTab) { 
 | 
			
		||||
function doCreateVMFromTemplate($actionLink, listAPIMap, $detailsTab, midmenuItemId) { 
 | 
			
		||||
    var jsonObj = $detailsTab.data("jsonObj");
 | 
			
		||||
	var id = jsonObj.id;		
 | 
			
		||||
	var name = jsonObj.name;				
 | 
			
		||||
@ -573,7 +569,7 @@ function doCreateVMFromTemplate($actionLink, listAPIMap, $detailsTab) {
 | 
			
		||||
	            array1.push("&diskOfferingId="+diskOfferingId);	 		    	        
 | 
			
		||||
	        
 | 
			
		||||
		    var apiCommand = "command=deployVirtualMachine&zoneId="+zoneId+"&templateId="+id+array1.join("");
 | 
			
		||||
    	    doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap);		
 | 
			
		||||
    	    doActionToDetailsTab(id, $actionLink, apiCommand, listAPIMap, midmenuItemId);		
 | 
			
		||||
	    }, 
 | 
			
		||||
	    "Cancel": function() {
 | 
			
		||||
	        $(this).dialog("close");
 | 
			
		||||
 | 
			
		||||
@ -370,8 +370,9 @@ function afterLoadVolumeJSP() {
 | 
			
		||||
    //***** switch between different tabs (end) **********************************************************************    
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function volumeAfterDetailsTabAction(jsonObj) {
 | 
			
		||||
    $("#midmenuItem_"+jsonObj.id).data("jsonObj", jsonObj);   
 | 
			
		||||
function volumeAfterDetailsTabAction(json, id, midmenuItemId) {   
 | 
			
		||||
    var jsonObj = json.queryasyncjobresultresponse.virtualmachine[0];
 | 
			
		||||
    volumeToMidmenu(jsonObj,  $("#"+midmenuItemId));
 | 
			
		||||
    volumeJsonToDetailsTab(jsonObj);   
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -417,27 +418,27 @@ function volumeJsonToDetailsTab(jsonObj){
 | 
			
		||||
    var $actionMenu = $("#right_panel_content #tab_content_details #action_link #action_menu");
 | 
			
		||||
    $actionMenu.find("#action_list").empty();
 | 
			
		||||
    
 | 
			
		||||
    buildActionLinkForDetailsTab("Take Snapshot", volumeActionMap, $actionMenu, volumeListAPIMap);	//show take snapshot
 | 
			
		||||
    buildActionLinkForDetailsTab("Recurring Snapshot", volumeActionMap, $actionMenu, volumeListAPIMap);	//show Recurring Snapshot
 | 
			
		||||
    buildActionLinkForDetailsTab("Take Snapshot", volumeActionMap, $actionMenu, volumeListAPIMap, getMidmenuId(jsonObj));	//show take snapshot
 | 
			
		||||
    buildActionLinkForDetailsTab("Recurring Snapshot", volumeActionMap, $actionMenu, volumeListAPIMap, getMidmenuId(jsonObj));	//show Recurring Snapshot
 | 
			
		||||
    
 | 
			
		||||
    if(jsonObj.state != "Creating" && jsonObj.state != "Corrupted" && jsonObj.name != "attaching") {
 | 
			
		||||
        if(jsonObj.type=="ROOT") {
 | 
			
		||||
            if (jsonObj.vmstate == "Stopped") { 
 | 
			
		||||
                //buildActionLinkForDetailsTab("Create Template", volumeActionMap, $actionMenu, volumeListAPIMap);	//backend of CreateTemplateFromVolume is not working. Hide the option from UI until backend is fixed.
 | 
			
		||||
                //buildActionLinkForDetailsTab("Create Template", volumeActionMap, $actionMenu, volumeListAPIMap, getMidmenuId(jsonObj));	//backend of CreateTemplateFromVolume is not working. Hide the option from UI until backend is fixed.
 | 
			
		||||
            }
 | 
			
		||||
        } 
 | 
			
		||||
        else { 
 | 
			
		||||
	        if (jsonObj.virtualmachineid != null) {
 | 
			
		||||
		        if (jsonObj.storagetype == "shared" && (jsonObj.vmstate == "Running" || jsonObj.vmstate == "Stopped")) {
 | 
			
		||||
			        buildActionLinkForDetailsTab("Detach Disk", volumeActionMap, $actionMenu, volumeListAPIMap); //show detach disk
 | 
			
		||||
			        buildActionLinkForDetailsTab("Detach Disk", volumeActionMap, $actionMenu, volumeListAPIMap, getMidmenuId(jsonObj)); //show detach disk
 | 
			
		||||
		        }
 | 
			
		||||
	        } else {
 | 
			
		||||
		        // Disk not attached
 | 
			
		||||
		        if (jsonObj.storagetype == "shared") {
 | 
			
		||||
			        buildActionLinkForDetailsTab("Attach Disk", volumeActionMap, $actionMenu, volumeListAPIMap);   //show attach disk
 | 
			
		||||
			        buildActionLinkForDetailsTab("Attach Disk", volumeActionMap, $actionMenu, volumeListAPIMap, getMidmenuId(jsonObj));   //show attach disk
 | 
			
		||||
    			    			  		    
 | 
			
		||||
			        if(jsonObj.vmname == null || jsonObj.vmname == "none")
 | 
			
		||||
			            buildActionLinkForDetailsTab("Delete Volume", volumeActionMap, $actionMenu, volumeListAPIMap); //show delete volume
 | 
			
		||||
			            buildActionLinkForDetailsTab("Delete Volume", volumeActionMap, $actionMenu, volumeListAPIMap, getMidmenuId(jsonObj)); //show delete volume
 | 
			
		||||
		        }
 | 
			
		||||
	        }
 | 
			
		||||
        }
 | 
			
		||||
@ -515,29 +516,56 @@ var volumeActionMap = {
 | 
			
		||||
        asyncJobResponse: "attachvolumeresponse",            
 | 
			
		||||
        dialogBeforeActionFn : doAttachDisk,
 | 
			
		||||
        inProcessText: "Attaching disk....",
 | 
			
		||||
        afterActionSeccessFn: volumeAfterDetailsTabAction 
 | 
			
		||||
        afterActionSeccessFn: function (json, id, midmenuItemId) {              
 | 
			
		||||
            //var jsonObj = json.queryasyncjobresultresponse.virtualmachine[0];
 | 
			
		||||
            //Get embedded object from lsitVolume API until Bug 6481(embedded object returned by attachVolume API should include "type" property) is fixed.
 | 
			
		||||
            var jsonObj;           
 | 
			
		||||
            $.ajax({
 | 
			
		||||
                data: createURL("command=listVolumes&id="+id),
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                async: false,
 | 
			
		||||
                success: function(json) {                    
 | 
			
		||||
                    jsonObj = json.listvolumesresponse.volume[0];
 | 
			
		||||
                }            
 | 
			
		||||
            });           
 | 
			
		||||
            volumeToMidmenu(jsonObj,  $("#"+midmenuItemId));
 | 
			
		||||
            volumeJsonToDetailsTab(jsonObj);   
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "Detach Disk": {
 | 
			
		||||
        api: "detachVolume",            
 | 
			
		||||
        isAsyncJob: true,
 | 
			
		||||
        asyncJobResponse: "detachvolumeresponse",
 | 
			
		||||
        inProcessText: "Detaching disk....",
 | 
			
		||||
        afterActionSeccessFn: volumeAfterDetailsTabAction
 | 
			
		||||
        afterActionSeccessFn: function (json, id, midmenuItemId) {               
 | 
			
		||||
            //var jsonObj = json.queryasyncjobresultresponse.virtualmachine[0];
 | 
			
		||||
            //Get embedded object from lsitVolume API until Bug 6480(detachVolume API should return embedded object, like attachVolume API does.) is fixed.
 | 
			
		||||
            var jsonObj;            
 | 
			
		||||
            $.ajax({
 | 
			
		||||
                data: createURL("command=listVolumes&id="+id),
 | 
			
		||||
                dataType: "json",
 | 
			
		||||
                async: false,
 | 
			
		||||
                success: function(json) {                    
 | 
			
		||||
                    jsonObj = json.listvolumesresponse.volume[0];
 | 
			
		||||
                }            
 | 
			
		||||
            });            
 | 
			
		||||
            volumeToMidmenu(jsonObj,  $("#"+midmenuItemId));
 | 
			
		||||
            volumeJsonToDetailsTab(jsonObj);   
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "Create Template": {
 | 
			
		||||
        isAsyncJob: true,
 | 
			
		||||
        asyncJobResponse: "createtemplateresponse",            
 | 
			
		||||
        dialogBeforeActionFn : doCreateTemplateFromVolume,
 | 
			
		||||
        inProcessText: "Creating template....",
 | 
			
		||||
        afterActionSeccessFn: function(){}   
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId){}   
 | 
			
		||||
    },
 | 
			
		||||
    "Delete Volume": {
 | 
			
		||||
        api: "deleteVolume",            
 | 
			
		||||
        isAsyncJob: false,        
 | 
			
		||||
        inProcessText: "Deleting volume....",
 | 
			
		||||
        afterActionSeccessFn: function(id) {     
 | 
			
		||||
            var $midmenuItem1 = $("#midmenuItem_"+id); 
 | 
			
		||||
            $midmenuItem1.remove();
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId) {                 
 | 
			
		||||
            $("#"+midmenuItemId).remove();
 | 
			
		||||
            clearRightPanel();
 | 
			
		||||
            volumeClearRightPanel();
 | 
			
		||||
        }
 | 
			
		||||
@ -547,7 +575,7 @@ var volumeActionMap = {
 | 
			
		||||
        asyncJobResponse: "createsnapshotresponse",            
 | 
			
		||||
        dialogBeforeActionFn : doTakeSnapshot,
 | 
			
		||||
        inProcessText: "Taking Snapshot....",
 | 
			
		||||
        afterActionSeccessFn: function(){}   
 | 
			
		||||
        afterActionSeccessFn: function(json, id, midmenuItemId){}   
 | 
			
		||||
    },
 | 
			
		||||
    "Recurring Snapshot": {                 
 | 
			
		||||
        dialogBeforeActionFn : doRecurringSnapshot 
 | 
			
		||||
@ -660,7 +688,7 @@ function clearBottomPanel() {
 | 
			
		||||
    cleanErrMsg(dialogBox.find("#edit_day_of_month"), dialogBox.find("#edit_day_of_month_errormsg"));
 | 
			
		||||
}	   
 | 
			
		||||
	
 | 
			
		||||
function doRecurringSnapshot() {   
 | 
			
		||||
function doRecurringSnapshot(json, id, midmenuItemId) {   
 | 
			
		||||
    var $detailsTab = $("#right_panel_content #tab_content_details");  
 | 
			
		||||
	var volumeId = $detailsTab.data("jsonObj").id;
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user