diff --git a/src/sunstone/public/js/plugins/images-tab.js b/src/sunstone/public/js/plugins/images-tab.js
index e42254b685..d8fd88bac8 100644
--- a/src/sunstone/public/js/plugins/images-tab.js
+++ b/src/sunstone/public/js/plugins/images-tab.js
@@ -203,7 +203,6 @@ var update_image_tmpl =
\
';
-var images_select = "";
var dataTable_images;
var $create_image_dialog;
@@ -537,40 +536,22 @@ function imageInfoListener(){
});
}
-//Updates the select input field with an option for each image
-function updateImageSelect(){
- images_select =
- makeSelectOptions(dataTable_images,
- 1,
- 4,
- [9,9,9],
- ["DISABLED","LOCKED","ERROR"]
- );
-
- //update static selectors:
- //in the VM section
- $('div.vm_section#disks select#IMAGE_ID', $create_template_dialog).html(images_select);
-}
-
// Callback to update an element in the dataTable
function updateImageElement(request, image_json){
var id = image_json.IMAGE.ID;
var element = imageElementArray(image_json);
updateSingleElement(element,dataTable_images,'#image_'+id);
- updateImageSelect();
}
// Callback to remove an element from the dataTable
function deleteImageElement(req){
deleteElement(dataTable_images,'#image_'+req.request.data);
- updateImageSelect();
}
// Callback to add an image element
function addImageElement(request, image_json){
var element = imageElementArray(image_json);
addElement(element,dataTable_images);
- updateImageSelect();
}
// Callback to refresh the list of images
@@ -582,7 +563,6 @@ function updateImagesView(request, images_list){
});
updateView(image_list_array,dataTable_images);
- updateImageSelect();
updateDashboard("images",images_list);
}
diff --git a/src/sunstone/public/js/plugins/templates-tab.js b/src/sunstone/public/js/plugins/templates-tab.js
index 82f91813dd..18c185f64a 100644
--- a/src/sunstone/public/js/plugins/templates-tab.js
+++ b/src/sunstone/public/js/plugins/templates-tab.js
@@ -195,9 +195,10 @@ var create_template_tmpl = '
\
\
\
\
-
\
\
\
@@ -267,7 +268,7 @@ var create_template_tmpl = '
\
\
\
\
- \
+ \
\
\
\
@@ -292,9 +293,10 @@ var create_template_tmpl = '
\
\
@@ -378,7 +380,7 @@ var create_template_tmpl = '
\
\
\
\
- \
+ \
\
\
\
@@ -985,12 +987,6 @@ function setupCreateTemplateDialog(){
$(section_inputs).hide();
$(section_graphics).hide();
- //Repopulate images select
- $('select#IMAGE_ID',section_disks).html(images_select);
- //Repopulate network select
- $('select#NETWORK_ID',section_networks).html(vnetworks_select);
-
-
switch(ui.index){
case 0:
enable_kvm();
@@ -1378,6 +1374,12 @@ function setupCreateTemplateDialog(){
return false;
});
+ //Auto-set IMAGE_UNAME hidden field value
+ $('#IMAGE', section_disks).change(function(){
+ var uname = getValue($(this).val(),4,2,dataTable_images);
+ $('input#IMAGE_UNAME',section_disks).val(uname);
+ });
+
//Depending on adding a disk or a image we need to show/hide
//different options and make then mandatory or not
$('#image_vs_disk input',section_disks).click(function(){
@@ -1531,6 +1533,12 @@ function setupCreateTemplateDialog(){
return false;
});
+ //Auto-set IMAGE_UNAME hidden field value
+ $('#NETWORK', section_networks).change(function(){
+ var uname = getValue($(this).val(),4,2,dataTable_vNetworks);
+ $('input#NETWORK_UNAME',section_networks).val(uname);
+ });
+
//Depending on adding predefined network or not we show/hide
//some fields
$('#network_vs_niccfg input',section_networks).click(function(){
@@ -1970,6 +1978,23 @@ function setupCreateTemplateDialog(){
}
function popUpCreateTemplateDialog(){
+ //Repopulate images select
+ var im_sel = makeSelectOptions(dataTable_images,
+ 4, //id col - trick -> reference by name!
+ 4, //name col
+ [10,10,10],
+ ["DISABLED","LOCKED","ERROR"]
+ );
+ $('div#disks select#IMAGE',$create_template_dialog).html(im_sel);
+ //Repopulate network select
+ var vn_sel = makeSelectOptions(dataTable_vNetworks,
+ 4, //id col - trick -> reference by name!
+ 4,
+ [],
+ []
+ );
+ $('div#networks select#NETWORK',$create_template_dialog).html(vn_sel);
+
$create_template_dialog.dialog('open');
};
diff --git a/src/sunstone/public/js/plugins/vnets-tab.js b/src/sunstone/public/js/plugins/vnets-tab.js
index 8523a961f5..e9b9dcfcfc 100644
--- a/src/sunstone/public/js/plugins/vnets-tab.js
+++ b/src/sunstone/public/js/plugins/vnets-tab.js
@@ -159,7 +159,6 @@ var update_vnet_tmpl =
\
';
-var vnetworks_select="";
var dataTable_vNetworks;
var $create_vn_dialog;
var $lease_vn_dialog;
@@ -451,40 +450,22 @@ function vNetworkInfoListener(){
});
}
-//updates the vnet select different options
-function updateNetworkSelect(){
- vnetworks_select=
- makeSelectOptions(dataTable_vNetworks,
- 1,
- 4,
- [],
- []
- );
-
- //update static selectors:
- //in the VM creation dialog
- $('div.vm_section#networks select#NETWORK_ID',$create_template_dialog).html(vnetworks_select);
-}
-
//Callback to update a vnet element after an action on it
function updateVNetworkElement(request, vn_json){
id = vn_json.VNET.ID;
element = vNetworkElementArray(vn_json);
updateSingleElement(element,dataTable_vNetworks,'#vnetwork_'+id);
- updateNetworkSelect();
}
//Callback to delete a vnet element from the table
function deleteVNetworkElement(req){
deleteElement(dataTable_vNetworks,'#vnetwork_'+req.request.data);
- updateNetworkSelect();
}
//Callback to add a new element
function addVNetworkElement(request,vn_json){
var element = vNetworkElementArray(vn_json);
addElement(element,dataTable_vNetworks);
- updateNetworkSelect();
}
//updates the list of virtual networks
@@ -496,7 +477,6 @@ function updateVNetworksView(request, network_list){
});
updateView(network_list_array,dataTable_vNetworks);
- updateNetworkSelect();
//dependency with dashboard
updateDashboard("vnets",network_list);
diff --git a/src/sunstone/public/js/sunstone-util.js b/src/sunstone/public/js/sunstone-util.js
index 8918a8cb33..ee19881d77 100644
--- a/src/sunstone/public/js/sunstone-util.js
+++ b/src/sunstone/public/js/sunstone-util.js
@@ -420,8 +420,24 @@ function getName(id,dataTable){
}
});
return name;
-}
+};
+//Search a datatable record matching the filter_str in the filter_col. Returns
+//the value of that record in the desired value column.
+function getValue(filter_str,filter_col,value_col,dataTable){
+ var value="";
+ if (typeof(dataTable) == "undefined") return value;
+
+ var nodes = dataTable.fnGetData();
+
+ $.each(nodes,function(){
+ if (filter_str == this[filter_col]){
+ value = this[value_col];
+ return false;
+ };
+ });
+ return value;
+};
//Replaces all class"tip" divs with an information icon that
//displays the tip information on mouseover.