From: Daniel Henrique Barboza <danielhb(a)linux.vnet.ibm.com>
This patch makes the initProcessor function declared inside
template_edit_main.js a global function called
kimchi.init_processor_tab. The idea is to avoid code repetition
when the same tab is used by other modals (Guest Edit, for
example).
To make the function generic, references of 'template' inside
ids of init_processor_tab were removed. Changes in
template-edit.html.tmpl were required to make the tab work with
this new function.
Signed-off-by: Daniel Henrique Barboza <danielhb(a)linux.vnet.ibm.com>
---
ui/js/src/kimchi.template_edit_main.js | 159 +++++++++++++++++----------------
ui/pages/template-edit.html.tmpl | 2 +-
2 files changed, 85 insertions(+), 76 deletions(-)
diff --git a/ui/js/src/kimchi.template_edit_main.js
b/ui/js/src/kimchi.template_edit_main.js
index be53701..6fd257b 100644
--- a/ui/js/src/kimchi.template_edit_main.js
+++ b/ui/js/src/kimchi.template_edit_main.js
@@ -15,6 +15,88 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
+kimchi.init_processor_tab = function(cpu_info) {
+ var setCPUValue = function(){
+ if (!$('#sockets').hasClass("invalid-field") &&
+ !$('#cores').hasClass("invalid-field") &&
+ $('#sockets').val()!="" &&
$('#cores').val()!="") {
+
+ var sockets = parseInt($("#sockets").val());
+ var cores = parseInt($("#cores").val());
+ var threads = parseInt($("#threads").val());
+
+ var computedCpu = sockets * cores * threads;
+ $("#vcpus").val(computedCpu);
+ if ($("#cpus-check").prop("checked")) {
+ //If topology is checked, set maxcpu to be the same as # of cpu
otherwise, backend gives error
+ $("#guest-edit-max-processor-textbox").val(computedCpu);
+ }
+ } else {
+ $("#vcpus").val('');
+ }
+ };
+
+ $("input:text", "#form-edit-processor").on('keyup',
function() {
+ $(this).toggleClass("invalid-field",
!$(this).val().match('^[0-9]*$'));
+ if ($(this).prop('id') == 'sockets' ||
+ $(this).prop('id') == 'cores') {
+ setCPUValue();
+ }
+ });
+
+ $("input:checkbox", "#form-edit-processor").click(function() {
+ $('#threads').selectpicker();
+ $(".topology", "#form-edit-processor").slideToggle();
+ $("#vcpus").attr("disabled",
$(this).prop("checked"));
+ $("#guest-edit-max-processor-textbox").attr("disabled",
$(this).prop("checked"));
+ setCPUValue();
+ });
+
+ $('#threads').change(function() {
+ setCPUValue();
+ });
+
+ kimchi.getCPUInfo(function(data) {
+ var options = "";
+ var topo = cpu_info.topology;
+
+ for (var i = 0; Math.pow(2, i) <= data.threads_per_core; i++) {
+ var lastOne = Math.pow(2, i + 1) > data.threads_per_core ? "
selected" : "";
+ options += "<option" + lastOne + ">" + Math.pow(2,
i) + "</option>";
+ }
+
+ $('#threads').append(options);
+
+ if (cpu_info.vcpus) {
+ $("#vcpus").val(cpu_info.vcpus);
+ }
+ if (cpu_info.maxvcpus) {
+ $("#guest-edit-max-processor-textbox").val(cpu_info.maxvcpus);
+ }
+ if (topo && topo.sockets) {
+ $("#sockets").val(topo.sockets);
+ }
+ if (topo && topo.cores) {
+ $("#cores").val(topo.cores);
+ }
+ if (topo && topo.threads) {
+ $('#threads').val(topo.threads);
+ $('#threads').selectpicker();
+ $("input:checkbox",
"#form-edit-processor").trigger('click');
+ }
+ });
+
+ $('#guest-show-max-processor').on('click', function(e) {
+ e.preventDefault;
+ $('#guest-max-processor-panel').slideToggle();
+ var text = $('#guest-show-max-processor span.text').text();
+ $('#guest-show-max-processor span.text').text(text ==
i18n['KCHVMED6008M'] ? i18n['KCHVMED6009M'] :
i18n['KCHVMED6008M']);
+ $('#guest-show-max-processor i.fa').toggleClass('fa-plus-circle
fa-minus-circle');
+ });
+};
+
+
kimchi.template_edit_main = function() {
var templateEditMain = $('#edit-template-tabs');
var origDisks;
@@ -268,79 +350,6 @@ kimchi.template_edit_main = function() {
});
};
- var initProcessor = function() {
- var setCPUValue = function() {
- if(!$('#sockets').hasClass("invalid-field") &&
- !$('#cores').hasClass("invalid-field") &&
- $('#sockets').val()!="" &&
$('#cores').val()!=""){
-
- var sockets = parseInt($("#sockets").val());
- var cores = parseInt($("#cores").val());
- var threads = parseInt($("#threads").val());
-
- var computedCpu = sockets * cores * threads;
-
- $("#vcpus").val(computedCpu);
- if ($("#cpus-check").prop("checked")) {
- //If topology is checked, set maxcpu to be the same as # of cpu
otherwise, backend gives error
-
$("#guest-edit-max-processor-textbox").val(computedCpu);
- }
- } else {
- $("#vcpus").val('');
- }
- };
- $("input:text",
"#form-template-processor").on('keyup', function() {
- $(this).toggleClass("invalid-field",
!$(this).val().match('^[0-9]*$'));
- if ($(this).prop('id') == 'sockets' ||
- $(this).prop('id') == 'cores') {
- setCPUValue();
- }
- });
- $("input:checkbox",
"#form-template-processor").click(function() {
- $('#threads').selectpicker();
- $(".topology",
"#form-template-processor").slideToggle();
- $("#vcpus").attr("disabled",
$(this).prop("checked"));
-
$("#guest-edit-max-processor-textbox").attr("disabled",
$(this).prop("checked"));
- setCPUValue();
- });
- $('#threads').change(function() {
- setCPUValue();
- });
- kimchi.getCPUInfo(function(data) {
- var options = "";
- var topo = template.cpu_info.topology;
- for (var i = 0; Math.pow(2, i) <= data.threads_per_core; i++) {
- var lastOne = Math.pow(2, i + 1) > data.threads_per_core ? "
selected" : "";
- options += "<option" + lastOne + ">" +
Math.pow(2, i) + "</option>";
- }
- $('#threads').append(options);
- if (template.cpu_info.vcpus) {
- $("#vcpus").val(template.cpu_info.vcpus);
- }
- if (template.cpu_info.maxvcpus) {
-
$("#guest-edit-max-processor-textbox").val(template.cpu_info.maxvcpus);
- }
- if (topo && topo.sockets) {
- $("#sockets").val(topo.sockets);
- }
- if (topo && topo.cores) {
- $("#cores").val(topo.cores);
- }
- if (topo && topo.threads) {
- $('#threads').val(topo.threads);
- $('#threads').selectpicker();
- $("input:checkbox",
"#form-template-processor").trigger('click');
- }
- });
- $('#guest-show-max-processor').on('click', function(e) {
- e.preventDefault;
- $('#guest-max-processor-panel').slideToggle();
- var text = $('#guest-show-max-processor span.text').text();
- $('#guest-show-max-processor span.text').text(text ==
i18n['KCHVMED6008M'] ? i18n['KCHVMED6009M'] :
i18n['KCHVMED6008M']);
- $('#guest-show-max-processor
i.fa').toggleClass('fa-plus-circle fa-minus-circle');
- });
- };
-
var checkInvalids = function() {
$.each(template.invalid, function(key, value) {
if (key === 'cdrom' || key === 'vm-image') {
@@ -356,7 +365,7 @@ kimchi.template_edit_main = function() {
kimchi.listNetworks(initInterface);
kimchi.listStoragePools(initStorage);
- initProcessor();
+ kimchi.init_processor_tab(template.cpu_info);
checkInvalids();
};
kimchi.retrieveTemplate(kimchi.selectedTemplate, initTemplate);
@@ -424,7 +433,7 @@ kimchi.template_edit_main = function() {
data['cdrom'] = $('.tab-content
input[name="cdrom"]').val();
}
- if ($("input:checkbox",
"#form-template-processor").prop("checked")) {
+ if ($("input:checkbox",
"#form-edit-processor").prop("checked")) {
//Check if maxCpu field has a value
data['cpu_info'] = {
vcpus: cpu,
diff --git a/ui/pages/template-edit.html.tmpl b/ui/pages/template-edit.html.tmpl
index f1a0eee..5d712d3 100644
--- a/ui/pages/template-edit.html.tmpl
+++ b/ui/pages/template-edit.html.tmpl
@@ -131,7 +131,7 @@
</form>
</div>
<div role="tabpanel" class="tab-pane"
id="processor">
- <form id="form-template-processor">
+ <form id="form-edit-processor">
<div class="form-group">
<div id="guest-processor">
<label for="vcpus">$_("Current CPU
Number")</label>
--
2.7.4