
From: samhenri <samuel.guimaraes@eldorado.org.br> Added an alert container for error messages in modal windows and updated some wok.message.error calls to point to the right container. Signed-off-by: samhenri <samuel.guimaraes@eldorado.org.br> --- ui/js/src/kimchi.guest_edit_main.js | 75 ++++++++++++++----------- ui/js/src/kimchi.guest_storage_add.main.js | 38 +++++++------ ui/js/src/kimchi.storage_main.js | 29 +++++----- ui/js/src/kimchi.storagepool_add_main.js | 43 +++++++------- ui/js/src/kimchi.storagepool_add_volume_main.js | 27 +++++---- ui/js/src/kimchi.template_add_main.js | 62 ++++++++++---------- ui/pages/guest-storage-add.html.tmpl | 1 + ui/pages/storagepool-add-volume.html.tmpl | 1 + ui/pages/storagepool-add.html.tmpl | 3 +- ui/pages/template-add.html.tmpl | 10 ++-- 10 files changed, 159 insertions(+), 130 deletions(-) diff --git a/ui/js/src/kimchi.guest_edit_main.js b/ui/js/src/kimchi.guest_edit_main.js index b358f59..3f9c3e9 100644 --- a/ui/js/src/kimchi.guest_edit_main.js +++ b/ui/js/src/kimchi.guest_edit_main.js @@ -22,8 +22,8 @@ kimchi.guest_edit_main = function() { var saveButton = $('#guest-edit-button-save'); $('#guest-edit-window a[data-toggle="tab"]').on('show.bs.tab', function(tab) { - tab.target // newly activated tab - tab.relatedTarget // previous active tab + tab.target; // newly activated tab + tab.relatedTarget; // previous active tab var display_list = null; if (kimchi.thisVMState === "running") { display_list = ['form-guest-edit-permission']; @@ -44,7 +44,7 @@ kimchi.guest_edit_main = function() { var submit_map = { 0: generalSubmit, 3: permissionSubmit - }; + }; var currentTab = $('#guest-edit-window li.active a[data-toggle="tab"]').data('id'); var toSubmit = parseInt($('#'+currentTab).index()); var submitFun = submit_map[toSubmit]; @@ -120,8 +120,9 @@ kimchi.guest_edit_main = function() { confirm: i18n['KCHAPI6002M'], cancel: i18n['KCHAPI6003M'] }; - if ($(this).data('type') == "disk") + if ($(this).data('type') === "disk") { settings['content'] = i18n['KCHVMCD6009M']; + } var dev = $(this).data('dev'); wok.confirm(settings, function() { @@ -183,10 +184,10 @@ kimchi.guest_edit_main = function() { $(".action-area", item).toggleClass("hide"); }; var addItem = function(data) { - if (data.id == -1) { - data.id = $('#form-guest-edit-interface > .body').children().size() + if (data.id === -1) { + data.id = $('#form-guest-edit-interface > .body').children().size(); } - if (data.ips == "" || data.ips == null) { + if (data.ips === "" || data.ips === null) { data.ips = i18n["KCHNET6001M"]; } else { data.ips = data.ips; @@ -225,13 +226,13 @@ kimchi.guest_edit_main = function() { $("#edit-mac-" + data.id, item).val(mac); toggleEdit(item, false, data.id); }; - if (item.prop("id") == "") { + if (item.prop("id") === "") { kimchi.createGuestInterface(kimchi.selectedGuest, interface, function(data) { item.prop("id", data.mac); postUpdate(data.mac); }); } else { - if (item.prop('id') == interface.mac) { + if (item.prop('id') === interface.mac) { toggleEdit(item, false, data.id); } else { kimchi.updateGuestInterface(kimchi.selectedGuest, item.prop('id'), @@ -252,7 +253,7 @@ kimchi.guest_edit_main = function() { var networkOptions = ""; kimchi.listNetworks(function(data) { for (var i = 0; i < data.length; i++) { - var isSlected = i == 0 ? " selected" : ""; + var isSlected = i === 0 ? " selected" : ""; networkOptions += "<option" + isSlected + ">" + data[i].name + "</option>"; } kimchi.getGuestInterfaces(kimchi.selectedGuest, function(data) { @@ -296,7 +297,7 @@ kimchi.guest_edit_main = function() { $(this).removeClass("checked"); }); - if (data.checked == true) { + if (data.checked === true) { $(".checked", itemNode).addClass("hide"); } }; @@ -308,8 +309,8 @@ kimchi.guest_edit_main = function() { //set up for PAM var userNodes = {}, groupNodes = {}; - authType = kimchi.capabilities['auth'] - if (authType == 'pam') { + authType = kimchi.capabilities['auth']; + if (authType === 'pam') { $("#form-guest-edit-permission .ldap").hide(); kimchi.retrieveVM(kimchi.selectedGuest, function(vm) { kimchi.getUsers(function(users) { @@ -317,7 +318,7 @@ kimchi.guest_edit_main = function() { var subArray = function(a1, a2) { //a1-a2 for (var i = 0; i < a2.length; i++) { for (var j = 0; j < a1.length; j++) { - if (a2[i] == a1[j]) { + if (a2[i] === a1[j]) { a1.splice(j, 1); break; } @@ -330,7 +331,7 @@ kimchi.guest_edit_main = function() { }); }); }); - } else if (authType == 'ldap') { + } else if (authType === 'ldap') { $("#form-guest-edit-permission .pam").hide(); kimchi.retrieveVM(kimchi.selectedGuest, function(vm) { for (var i = 0; i < vm.users.length; i++) { @@ -391,9 +392,9 @@ kimchi.guest_edit_main = function() { }; var filterNodes = function(key, container) { container.children().each(function() { - $(this).css("display", $("label", this).text().indexOf(key) == -1 ? "none" : ""); + $(this).css("display", $("label", this).text().indexOf(key) === -1 ? "none" : ""); }); - } + }; $("#permission-avail-searchBox").on("keyup", function() { var key = $(this).val(); filterNodes(key, $("#permission-avail-users")); @@ -424,7 +425,7 @@ kimchi.guest_edit_main = function() { filterNodes("", $("#permission-avail-users")); filterNodes("", $("#permission-avail-groups")); }); - } + }; var filterPCINodes = function(group, text, targetName) { text = text.toLowerCase(); @@ -553,12 +554,17 @@ kimchi.guest_edit_main = function() { var setupSnapshot = function() { var currentSnapshot; var setCurrentSnapshot = function(aSnapshot) { - if (!aSnapshot) + if (!aSnapshot) { kimchi.getCurrentSnapshot(kimchi.selectedGuest, function(snapshot) { - if (snapshot && snapshot.name) aSnapshot = snapshot.name; + if (snapshot && snapshot.name) { + aSnapshot = snapshot.name; + } }, null, true); + } if (aSnapshot) { - if (currentSnapshot) $(".fa.fa-check", "#" + currentSnapshot).addClass("hide"); + if (currentSnapshot) { + $(".fa.fa-check", "#" + currentSnapshot).addClass("hide"); + } $(".fa.fa-check", "#" + aSnapshot).removeClass("hide"); currentSnapshot = aSnapshot; } @@ -606,7 +612,7 @@ kimchi.guest_edit_main = function() { listMode: "hide", createMode: "" }, 'task'); - if (kimchi.trackingTasks.indexOf(task.id) == -1) + if (kimchi.trackingTasks.indexOf(task.id) === -1) { kimchi.trackTask(task.id, function(task) { listGeneratingSnapshots(); $("button", "#form-guest-edit-snapshot").prop("disabled", false); @@ -615,6 +621,7 @@ kimchi.guest_edit_main = function() { listGeneratingSnapshots(); $("button", "#form-guest-edit-snapshot").prop("disabled", false); }); + } }; var listGeneratingSnapshots = function() { kimchi.getTasksByFilter('status=running&target_uri=' + encodeURIComponent('^/plugins/kimchi/snapshots/*'), function(tasks) { @@ -622,7 +629,9 @@ kimchi.guest_edit_main = function() { for (var i = 0; i < tasks.length; i++) { addOngoingItem(tasks[i]); } - if (tasks.length == 0) listSnapshots(); + if (tasks.length === 0) { + listSnapshots(); + } }); }; var listSnapshots = function() { @@ -645,7 +654,9 @@ kimchi.guest_edit_main = function() { addOngoingItem(task); }); }); - if (kimchi.thisVMState == "running") $("button", "#form-guest-edit-snapshot").remove(); + if (kimchi.thisVMState === "running") { + $("button", "#form-guest-edit-snapshot").remove(); + } }; var initContent = function(guest) { @@ -693,10 +704,10 @@ kimchi.guest_edit_main = function() { var generalSubmit = function(event) { $(saveButton).prop('disabled', true); var data = $('#form-guest-edit-general').serializeObject(); - if (data['memory'] != undefined) { + if (data['memory'] !== undefined) { data['memory'] = Number(data['memory']); } - if (data['cpus'] != undefined) { + if (data['cpus'] !== undefined) { data['cpus'] = Number(data['cpus']); } @@ -707,15 +718,15 @@ kimchi.guest_edit_main = function() { wok.message.error(err.responseJSON.reason, '#alert-modal-container'); $(saveButton).prop('disabled', false); }); - } + }; var permissionSubmit = function(event) { var content = { users: [], groups: [] }; - authType = kimchi.capabilities['auth'] - if (authType == 'pam') { + authType = kimchi.capabilities['auth']; + if (authType === 'pam') { $("#permission-sel-users").children().each(function() { content.users.push($("label", this).text()); }); @@ -725,7 +736,7 @@ kimchi.guest_edit_main = function() { kimchi.updateVM(kimchi.selectedGuest, content, function() { wok.window.close(); }); - } else if (authType == 'ldap') { + } else if (authType === 'ldap') { $(saveButton).prop('disabled', true); var errors = 0; @@ -743,7 +754,7 @@ kimchi.guest_edit_main = function() { }); } }); - if (errors == 0) { + if (errors === 0) { kimchi.updateVM(kimchi.selectedGuest, content, function() { wok.window.close(); }); @@ -751,5 +762,5 @@ kimchi.guest_edit_main = function() { $(saveButton).prop('disabled', false); } } - } + }; }; diff --git a/ui/js/src/kimchi.guest_storage_add.main.js b/ui/js/src/kimchi.guest_storage_add.main.js index 881ff7c..0afb008 100644 --- a/ui/js/src/kimchi.guest_storage_add.main.js +++ b/ui/js/src/kimchi.guest_storage_add.main.js @@ -40,10 +40,10 @@ kimchi.guest_storage_add_main = function() { var selectStorageVolHTML = ''; typeTextbox.change(function() { - var pathObject = {'cdrom': ".path-section", 'disk': '.volume-section'} + var pathObject = {'cdrom': ".path-section", 'disk': '.volume-section'}; selectType = $(this).val(); $.each(pathObject, function(type, value) { - if(selectType == type){ + if(selectType === type){ $(value).removeClass('hidden'); } else { $(value).addClass('hidden'); @@ -66,7 +66,7 @@ kimchi.guest_storage_add_main = function() { var options = []; if (result && result.length) { $.each(result, function(index, storagePool) { - if ((storagePool.state=="active") && (storagePool.type !== 'kimchi-iso')) { + if ((storagePool.state==="active") && (storagePool.type !== 'kimchi-iso')) { options.push({ label: storagePool.name, value: storagePool.name @@ -90,7 +90,7 @@ kimchi.guest_storage_add_main = function() { if (result.length) { $.each(result, function(index, value) { // Only unused volume can be attached - if (value.used_by.length == 0 && value.isvalid && (value.type != 'file' || validVolType[selectType].test(value.format))) { + if (value.used_by.length === 0 && value.isvalid && (value.type !== 'file' || validVolType[selectType].test(value.format))) { options.push({ label: value.name, value: value.name @@ -111,16 +111,16 @@ kimchi.guest_storage_add_main = function() { } volTextbox.selectpicker(); $('.selectpicker').selectpicker('refresh'); - } + } }, null, false); }); typeTextbox.change(function() { - var pathObject = {'cdrom': ".path-section", 'disk': '.volume-section'} + var pathObject = {'cdrom': ".path-section", 'disk': '.volume-section'}; var selectType = $(this).val(); $.each(pathObject, function(type, value) { - if(selectType == type){ + if(selectType === type){ $(value).removeClass('hidden'); } else { $(value).addClass('hidden'); @@ -143,22 +143,24 @@ kimchi.guest_storage_add_main = function() { typeTextbox.selectpicker(); var validateCDROM = function(settings) { - if (/^((https|http|ftp|ftps|tftp|\/).*)+$/.test(settings['path'])) - return true; + if (/^((https|http|ftp|ftps|tftp|\/).*)+$/.test(settings['path'])){ + return true; + } else { - wok.message.error.code('KCHVMSTOR0001E'); + wok.message.error(i18n['KCHVMSTOR0001E'],'#alert-modal-container2'); return false; } - } + }; var validateDisk = function(settings) { - if (settings['pool'] && settings['vol']) - return true; + if (settings['pool'] && settings['vol']){ + return true; + } else { - wok.message.error.code('KCHVMSTOR0002E'); + wok.message.error(i18n['KCHVMSTOR0002E'],'#alert-modal-container2'); return false; } - } + }; validator = {cdrom: validateCDROM, disk: validateDisk}; var submitForm = function(event) { @@ -175,8 +177,8 @@ kimchi.guest_storage_add_main = function() { $(submitButton).prop('disabled', true); $.each([pathTextbox, poolTextbox, volTextbox], function(i, c) { $(c).prop('disabled', true); - val = $(c).val() - if (val && val != '') { + val = $(c).val(); + if (val && val !== '') { settings[$(c).attr('name')] = $(c).val(); } }); @@ -199,7 +201,7 @@ kimchi.guest_storage_add_main = function() { }, function(result) { var errText = result['reason'] || result['responseJSON']['reason']; - wok.message.error(errText); + wok.message.error(errText, '#alert-modal-container2'); $.each([submitButton, pathTextbox, poolTextbox, volTextbox], function(i, c) { $(c).prop('disabled', false); diff --git a/ui/js/src/kimchi.storage_main.js b/ui/js/src/kimchi.storage_main.js index 1a711ce..1b97307 100644 --- a/ui/js/src/kimchi.storage_main.js +++ b/ui/js/src/kimchi.storage_main.js @@ -28,7 +28,7 @@ kimchi.doListStoragePools = function() { value.icon = 'icon-med'; } else { value.icon = 'icon-low'; - } + } value.capacity = wok.changetoProperUnit(value.capacity,1); value.allocated = wok.changetoProperUnit(value.allocated,1); value.enableExt = value.type==="logical" ? "" : "hide-content"; @@ -36,8 +36,9 @@ kimchi.doListStoragePools = function() { listHtml += wok.substitute(storageHtml, value); } }); - if($('#storageGrid').hasClass('wok-datagrid')) + if($('#storageGrid').hasClass('wok-datagrid')) { $('#storageGrid').dataGrid('destroy'); + } $('#storagepoolsList').html(listHtml); if(wok.tabMode['storage'] === 'admin') { $('.storage-button').attr('style','display'); @@ -55,7 +56,7 @@ kimchi.doListStoragePools = function() { }, function(err) { wok.message.error(err.responseJSON.reason); }); -} +}; kimchi.storageBindClick = function() { @@ -212,7 +213,7 @@ kimchi.storageBindClick = function() { } } }); -} +}; kimchi._generateVolumeHTML = function(volume) { if(volume['type'] === 'kimchi-iso') { @@ -236,11 +237,11 @@ kimchi._generateVolumeHTML = function(volume) { }; kimchi.doListVolumes = function(poolObj) { - var poolName = poolObj.data('name') + var poolName = poolObj.data('name'); var getOngoingVolumes = function() { - var result = {} - var filter = 'status=running&target_uri=' + encodeURIComponent('^/plugins/kimchi/storagepools/' + poolName + '/*') + var result = {}; + var filter = 'status=running&target_uri=' + encodeURIComponent('^/plugins/kimchi/storagepools/' + poolName + '/*'); kimchi.getTasksByFilter(filter, function(tasks) { for(var i = 0; i < tasks.length; i++) { var volumeName = tasks[i].target_uri.split('/').pop(); @@ -272,7 +273,7 @@ kimchi.doListVolumes = function(poolObj) { var ongoingVolumes = []; var ongoingVolumesMap = getOngoingVolumes(); $.each(ongoingVolumesMap, function(volumeName, task) { - ongoingVolumes.push(volumeName) + ongoingVolumes.push(volumeName); var volume = { poolName: poolName, used_by: [], @@ -292,7 +293,7 @@ kimchi.doListVolumes = function(poolObj) { }); $.each(result, function(index, value) { - if (ongoingVolumes.indexOf(value.name) == -1) { + if (ongoingVolumes.indexOf(value.name) === -1) { value.poolname = poolName; listHtml += kimchi._generateVolumeHTML(value); } @@ -314,7 +315,7 @@ kimchi.doListVolumes = function(poolObj) { }, function(err) { wok.message.error(err.responseJSON.reason); }, false); -} +}; kimchi.initLogicalPoolExtend = function() { @@ -367,7 +368,7 @@ kimchi.doListVolumes = function(poolObj) { $('#logicalPoolExtend').on('hidden.bs.modal', function () { $('.host-partition', '#logicalPoolExtend').empty(); - }) + }); $('#logicalPoolExtend').on('show.bs.modal', function() { //$('#logicalPoolExtend2').find('.modal-content').html(); @@ -394,7 +395,7 @@ kimchi.doListVolumes = function(poolObj) { var devicePaths = []; $("input[type='checkbox']:checked", "#logicalPoolExtend").each(function() { devicePaths.push($(this).prop('value')); - }) + }); kimchi.updateStoragePool($("#logicalPoolExtend"), { disks: devicePaths }, function(partitions) { @@ -411,7 +412,7 @@ kimchi.doListVolumes = function(poolObj) { }); -} +}; kimchi.storage_main = function() { if(wok.tabMode['storage'] === 'admin') { @@ -504,4 +505,4 @@ kimchi.changeArrow = function(obj) { } else { $(obj).removeClass('arrow-up').addClass('arrow-down'); } -} +}; diff --git a/ui/js/src/kimchi.storagepool_add_main.js b/ui/js/src/kimchi.storagepool_add_main.js index 39b2cb7..0e9654a 100644 --- a/ui/js/src/kimchi.storagepool_add_main.js +++ b/ui/js/src/kimchi.storagepool_add_main.js @@ -26,10 +26,12 @@ kimchi.storagepool_add_main = function() { // 'pool-doAdd' button if all the visible form // fields are filled, disables it otherwise. $('#form-pool-add').on('input change propertychange', function() { - if (!kimchi.inputsNotBlank()) - $("#pool-doAdd").attr("disabled", true); - else + if (!kimchi.inputsNotBlank()){ + $("#pool-doAdd").attr("disabled", true); + } + else { $("#pool-doAdd").attr("disabled", false); + } }); }; @@ -38,7 +40,7 @@ kimchi.storageFilterSelect = function(id, isUpdate) { var options = $(".option", '#'+id); var filter = function(container, key){ container.children().each(function(){ - $(this).css("display", $(this).text().indexOf(key)==-1 ? "none" : ""); + $(this).css("display", $(this).text().indexOf(key)===-1 ? "none" : ""); }); }; if(!isUpdate){ @@ -63,7 +65,7 @@ kimchi.setupISCSI = function(){ $(".option", "#iSCSITarget").empty(); $('input', "#iSCSITarget").attr("placeholder", i18n['KCHPOOL6006M']); kimchi.getISCSITargets(server, port, function(data){ - if(data.length==0){ + if(data.length===0){ $('input', "#iSCSITarget").attr("placeholder", i18n['KCHPOOL6007M']); }else{ for(var i=0; i<data.length; i++){ @@ -79,14 +81,14 @@ kimchi.setupISCSI = function(){ }, function(data){ $('input', "#iSCSITarget").attr("placeholder", i18n['KCHPOOL6008M']); callback(); - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason,'#alert-modal-container'); }); }; var triggerLoadTarget = function(){ $('input', "#iSCSITarget").val(""); var server = $("#iscsiserverId").val().trim(); var port = $("#iscsiportId").val().trim(); - if(server!="" && !$("#iscsiserverId").hasClass("invalid-field") && !$("#iscsiportId").hasClass("invalid-field")){ + if(server!=="" && !$("#iscsiserverId").hasClass("invalid-field") && !$("#iscsiportId").hasClass("invalid-field")){ $("#iscsiserverId").attr("disabled", true); $("#iscsiportId").attr("disabled", true); loadTargets(server, port, function(){ @@ -127,7 +129,7 @@ kimchi.initStorageAddPage = function() { var listHtml = ''; valid_types = ['part', 'disk', 'mpath']; $.each(data, function(index, value) { - if (valid_types.indexOf(value.type) != -1) { + if (valid_types.indexOf(value.type) !== -1) { listHtml += wok.substitute(deviceHtml, value); } }); @@ -238,10 +240,10 @@ kimchi.initStorageAddPage = function() { $('#poolTypeInputId').change(function() { var poolObject = {'dir': ".path-section", 'netfs': '.nfs-section', 'iscsi': '.iscsi-section', 'scsi': '.scsi-section', - 'logical': '.logical-section'} + 'logical': '.logical-section'}; var selectType = $(this).val(); $.each(poolObject, function(type, value) { - if(selectType == type){ + if(selectType === type){ $(value).removeClass('hidden'); } else { $(value).addClass('hidden'); @@ -275,19 +277,20 @@ kimchi.initStorageAddPage = function() { * already. */ kimchi.inputsNotBlank = function() { - if (!$('#poolId').val()) return false; + if (!$('#poolId').val()) { return false; } var poolType = $("#poolTypeInputId").val(); if (poolType === "dir") { - if (!$('#pathId').val()) return false; + if (!$('#pathId').val()) { return false; } } else if (poolType === "netfs") { - if (!$('#nfspathId').val()) return false; - if (!$('#nfsserverId').val()) return false; + if (!$('#nfspathId').val()) { return false; } + if (!$('#nfsserverId').val()) { return false; } } else if (poolType === "iscsi") { - if (!$('#iscsiserverId').val()) return false; - if (!$('#iscsiTargetId').val()) return false; + if (!$('#iscsiserverId').val()) { return false; } + if (!$('#iscsiTargetId').val()) { return false; } } else if (poolType === "logical") { - if ($("input[name=devices]:checked").length === 0) - return false; + if ($("input[name=devices]:checked").length === 0){ + return false; + } } return true; }; @@ -393,7 +396,7 @@ kimchi.addPool = function(event) { } formData.source = source; } else if (poolType === 'scsi'){ - formData.source = { adapter_name: $('#scsiAdapter').selectMenu('value') }; + formData.source = { adapter_name: $('#scsiAdapter').val() }; } var storagePoolAddingFunc = function() { $('input', '#form-pool-add').attr('disabled','disabled'); @@ -403,7 +406,7 @@ kimchi.addPool = function(event) { kimchi.doListStoragePools(); wok.window.close(); }, function(err) { - wok.message.error(err.responseJSON.reason); + wok.message.error(err.responseJSON.reason,'#alert-modal-container'); $('input', '#form-pool-add').removeAttr('disabled'); $('#pool-loading').hide(); $('#pool-doAdd').show(); diff --git a/ui/js/src/kimchi.storagepool_add_volume_main.js b/ui/js/src/kimchi.storagepool_add_volume_main.js index a1a8306..51fc43f 100644 --- a/ui/js/src/kimchi.storagepool_add_volume_main.js +++ b/ui/js/src/kimchi.storagepool_add_volume_main.js @@ -38,7 +38,7 @@ kimchi.sp_add_volume_main = function() { $('.volume-input').prop('disabled', true); $('.volume-input.' + this.value).prop('disabled', false); type = this.value; - if(type == 'download') { + if(type === 'download') { $(addButton).prop('disabled', !isValidURL()); } else { @@ -104,11 +104,12 @@ kimchi.sp_add_volume_main = function() { kimchi.uploadVolumeToSP(kimchi.selectedSP, blobFile.name, { formData: fd }, function(result) { - if (uploaded < blobFile.size) - setTimeout(doUpload, 500); + if (uploaded < blobFile.size){ + setTimeout(doUpload, 500); + } }, onError); - uploaded += blob.size + uploaded += blob.size; }; // Check file exists and has read permission @@ -116,10 +117,12 @@ kimchi.sp_add_volume_main = function() { var blob = blobFile.slice(0, 20); var reader = new FileReader(); reader.onloadend = function(e) { - if (e.loaded == 0) + if (e.loaded === 0){ wok.message.error.code('KCHAPI6008E'); - else + } + else{ createUploadVol(); + } }; reader.readAsBinaryString(blob); @@ -133,10 +136,12 @@ kimchi.sp_add_volume_main = function() { var blob = blobFile.slice(uploaded, uploaded + chunkSize); var reader = new FileReader(); reader.onloadend = function(e) { - if (e.loaded == 0) + if (e.loaded === 0) { wok.message.error.code('KCHAPI6009E'); - else + } + else { uploadRequest(blob); + } }; reader.readAsBinaryString(blob); @@ -144,14 +149,14 @@ kimchi.sp_add_volume_main = function() { wok.message.error.code('KCHAPI6009E'); return; } - } + }; var trackVolCreation = function(taskid) { var onTaskResponse = function(result) { var taskStatus = result['status']; var taskMsg = result['message']; - if (taskStatus == 'running') { - if (taskMsg != 'ready for upload') { + if (taskStatus === 'running') { + if (taskMsg !== 'ready for upload') { setTimeout(function() { trackVolCreation(taskid); }, 2000); diff --git a/ui/js/src/kimchi.template_add_main.js b/ui/js/src/kimchi.template_add_main.js index 2478eec..fd50251 100644 --- a/ui/js/src/kimchi.template_add_main.js +++ b/ui/js/src/kimchi.template_add_main.js @@ -62,7 +62,7 @@ kimchi.template_add_main = function() { showLocalIsoField(isos); } else { if (isFinished) { - wok.message.warn(i18n['KCHTMPL6001W']); + wok.message.warn(i18n['KCHTMPL6001W'], '#local-iso-warning-container'); } } if (isFinished) { @@ -70,7 +70,7 @@ kimchi.template_add_main = function() { $(button).show(); } }, function(err) { - wok.message.error(err.responseJSON.reason, '.alert-modal-container'); + wok.message.error(err.responseJSON.reason, '#local-iso-error-container'); $(button + '-loading').hide(); $(button).show(); }); @@ -170,7 +170,7 @@ kimchi.template_add_main = function() { $('#iso-search').show(); } }, function(err) { - wok.message.error(err.responseJSON.reason, '.alert-modal-container'); + wok.message.error(err.responseJSON.reason, '#local-iso-error-container'); }); $('#template-add-window .modal-body .template-pager').animate({ height: "689px" @@ -209,7 +209,7 @@ kimchi.template_add_main = function() { $('#iso-search').show(); } }, function(err) { - wok.message.error(err.responseJSON.reason, '.alert-modal-container'); + wok.message.error(err.responseJSON.reason, '#local-iso-error-container'); }); } }); @@ -293,7 +293,7 @@ kimchi.template_add_main = function() { if (checkedLength) { $('#btn-template-local-iso-create').removeAttr('disabled'); var length = $('#list-local-iso [type="checkbox"]').length; - $('#select-all-local-iso').prop('checked', length == checkedLength); + $('#select-all-local-iso').prop('checked', length === checkedLength); $('#btn-template-local-iso-create').removeAttr('disabled'); } else { $('#select-all-local-iso').prop('checked', false); @@ -309,8 +309,7 @@ kimchi.template_add_main = function() { var isoFile = $('#iso-file').val(); $('vm-image-local-text').val(''); if (!kimchi.template_check_path(isoFile)) { - wok.message.error(err.responseJSON.reason, '.alert-modal-container'); - wok.message.error.code('KCHAPI6003E'); + wok.message.error(i18n['KCHAPI6003E'],'#local-iso-error-container'); return; } var data = { @@ -323,12 +322,12 @@ kimchi.template_add_main = function() { $('#iso-remote').attr("disabled", true).css('cursor', 'not-allowed'); var enabledRemoteIso = function() { - if (kimchi.capabilities == undefined) { + if (kimchi.capabilities === undefined) { setTimeout(enabledRemoteIso, 2000); return; } - if (kimchi.capabilities.qemu_stream != true) { + if (kimchi.capabilities.qemu_stream !== true) { return; } @@ -396,13 +395,13 @@ kimchi.template_add_main = function() { } }); $('#list-remote-iso').html(html); - $('#load-remote-iso').hide() + $('#load-remote-iso').hide(); $('#remote-iso-field').show(); $('#iso-url-field').show(); } else { - $('#load-remote-iso').hide() + $('#load-remote-iso').hide(); $('#iso-url-field').show(); - wok.message.warn(i18n['KCHTMPL6001W']); + wok.message.warn(i18n['KCHTMPL6001W'],"#remote-iso-warning-container"); } }; @@ -436,7 +435,7 @@ kimchi.template_add_main = function() { if (checkedLength) { $('#btn-template-remote-iso-create').removeAttr('disabled'); var length = $('#list-remote-iso [type="checkbox"]').length; - $('#select-all-remote-iso').prop('checked', length == checkedLength); + $('#select-all-remote-iso').prop('checked', length === checkedLength); $('#iso-file').val(''); $('vm-image-local-text').val(''); @@ -479,7 +478,7 @@ kimchi.template_add_main = function() { $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 5 - Remote selected isos - } + }; $('#iso-url').on('input propertychange keyup focus cut paste click', function() { $('#select-all-local-iso, #select-all-remote-iso').prop('checked', false); @@ -520,24 +519,25 @@ kimchi.template_add_main = function() { $('#vm-image-local-box-button').attr('disabled', (isValid ? false : true)); }, 0); }); - $('button', $('#vm-image-local-box')).button({ - disabled: true - }).click(function() { + $('input', '#vm-image-local-box').on('input propertychange keyup focus cut paste click', function() { + setTimeout(function() { + var isValid = kimchi.template_check_path($('input', '#vm-image-local-box').val()); + $('input', '#vm-image-local-box').parent().toggleClass('has-error', !isValid); + $('#vm-image-local-box-button').attr('disabled', (isValid ? false : true)); + }, 0); + }); + $('#vm-image-local-box-button').on('click', function(){ $('input', '#vm-image-local-box').prop('disabled', true); - $(this).button('option', { - label: i18n['KCHAPI6008M'], - disabled: true - }); + $('#vm-image-local-box-button').text(i18n['KCHAPI6008M']); + $('#vm-image-local-box-button').prop('disabled', true); addTemplate({ disks: [{ base: $('input', '#vm-image-local-box').val() }] }, function() { $('input', '#vm-image-local-box').prop('disabled', false); - $('button', $('.body', '#vm-image-local-box')).button('option', { - label: i18n['KCHAPI6005M'], - disabled: false - }); + $('#vm-image-local-box-button').text(i18n['KCHAPI6005M']); + $('#vm-image-local-box-button').prop('disabled', false); }); }); @@ -556,13 +556,17 @@ kimchi.template_add_main = function() { //do create var addTemplate = function(data, callback) { kimchi.createTemplate(data, function() { - if (callback) callback(); + if (callback) { + callback(); + } kimchi.doListTemplates(); wok.window.close(); wok.topic('templateCreated').publish(); }, function(err) { - if (callback) callback(); - wok.message.error(err.responseJSON.reason, '.alert-modal-container'); + if (callback) { + callback(); + } + wok.message.error(err.responseJSON.reason, '#alert-modal-container'); }); }; @@ -587,7 +591,7 @@ kimchi.template_add_main = function() { wok.window.close(); } }, function(err) { - wok.message.error(err.responseJSON.reason, '.alert-modal-container'); + wok.message.error(err.responseJSON.reason, '#alert-modal-container'); }); }; if (formData.iso instanceof Array) { diff --git a/ui/pages/guest-storage-add.html.tmpl b/ui/pages/guest-storage-add.html.tmpl index 43cfd48..1137f69 100644 --- a/ui/pages/guest-storage-add.html.tmpl +++ b/ui/pages/guest-storage-add.html.tmpl @@ -28,6 +28,7 @@ <h4 class="modal-title">$_("Add a Storage Device to VM")</h4> </div> <div class="modal-body"> + <span id="alert-modal-container2"></span> <form id="form-guest-storage-add"> <div class="form-group"> <label>$_("Device Type")</label> diff --git a/ui/pages/storagepool-add-volume.html.tmpl b/ui/pages/storagepool-add-volume.html.tmpl index 735b0c8..392785f 100644 --- a/ui/pages/storagepool-add-volume.html.tmpl +++ b/ui/pages/storagepool-add-volume.html.tmpl @@ -27,6 +27,7 @@ <h4 class="modal-title">$_("Add a Volume to Storage Pool")</h4> </div> <div class="modal-body"> + <span id="alert-modal-container"></span> <div class="form-group"> <input type="radio" id="volume-type-download" class="volume-type wok-radio" name="volumeType" value="download" checked="checked" /> <label for="volume-type-download"> $_("Fetch from remote URL")</label> diff --git a/ui/pages/storagepool-add.html.tmpl b/ui/pages/storagepool-add.html.tmpl index 1771e4a..9d8d104 100644 --- a/ui/pages/storagepool-add.html.tmpl +++ b/ui/pages/storagepool-add.html.tmpl @@ -29,6 +29,7 @@ </div> <div class="modal-body"> <form id="form-pool-add"> + <span id="alert-modal-container"></span> <div class="form-group"> <label for="poolId">$_("Storage Pool Name")</label> <input id="poolId" required="required" type="text" class="form-control" name="name"> @@ -38,7 +39,7 @@ </div> <div class="form-group"> <label for="poolId">$_("Storage Pool Type")</label> - <select id="poolTypeInputId" class="selectpicker col-md-12 col-lg-12"></select> + <select id="poolTypeInputId" class="selectpicker col-md-12 col-lg-12"></select> </div> <div class="path-section row"> <div class="form-group"> diff --git a/ui/pages/template-add.html.tmpl b/ui/pages/template-add.html.tmpl index 46df4dc..5fe93b2 100644 --- a/ui/pages/template-add.html.tmpl +++ b/ui/pages/template-add.html.tmpl @@ -31,6 +31,7 @@ <div class="modal-body"> <div class="template-modal-container"> <div> + <span id="alert-modal-container"></span> <h5>$_("Where is the source media for this template? ")</h5> <input type="radio" checked="checked" name="iso-source" id="iso-local" value="iso-local" class="wok-radio"> <label for="iso-local">$_("Local ISO Image")</label> @@ -43,7 +44,6 @@ <div class="template-pager"> <div class="page-list"> <div class="page" id="iso-local-box"> - <span class="alert-modal-container"></span> <!-- 1-1-2 --> <div id="iso-file-field"> <div id="iso-file-box" class="custom-iso-field"> @@ -53,6 +53,8 @@ </div> </div> </div> + <span id="local-iso-warning-container"></span> + <span id="local-iso-error-container"></span> <button class="btn btn-primary" id="iso-search" style="display: none">$_("Search ISOs")</button> <button class="btn btn-primary" id="iso-search-loading" style="display: none"><span class="wok-loading-icon"></span> $_("Please, wait...")</button> <!-- 1-1-1 --> @@ -101,7 +103,6 @@ </div> <div class="page" id="vm-image-local-box"> - <span class="alert-modal-container"></span> <div class="from-group"> <label for="vm-image-local-text">$_("File Path:")</label> <input type="text" class="form-control" id="vm-image-local-text" /> @@ -110,7 +111,6 @@ <!-- 1-2 --> <div class="page" id="iso-remote-box"> - <span class="alert-modal-container"></span> <!-- 1-2-2 --> <div id="iso-url-field" style="display: none;"> <div id="iso-url-box" class="form-group"> @@ -118,12 +118,12 @@ <input type="text" class="form-control" id="iso-url" name="iso-url"> </div> </div> - <!-- 1-2-0 --> <div id="load-remote-iso"> <p><span class="wok-loading-icon"></span> $_("Loading default remote ISOs ...")</p> </div> - + <span id="remote-iso-warning-container"></span> + <span id="remote-iso-error-container"></span> <!-- 1-2-1 --> <div id="remote-iso-field" class="iso-field" style="display: none;"> <div class="row"> -- 1.9.3