diff --git a/src/sunstone/public/js/plugins/acls-tab.js b/src/sunstone/public/js/plugins/acls-tab.js index a61ca0082d..d53b4f81f7 100644 --- a/src/sunstone/public/js/plugins/acls-tab.js +++ b/src/sunstone/public/js/plugins/acls-tab.js @@ -517,4 +517,5 @@ $(document).ready(function(){ tableCheckboxesListener(dataTable_acls); //shortenedInfoFields('#datatable_acls'); + infoListener(dataTable_acls); }) diff --git a/src/sunstone/public/js/plugins/clusters-tab.js b/src/sunstone/public/js/plugins/clusters-tab.js index f08e6ab9ad..e2d9d1e400 100644 --- a/src/sunstone/public/js/plugins/clusters-tab.js +++ b/src/sunstone/public/js/plugins/clusters-tab.js @@ -864,5 +864,5 @@ $(document).ready(function(){ initCheckAllBoxes(dataTable_clusters); tableCheckboxesListener(dataTable_clusters); -// clusterInfoListener(); + infoListener(dataTable_clusters); }); diff --git a/src/sunstone/public/js/plugins/datastores-tab.js b/src/sunstone/public/js/plugins/datastores-tab.js index 996a85ba3c..80f760a018 100644 --- a/src/sunstone/public/js/plugins/datastores-tab.js +++ b/src/sunstone/public/js/plugins/datastores-tab.js @@ -356,21 +356,6 @@ function datastoreElementArray(element_json){ ]; } -function datastoreInfoListener(){ - - $('#tbodydatastores tr',dataTable_datastores).live("click", function(e){ - if ($(e.target).is('input') || $(e.target).is('a img')) {return true;} - - var aData = dataTable_datastores.fnGetData(this); - var id = $(aData[0]).val(); - if (!id) return true; - - popDialogLoading(); - Sunstone.runAction("Datastore.showinfo",id); - return false; - }); -}; - function updateDatastoreSelect(){ datastores_select = makeSelectOptions(dataTable_datastores, 1, @@ -703,7 +688,7 @@ $(document).ready(function(){ initCheckAllBoxes(dataTable_datastores); tableCheckboxesListener(dataTable_datastores); - datastoreInfoListener(); + infoListener(dataTable_datastores,'Datastore.showinfo'); $('div#menu li#li_datastores_tab').live('click',function(){ dataTable_datastores.fnFilter('',5); diff --git a/src/sunstone/public/js/plugins/groups-tab.js b/src/sunstone/public/js/plugins/groups-tab.js index 5689390462..8f6152ae29 100644 --- a/src/sunstone/public/js/plugins/groups-tab.js +++ b/src/sunstone/public/js/plugins/groups-tab.js @@ -179,17 +179,6 @@ function groupElementArray(group_json){ users_str ]; } -// function groupInfoListener(){ -// $('#groups_tab #tbodygroups tr',main_tabs_context).live("click",function(e){ -// //do nothing if we are clicking a checkbox! -// if ($(e.target).is('input')) {return true;} -// var aData = dataTable_groups.fnGetData(this); -// var id = $(aData[0]).val(); -// Sunstone.runAction("Group.showinfo",id); -// return false; -// }); -// } - function updateGroupSelect(){ groups_select = makeSelectOptions(dataTable_groups, 1,//id_col @@ -302,4 +291,5 @@ $(document).ready(function(){ initCheckAllBoxes(dataTable_groups); tableCheckboxesListener(dataTable_groups); + infoListener(dataTable_groups); }) diff --git a/src/sunstone/public/js/plugins/hosts-tab.js b/src/sunstone/public/js/plugins/hosts-tab.js index 431985711f..e7536daede 100644 --- a/src/sunstone/public/js/plugins/hosts-tab.js +++ b/src/sunstone/public/js/plugins/hosts-tab.js @@ -425,22 +425,6 @@ function hostElementArray(host_json){ ]; } -//Listen to clicks on the tds of the tables and shows the info dialogs. -function hostInfoListener(){ - $('#tbodyhosts tr',dataTable_hosts).live("click",function(e){ - //do nothing if we are clicking a checkbox! - if ($(e.target).is('input')) {return true;} - - var aData = dataTable_hosts.fnGetData(this); - var id = $(aData[0]).val(); - if (!id) return true; - - popDialogLoading(); - Sunstone.runAction("Host.showinfo",id); - return false; - }); -} - //updates the host select by refreshing the options in it function updateHostSelect(){ hosts_select = makeSelectOptions(dataTable_hosts, @@ -739,7 +723,7 @@ $(document).ready(function(){ initCheckAllBoxes(dataTable_hosts); tableCheckboxesListener(dataTable_hosts); - hostInfoListener(); + infoListener(dataTable_hosts, "Host.showinfo"); $('div#menu li#li_hosts_tab').live('click',function(){ dataTable_hosts.fnFilter('',3); diff --git a/src/sunstone/public/js/plugins/images-tab.js b/src/sunstone/public/js/plugins/images-tab.js index d7a5ebe693..ade3f02c2a 100644 --- a/src/sunstone/public/js/plugins/images-tab.js +++ b/src/sunstone/public/js/plugins/images-tab.js @@ -555,24 +555,6 @@ function imageElementArray(image_json){ ]; } -// Set up the listener on the table TDs to show the info panel -function imageInfoListener(){ - $('#tbodyimages tr',dataTable_images).live("click",function(e){ - var target = $(e.target); - - if (target.is('input') || target.is('select') || target.is('option')) - return true; - - var aData = dataTable_images.fnGetData(this); - var id = $(aData[0]).val(); - if (!id) return true; - - popDialogLoading(); - Sunstone.runAction("Image.showinfo",id); - return false; - }); -} - // Callback to update an element in the dataTable function updateImageElement(request, image_json){ var id = image_json.IMAGE.ID; @@ -1180,5 +1162,5 @@ $(document).ready(function(){ initCheckAllBoxes(dataTable_images); tableCheckboxesListener(dataTable_images); - imageInfoListener(); + infoListener(dataTable_images,'Image.showinfo'); }); diff --git a/src/sunstone/public/js/plugins/templates-tab.js b/src/sunstone/public/js/plugins/templates-tab.js index 8411a95bd8..84be66f5fd 100644 --- a/src/sunstone/public/js/plugins/templates-tab.js +++ b/src/sunstone/public/js/plugins/templates-tab.js @@ -857,21 +857,6 @@ function templateElementArray(template_json){ ]; } -// Set up the listener on the table TDs to show the info panel -function templateInfoListener(){ - $('#tbodytemplates tr',dataTable_templates).live("click",function(e){ - if ($(e.target).is('input')) {return true;} - - var aData = dataTable_templates.fnGetData(this); - var id = $(aData[0]).val(); - if (!id) return true; - - popDialogLoading(); - Sunstone.runAction("Template.showinfo",id); - return false; - }); -} - //Updates the select input field with an option for each template function updateTemplateSelect(){ var templates_select = @@ -2178,5 +2163,5 @@ $(document).ready(function(){ initCheckAllBoxes(dataTable_templates); tableCheckboxesListener(dataTable_templates); - templateInfoListener(); + infoListener(dataTable_templates,'Template.showinfo'); }); diff --git a/src/sunstone/public/js/plugins/users-tab.js b/src/sunstone/public/js/plugins/users-tab.js index d1f4aa34ab..02ba240c94 100644 --- a/src/sunstone/public/js/plugins/users-tab.js +++ b/src/sunstone/public/js/plugins/users-tab.js @@ -342,20 +342,6 @@ function userElementArray(user_json){ ] }; -function userInfoListener(){ - $('#tbodyusers tr',dataTable_users).live("click",function(e){ - //do nothing if we are clicking a checkbox! - if ($(e.target).is('input')) return true; - var aData = dataTable_users.fnGetData(this); - var id = $(aData[0]).val(); - if (!id) return true; - - popDialogLoading(); - Sunstone.runAction("User.showinfo",id); - return false; - }); -}; - function updateUserSelect(){ users_select = makeSelectOptions(dataTable_users, 1,//id_col @@ -571,5 +557,5 @@ $(document).ready(function(){ initCheckAllBoxes(dataTable_users); tableCheckboxesListener(dataTable_users); //shortenedInfoFields('#datatable_users'); - userInfoListener(); + infoListener(dataTable_users,'User.showinfo'); }); diff --git a/src/sunstone/public/js/plugins/vms-tab.js b/src/sunstone/public/js/plugins/vms-tab.js index e4ec4f57d8..3f621dbe2f 100644 --- a/src/sunstone/public/js/plugins/vms-tab.js +++ b/src/sunstone/public/js/plugins/vms-tab.js @@ -683,22 +683,6 @@ function vMachineElementArray(vm_json){ }; -//Creates a listener for the TDs of the VM table -function vMachineInfoListener(){ - - $('#tbodyvmachines tr',dataTable_vMachines).live("click", function(e){ - if ($(e.target).is('input') || $(e.target).is('a img')) {return true;} - - var aData = dataTable_vMachines.fnGetData(this); - var id = $(aData[0]).val(); - if (!id) return true; - - popDialogLoading(); - Sunstone.runAction("VM.showinfo",id); - return false; - }); -} - // Callback to refresh a single element from the list function updateVMachineElement(request, vm_json){ var id = vm_json.VM.ID; @@ -1410,5 +1394,5 @@ $(document).ready(function(){ initCheckAllBoxes(dataTable_vMachines); tableCheckboxesListener(dataTable_vMachines); - vMachineInfoListener(); + infoListener(dataTable_vMachines,'VM.showinfo'); }) \ No newline at end of file diff --git a/src/sunstone/public/js/plugins/vnets-tab.js b/src/sunstone/public/js/plugins/vnets-tab.js index 4b0f497747..8ef88a8811 100644 --- a/src/sunstone/public/js/plugins/vnets-tab.js +++ b/src/sunstone/public/js/plugins/vnets-tab.js @@ -496,23 +496,6 @@ function vNetworkElementArray(vn_json){ network.TOTAL_LEASES ]; } - -//Adds a listener to show the extended info when clicking on a row -function vNetworkInfoListener(){ - - $('#tbodyvnetworks tr',dataTable_vNetworks).live("click", function(e){ - if ($(e.target).is('input')) {return true;} - - var aData = dataTable_vNetworks.fnGetData(this); - var id = $(aData[0]).val(); - if (!id) return true; - - popDialogLoading(); - Sunstone.runAction("Network.showinfo",id); - return false; - }); -} - //Callback to update a vnet element after an action on it function updateVNetworkElement(request, vn_json){ id = vn_json.VNET.ID; @@ -1209,7 +1192,7 @@ $(document).ready(function(){ initCheckAllBoxes(dataTable_vNetworks); tableCheckboxesListener(dataTable_vNetworks); - vNetworkInfoListener(); + infoListener(dataTable_vNetworks,'Network.showinfo'); $('div#menu li#li_vnets_tab').live('click',function(){ dataTable_vNetworks.fnFilter('',5); diff --git a/src/sunstone/public/js/sunstone-util.js b/src/sunstone/public/js/sunstone-util.js index 39fae61534..7a066f4b48 100644 --- a/src/sunstone/public/js/sunstone-util.js +++ b/src/sunstone/public/js/sunstone-util.js @@ -787,6 +787,33 @@ function popUpTemplateUpdateDialog(elem_str,select_items,sel_elems){ return false; } + +//Shows run a custom action when clicking on rows. +function infoListener(dataTable, info_action){ + $('tbody tr',dataTable).live("click",function(e){ + if ($(e.target).is('input')) {return true;} + + var aData = dataTable.fnGetData(this); + var id = $(aData[0]).val(); + if (!id) return true; + + var count = $('tbody .check_item:checked', dataTable).length; + + if (info_action){ + if (e.ctrlKey || count >= 1) + $('.check_item',this).trigger('click'); + else { + popDialogLoading(); + Sunstone.runAction(info_action,id) + }; + } else { + $('.check_item',this).trigger('click'); + }; + + return false; + }); +} + function mustBeAdmin(){ return gid == 0; }