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 | 158 ++++++++++++++++++---------------
ui/pages/template-edit.html.tmpl | 2 +-
2 files changed, 85 insertions(+), 75 deletions(-)
diff --git a/ui/js/src/kimchi.template_edit_main.js
b/ui/js/src/kimchi.template_edit_main.js
index 457246e..36e6911 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;
@@ -639,78 +721,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') {
@@ -738,7 +748,7 @@ kimchi.template_edit_main = function() {
kimchi.listStoragePools(initStorage);
}
- initProcessor();
+ kimchi.init_processor_tab(template.cpu_info);
checkInvalids();
};
kimchi.retrieveTemplate(kimchi.selectedTemplate, initTemplate);
@@ -822,7 +832,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 0ba4c4b..90e06e4 100644
--- a/ui/pages/template-edit.html.tmpl
+++ b/ui/pages/template-edit.html.tmpl
@@ -151,7 +151,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