[PATCH] [Kimchi 0/9] Kimchi bugfixes

From: samhenri <samuel.guimaraes@eldorado.org.br> This patch-set fixes some issues that were reported on Github and adds some enhancements. Before applying this patch, make sure you have "Media Query v2 and Bug Fixes" for Wok applied in your branch. samhenri (9): Removed theme-default.min.css reference Issue 770: New template is not shown right after creation Issue 772: Template tab and Template edit window - Some problems Issue 773: Snapshot error message showed behind edit window Issue 783: Error message hidden by the modal window Issue 776: Adding filter on Templates screen New i18n strings in PT-BR Issue 777: Network tab not being updated after exclude a network Issue 784: Display a 'loading gif' when waiting for data po/pt_BR.po | 60 ++++- ui/js/src/kimchi.api.js | 38 +-- ui/js/src/kimchi.guest_edit_main.js | 75 +++--- ui/js/src/kimchi.guest_storage_add.main.js | 38 +-- ui/js/src/kimchi.network.js | 7 +- ui/js/src/kimchi.storage_main.js | 34 +-- 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 | 305 +++++++++++++----------- ui/js/src/kimchi.template_edit_main.js | 17 +- ui/js/src/kimchi.template_main.js | 50 ++-- ui/pages/guest-storage-add.html.tmpl | 1 + ui/pages/i18n.json.tmpl | 6 + ui/pages/storagepool-add-volume.html.tmpl | 1 + ui/pages/storagepool-add.html.tmpl | 3 +- ui/pages/tabs/network.html.tmpl | 19 +- ui/pages/tabs/storage.html.tmpl | 14 +- ui/pages/tabs/templates.html.tmpl | 89 ++++--- ui/pages/template-add.html.tmpl | 68 ++---- 19 files changed, 497 insertions(+), 398 deletions(-) -- 1.9.3

From: samhenri <samuel.guimaraes@eldorado.org.br> Signed-off-by: samhenri <samuel.guimaraes@eldorado.org.br> --- ui/pages/tabs/network.html.tmpl | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ui/pages/tabs/network.html.tmpl b/ui/pages/tabs/network.html.tmpl index 722fc11..c6654de 100644 --- a/ui/pages/tabs/network.html.tmpl +++ b/ui/pages/tabs/network.html.tmpl @@ -25,7 +25,6 @@ <!DOCTYPE html> <html> <head> -<link rel="stylesheet" href="plugins/kimchi/css/theme-default.min.css"> <script src="plugins/kimchi/js/kimchi.min.js"></script> </head> <body> @@ -40,7 +39,7 @@ <span class="icon-bar"></span> <span class="icon-bar"></span> </button> - </div> + </div> <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="toolbar"> <ul class="nav navbar-nav navbar-right tools" display="none"> @@ -102,4 +101,4 @@ kimchi.initNetwork(); </script> </body> -</html> +</html> \ No newline at end of file -- 1.9.3

From: samhenri <samuel.guimaraes@eldorado.org.br> Signed-off-by: samhenri <samuel.guimaraes@eldorado.org.br> --- ui/js/src/kimchi.template_main.js | 34 ++++++-------------- ui/pages/tabs/templates.html.tmpl | 66 +++++++++++++++++++++------------------ 2 files changed, 45 insertions(+), 55 deletions(-) diff --git a/ui/js/src/kimchi.template_main.js b/ui/js/src/kimchi.template_main.js index 36112fa..3062856 100644 --- a/ui/js/src/kimchi.template_main.js +++ b/ui/js/src/kimchi.template_main.js @@ -20,33 +20,17 @@ kimchi.doListTemplates = function() { if (result && result.length) { $('#noTemplates').hide(); var listHtml = '<li class="wok-vm-header">' + - '<span class="column-name">Template Name (ID)</span><!--' + - '--><span class="column-type">OS</span><!--' + - '--><span class="column-version">Version</span><!--' + - '--><span class="column-processors">CPUs</span><!--' + - '--><span class="column-memory">Memory</span><!-- ' + + '<span class="column-name">'+i18n['KCHTMPL6004M']+'</span><!--' + + '--><span class="column-type">'+i18n['KCHTMPL6005M']+'</span><!--' + + '--><span class="column-version">'+i18n['KCHTMPL6006M']+'</span><!--' + + '--><span class="column-processors">'+i18n['KCHTMPL6007M']+'</span><!--' + + '--><span class="column-memory">'+i18n['KCHTMPL6008M']+'</span><!-- ' + '--><span class="column-action" style="display:none"> ' + - ' <span class="sr-only">Actions</span><!-- ' + + ' <span class="sr-only">'+i18n['KCHTMPL6009M']+'</span><!-- ' + '--></span> ' + '</li>'; var templateHtml = $('#templateTmpl').html(); $.each(result, function(index, value) { - var isLocal; - if (value.cdrom) { - isLocal = /^\//.test(value['cdrom']); - } else { - for (var i = 0; i < value.disks.length; i++) { - if (value.disks[i].base) { - isLocal = /^\//.test(value.disks[i].base); - break; - } - } - } - if (isLocal) { - value.location = "plugins/kimchi/images/theme-default/icon-local.png"; - } else { - value.location = "plugins/kimchi/images/theme-default/icon-remote.png"; - } listHtml += wok.substitute(templateHtml, value); }); $('#templateList').html(listHtml); @@ -55,10 +39,10 @@ kimchi.doListTemplates = function() { $('#templateList').html(''); $('#noTemplates').show(); } - $('html').removeClass('processing'); + $('.wok-mask').addClass('hidden'); }, function(err) { wok.message.error(err.responseJSON.reason); - $('html').removeClass('processing'); + $('.wok-mask').addClass('hidden'); }); }; @@ -72,7 +56,7 @@ kimchi.templateBindClick = function() { $('.template-clone a').on('click', function(event) { event.preventDefault(); kimchi.selectedTemplate = $(this).data('template'); - $('html').addClass('processing'); + $('.wok-mask').removeClass('hidden'); kimchi.cloneTemplate(kimchi.selectedTemplate, function() { kimchi.doListTemplates(); }, function(err) { diff --git a/ui/pages/tabs/templates.html.tmpl b/ui/pages/tabs/templates.html.tmpl index 1031f52..e5b5720 100644 --- a/ui/pages/tabs/templates.html.tmpl +++ b/ui/pages/tabs/templates.html.tmpl @@ -43,7 +43,7 @@ <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="toolbar"> <ul class="nav navbar-nav navbar-right tools" display="none"> - <li><a id="template-add" class="btn-tool" href="javascript:void(0);"><i class="fa fa-plus-circle"></i><span>Add a Template</span></a></li> + <li><a id="template-add" class="btn-tool" href="javascript:void(0);"><i class="fa fa-plus-circle"></i><span>$_("Add Template")</span></a></li> </ul> </div> </div> @@ -62,41 +62,47 @@ </div> <div id="alert-container"></div> <ul id="templateList" class="wok-vm-list empty-when-logged-off"> - <script id="templateTmpl" type="html/text"> - <li class="wok-vm-body"> - <span class='column-name' title="{name}" val="{name}">{name}</span><!-- - --><span class='column-action pull-right'> - <span class="pull-right"> - <div class="dropdown menu-flat"> - <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="false"><span class="edit-alt"></span>$_("Actions")<span class="caret"></span> - </button> - <ul class="dropdown-menu" role="menu"> - <li role="presentation" nwAct="edit" class='template-edit'><a href="#" data-template='{name}'><i class="fa fa-pencil"></i>$_("Edit")</a></li> - <li role="presentation" nwAct="clone" class='template-clone'><a href="#" data-template='{name}'><i class="fa fa-files-o"></i>$_("Clone")</a></li> - <li role="presentation" nwAct="delete" class='critical template-delete'><a href="#" data-template='{name}'><i class="fa fa-minus-circle"></i>$_("Delete")</a></li> - </ul> - </div> - </span> - </span><!-- - --><span class='column-type distro-icon icon-{os_distro}' val="{os_distro}">{os_distro}</span><!-- - --><span class="item-hidden">$_("OS")</span><!-- - --><span class='column-version' val="{os_version}">{os_version}</span><!-- - --><span class="item-hidden">$_("Version")</span><!-- - --><span class='column-processors' val="{cpus}"><strong>{cpus}</strong> cores</span><!-- - --><span class="item-hidden">$_("CPUs")</span><!-- - --><span class='column-memory' val="{memory}"><strong>{memory}</strong> M</span><!-- - --><span class="item-hidden">$_("Memory")</span> - </li> - - </script> </ul> </div> </div> - - <div id="modalWindow" class="modal fade host-modal templates-modal" tabindex="-1" role="dialog" aria-labelledby="templatesModalLabel" aria-hidden="true"> + <div class="wok-mask hidden"> + <div class="wok-mask-loader-container"> + <div class="wok-mask-loading"> + <div class="wok-mask-loading-icon"></div> + <div class="wok-mask-loading-text">$_("Loading...")</div> + </div> + </div> + </div> + <div id="modalWindow" class="modal fade host-modal templates-modal" data-keyboard="false" data-backdrop="static" tabindex="-1" role="dialog" aria-labelledby="templatesModalLabel" aria-hidden="true"> </div> <script> kimchi.template_main(); </script> + <script id="templateTmpl" type="html/text"> + <li class="wok-vm-body"> + <span class='column-name' title="{name}" val="{name}">{name}</span><!-- + --><span class='column-action pull-right'> + <span class="pull-right"> + <div class="dropdown menu-flat"> + <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown" aria-expanded="false"><span class="edit-alt"></span>$_("Actions")<span class="caret"></span> + </button> + <ul class="dropdown-menu" role="menu"> + <li role="presentation" nwAct="edit" class='template-edit'><a href="#" data-template='{name}'><i class="fa fa-pencil"></i>$_("Edit")</a></li> + <li role="presentation" nwAct="clone" class='template-clone'><a href="#" data-template='{name}'><i class="fa fa-files-o"></i>$_("Clone")</a></li> + <li role="presentation" nwAct="delete" class='critical template-delete'><a href="#" data-template='{name}'><i class="fa fa-minus-circle"></i>$_("Delete")</a></li> + </ul> + </div> + </span> + </span><!-- + --><span class='column-type distro-icon icon-{os_distro}' val="{os_distro}">{os_distro}</span><!-- + --><span class="item-hidden">$_("OS")</span><!-- + --><span class='column-version' val="{os_version}">{os_version}</span><!-- + --><span class="item-hidden">$_("Version")</span><!-- + --><span class='column-processors' val="{cpus}"><strong>{cpus}</strong> cores</span><!-- + --><span class="item-hidden">$_("CPUs")</span><!-- + --><span class='column-memory' val="{memory}"><strong>{memory}</strong> M</span><!-- + --><span class="item-hidden">$_("Memory")</span> + </li> + </script> </body> </html> -- 1.9.3

From: samhenri <samuel.guimaraes@eldorado.org.br> Signed-off-by: samhenri <samuel.guimaraes@eldorado.org.br> --- po/pt_BR.po | 31 ++-- ui/js/src/kimchi.template_add_main.js | 261 +++++++++++++++++---------------- ui/js/src/kimchi.template_edit_main.js | 17 ++- ui/pages/i18n.json.tmpl | 6 + ui/pages/template-add.html.tmpl | 64 +++----- 5 files changed, 196 insertions(+), 183 deletions(-) diff --git a/po/pt_BR.po b/po/pt_BR.po index 193792b..89447e0 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1558,7 +1558,7 @@ msgstr "" "O tipo de dispositivo. Atualmente, \"cdrom\" e \"disk\" são suportados." msgid "Storage Pool" -msgstr "storage pool" +msgstr "Storage Pool" msgid "Storage pool which volume located in" msgstr "Conjunto de armazenamentos no qual o volume está localizado" @@ -1632,6 +1632,9 @@ msgstr "Máquinas Guests" msgid "Templates" msgstr "Modelos" +msgid "Template Name (ID)" +msgstr "Nome do Modelo (ID)" + msgid "Failed to get application configuration" msgstr "Falha ao obter a configuração do aplicativo" @@ -1764,6 +1767,12 @@ msgstr "Chave de GPG" msgid "Add" msgstr "Incluir" +msgid "Add Storage" +msgstr "Incluir Storage" + +msgid "Add Interface" +msgstr "Incluir Interface" + msgid "Remove" msgstr "Remover" @@ -2275,14 +2284,8 @@ msgstr "Procurar ISOs" msgid "The following ISOs are available:" msgstr "Os ISOs a seguir estão disponíveis:" -msgid "OS: " -msgstr "S.O.: " - -msgid "Version: " -msgstr "Versão: " - -msgid "Size: " -msgstr "Tamanho: " +msgid "Size" +msgstr "Tamanho" msgid "Search more ISOs" msgstr "Procurar mais ISOs" @@ -2299,8 +2302,14 @@ msgstr "Caminho do arquivo: " msgid "Loading default remote ISOs ..." msgstr "Carregando ISOs remotos padrão..." -msgid "Arch: " -msgstr "Arq.: " +msgid "Provide a URL for a specific ISO image:" +msgstr "Forneça uma URL para uma imagem ISO específica:" + +msgid "Provide a File Path for a specific ISO image:" +msgstr "Forneça o caminho do arquivo para uma imagem ISO específica:" + +msgid "Arch" +msgstr "Arq. " msgid "I want to use a custom URL" msgstr "Eu desejo usar uma URL customizada" diff --git a/ui/js/src/kimchi.template_add_main.js b/ui/js/src/kimchi.template_add_main.js index 0b36479..2478eec 100644 --- a/ui/js/src/kimchi.template_add_main.js +++ b/ui/js/src/kimchi.template_add_main.js @@ -16,29 +16,34 @@ * limitations under the License. */ kimchi.switchPage = function(fromPageId, toPageId, direction) { + $('.tab-content').css('overflow', 'hidden'); direction = direction || 'left'; var toLeftBegin; var fromLeftEnd; - if('left' === direction) { + if ('left' === direction) { toLeftBegin = '100%'; fromLeftEnd = '-100%'; - } else if('right' === direction) { + } else if ('right' === direction) { toLeftBegin = '-100%'; fromLeftEnd = '100%'; } - var formPage = $('#'+fromPageId); - var toPage = $('#'+toPageId); + var formPage = $('#' + fromPageId); + var toPage = $('#' + toPageId); toPage.css({ left: toLeftBegin }); formPage.animate({ left: fromLeftEnd, opacity: 0.1 - }, 400); + }, 400, function() { + $('.tab-content').css('overflow', 'visible'); + }); toPage.animate({ left: '0', opacity: 1 - }, 400); + }, 400, function() { + $('.tab-content').css('overflow', 'visible'); + }); }; kimchi.template_add_main = function() { @@ -49,7 +54,7 @@ kimchi.template_add_main = function() { var deepScan = function(button) { kimchi.deepScanHandler = kimchi.stepListDeepScanIsos(function(isos, isFinished) { if (isos && isos.length) { - if(button === '#iso-search') { + if (button === '#iso-search') { $(button + '-loading').hide(); button = '#iso-more'; $(button + '-loading').show(); @@ -65,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, '.alert-modal-container'); $(button + '-loading').hide(); $(button).show(); }); @@ -87,11 +92,11 @@ kimchi.template_add_main = function() { $('#iso-file').val(''); // 1 - Folder path text $('vm-image-local-text').val(''); // 3 - File path text $('#iso-url').val(''); // 4 - Remote folder path text - $('#btn-template-file-create').attr('disabled', 'disabled').css('display','inline-block'); // 1 - Folder path - $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display','none'); // 2 - Selected ISOs - $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display','none'); // 3 - File path - $('#btn-template-url-create').attr('disabled', 'disabled').css('display','none'); // 4 - Remote folder path - $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display','none'); // 5 - Remote selected isos + $('#btn-template-file-create').attr('disabled', 'disabled').css('display', 'inline-block'); // 1 - Folder path + $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 2 - Selected ISOs + $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display', 'none'); // 3 - File path + $('#btn-template-url-create').attr('disabled', 'disabled').css('display', 'none'); // 4 - Remote folder path + $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 5 - Remote selected isos $('#select-all-local-iso, #select-all-remote-iso').prop('checked', false); // False to all select-all checkboxes $('#list-local-iso [type="checkbox"], #list-remote-iso [type="checkbox"]').prop('checked', false); // False to all list checkboxes @@ -119,16 +124,16 @@ kimchi.template_add_main = function() { //$('#iso-file-check').prop('checked', false); $('#iso-file').val(''); $('vm-image-local-text').val(''); - $('#iso-url').val(''); - $('#btn-template-file-create').attr('disabled', 'disabled').css('display','inline-block'); + $('#iso-url').val(''); + $('#btn-template-file-create').attr('disabled', 'disabled').css('display', 'inline-block'); - $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display','none'); // 2 - Selected ISOs + $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 2 - Selected ISOs - $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display','none'); // 3 - File path + $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display', 'none'); // 3 - File path - $('#btn-template-url-create').attr('disabled', 'disabled').css('display','none'); // 4 - Remote folder path + $('#btn-template-url-create').attr('disabled', 'disabled').css('display', 'none'); // 4 - Remote folder path - $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display','none'); // 5 - Remote selected isos + $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 5 - Remote selected isos $('#select-all-local-iso, #select-all-remote-iso').prop('checked', false); // False to all select-all checkboxes @@ -136,23 +141,20 @@ kimchi.template_add_main = function() { }; - $('#iso-file').on('input propertychange', function() { + $('#iso-file').on('input propertychange keyup focus cut paste click', function() { + $('#btn-template-file-create').css('display', 'inline-block'); // 1 - Folder path + $('#select-all-local-iso, #select-all-remote-iso').prop('checked', false); + $('#list-local-iso [type="checkbox"], #list-remote-iso [type="checkbox"]').prop('checked', false); + setTimeout(function() { + var isValid = kimchi.template_check_path($('input#iso-file').val()); + $('input#iso-file').parent().toggleClass('has-error', !isValid); + $('#btn-template-file-create').attr('disabled', (isValid ? false : true)); + }, 0); if ($('#iso-file').val()) { - - $('#btn-template-file-create').removeAttr('disabled').css('display','inline-block'); // 1 - Folder path - - $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display','none'); // 2 - Selected ISOs - - $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display','none'); // 3 - File path - - $('#btn-template-url-create').attr('disabled', 'disabled').css('display','none'); // 4 - Remote folder path - - $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display','none'); // 5 - Remote selected isos - - $('#select-all-local-iso, #select-all-remote-iso').prop('checked', false); // False to all select-all checkboxes - - $('#list-local-iso [type="checkbox"], #list-remote-iso [type="checkbox"]').prop('checked', false); // False to all list checkboxes - + $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 2 - Selected ISOs + $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display', 'none'); // 3 - File path + $('#btn-template-url-create').attr('disabled', 'disabled').css('display', 'none'); // 4 - Remote folder path + $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 5 - Remote selected isos } else { $('#btn-template-file-create').attr('disabled', 'disabled'); } @@ -168,37 +170,36 @@ 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, '.alert-modal-container'); }); $('#template-add-window .modal-body .template-pager').animate({ - height: "689px" - },400); + height: "689px" + }, 400); // 1-1 local iso $('#iso-local').change(function() { - if(this.checked){ - if(currentPage === 'vm-image-local-box') { - kimchi.switchPage(currentPage, 'iso-local-box','right'); - } else if(currentPage === 'iso-remote-box') { - kimchi.switchPage(currentPage, 'iso-local-box','right'); + if (this.checked) { + if (currentPage === 'vm-image-local-box') { + kimchi.switchPage(currentPage, 'iso-local-box', 'right'); + } else if (currentPage === 'iso-remote-box') { + kimchi.switchPage(currentPage, 'iso-local-box', 'right'); } currentPage = 'iso-local-box'; - $('#template-add-window .modal-body .template-pager').animate({ + $('#template-add-window .modal-body .template-pager').animate({ height: "689px" - },400); + }, 400); initLocalIsoField(); initIsoFileField(); - $('#btn-template-file-create').attr('disabled', 'disabled').css('display','inline-block'); // 1 - Folder path + $('#btn-template-file-create').attr('disabled', 'disabled').css('display', 'inline-block'); // 1 - Folder path - $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display','none'); // 2 - Selected ISOs + $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 2 - Selected ISOs - $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display','none'); // 3 - File path + $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display', 'none'); // 3 - File path - $('#btn-template-url-create').attr('disabled', 'disabled').css('display','none'); // 4 - Remote folder path + $('#btn-template-url-create').attr('disabled', 'disabled').css('display', 'none'); // 4 - Remote folder path - $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display','none'); // 5 - Remote selected isos - + $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 5 - Remote selected isos kimchi.listIsos(function(isos) { if (isos && isos.length) { @@ -208,14 +209,14 @@ 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, '.alert-modal-container'); }); } }); $('#iso-search').click(function() { var settings = { - content : i18n['KCHTMPL6002M'] + content: i18n['KCHTMPL6002M'] }; wok.confirm(settings, function() { $('#iso-search').hide(); @@ -226,7 +227,7 @@ kimchi.template_add_main = function() { $('#iso-more').click(function() { var settings = { - content : i18n['KCHTMPL6002M'] + content: i18n['KCHTMPL6002M'] }; wok.confirm(settings, function() { $('#iso-more').hide(); @@ -255,17 +256,18 @@ kimchi.template_add_main = function() { $('#list-local-iso [type="checkbox"]').prop('checked', $(this).prop('checked')); if ($(this).prop('checked')) { $('#iso-file').val(''); + $('#iso-file').parent().removeClass('has-error'); $('vm-image-local-text').val(''); - $('#btn-template-file-create').attr('disabled', 'disabled').css('display','none'); // 1 - Folder path + $('#btn-template-file-create').attr('disabled', 'disabled').css('display', 'none'); // 1 - Folder path - $('#btn-template-local-iso-create').removeAttr('disabled').css('display','inline-block'); // 2 - Selected ISOs + $('#btn-template-local-iso-create').removeAttr('disabled').css('display', 'inline-block'); // 2 - Selected ISOs - $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display','none'); // 3 - File path + $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display', 'none'); // 3 - File path - $('#btn-template-url-create').attr('disabled', 'disabled').css('display','none'); // 4 - Remote folder path + $('#btn-template-url-create').attr('disabled', 'disabled').css('display', 'none'); // 4 - Remote folder path - $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display','none'); // 5 - Remote selected isos + $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 5 - Remote selected isos } else { $('#btn-template-local-iso-create').attr('disabled', 'disabled'); @@ -273,20 +275,21 @@ kimchi.template_add_main = function() { }); $('#list-local-iso').on('click', '[type="checkbox"]', function() { + $('#iso-file').parent().removeClass('has-error'); var checkedLength = $('#list-local-iso [type="checkbox"]:checked').length; $('#iso-file').val(''); $('vm-image-local-text').val(''); $('#iso-url').val(''); - $('#btn-template-file-create').attr('disabled', 'disabled').css('display','none'); // 1 - Folder path + $('#btn-template-file-create').attr('disabled', 'disabled').css('display', 'none'); // 1 - Folder path - $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display','inline-block'); // 2 - Selected ISOs + $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display', 'inline-block'); // 2 - Selected ISOs - $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display','none'); // 3 - File path + $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display', 'none'); // 3 - File path - $('#btn-template-url-create').attr('disabled', 'disabled').css('display','none'); // 4 - Remote folder path + $('#btn-template-url-create').attr('disabled', 'disabled').css('display', 'none'); // 4 - Remote folder path - $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display','none'); // 5 - Remote selected isos + $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 5 - Remote selected isos if (checkedLength) { $('#btn-template-local-iso-create').removeAttr('disabled'); var length = $('#list-local-iso [type="checkbox"]').length; @@ -306,11 +309,12 @@ 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'); return; } var data = { - "cdrom" : isoFile + "cdrom": isoFile }; addTemplate(data); }); @@ -331,21 +335,20 @@ kimchi.template_add_main = function() { $('#iso-remote').attr("disabled", false).css('cursor', 'pointer'); $('#iso-remote').change(function() { if (this.checked) { - if(currentPage === 'iso-local-box') { // slide twice - kimchi.switchPage(currentPage, 'iso-remote-box','left'); - } else if(currentPage === 'vm-image-local-box') { // slide once - kimchi.switchPage(currentPage, 'iso-remote-box','left'); + if (currentPage === 'iso-local-box') { // slide twice + kimchi.switchPage(currentPage, 'iso-remote-box', 'left'); + } else if (currentPage === 'vm-image-local-box') { // slide once + kimchi.switchPage(currentPage, 'iso-remote-box', 'left'); } currentPage = 'iso-remote-box'; $('#template-add-window .modal-body .template-pager').animate({ height: "635px" - },400); + }, 400); initRemoteIsoField(); initIsoUrlField(); kimchi.listDistros(function(isos) { showRemoteIsoField(isos); - }, function() { - }); + }, function() {}); } }); }; @@ -363,15 +366,15 @@ kimchi.template_add_main = function() { $('vm-image-local-text').val(''); $('#iso-url').val(''); - $('#btn-template-file-create').attr('disabled', 'disabled').css('display','none'); // 1 - Folder path + $('#btn-template-file-create').attr('disabled', 'disabled').css('display', 'none'); // 1 - Folder path - $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display','none'); // 2 - Selected ISOs + $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 2 - Selected ISOs - $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display','none'); // 3 - File path + $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display', 'none'); // 3 - File path - $('#btn-template-url-create').attr('disabled', 'disabled').css('display','inline-block'); // 4 - Remote folder path + $('#btn-template-url-create').attr('disabled', 'disabled').css('display', 'inline-block'); // 4 - Remote folder path - $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display','none'); // 5 - Remote selected isos + $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 5 - Remote selected isos $('#select-all-local-iso, #select-all-remote-iso').prop('checked', false); // False to all select-all checkboxes @@ -409,17 +412,18 @@ kimchi.template_add_main = function() { $('#iso-file').val(''); $('vm-image-local-text').val(''); - $('#iso-url').val(''); + $('#iso-url').val(''); + $('#iso-url').parent().removeClass('has-error'); - $('#btn-template-file-create').attr('disabled', 'disabled').css('display','none'); // 1 - Folder path + $('#btn-template-file-create').attr('disabled', 'disabled').css('display', 'none'); // 1 - Folder path - $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display','none'); // 2 - Selected ISOs + $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 2 - Selected ISOs - $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display','none'); // 3 - File path + $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display', 'none'); // 3 - File path - $('#btn-template-url-create').attr('disabled', 'disabled').css('display','none'); // 4 - Remote folder path + $('#btn-template-url-create').attr('disabled', 'disabled').css('display', 'none'); // 4 - Remote folder path - $('#btn-template-remote-iso-create').removeAttr('disabled').css('display','inline-block'); // 5 - Remote selected isos + $('#btn-template-remote-iso-create').removeAttr('disabled').css('display', 'inline-block'); // 5 - Remote selected isos } else { $('#btn-template-remote-iso-create').attr('disabled', 'disabled'); @@ -427,6 +431,7 @@ kimchi.template_add_main = function() { }); $('#list-remote-iso').on('click', '[type="checkbox"]', function() { + $('#iso-url').parent().removeClass('has-error'); var checkedLength = $('#list-remote-iso [type="checkbox"]:checked').length; if (checkedLength) { $('#btn-template-remote-iso-create').removeAttr('disabled'); @@ -437,15 +442,15 @@ kimchi.template_add_main = function() { $('vm-image-local-text').val(''); $('#iso-url').val(''); - $('#btn-template-file-create').attr('disabled', 'disabled').css('display','none'); // 1 - Folder path + $('#btn-template-file-create').attr('disabled', 'disabled').css('display', 'none'); // 1 - Folder path - $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display','none'); // 2 - Selected ISOs + $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 2 - Selected ISOs - $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display','none'); // 3 - File path + $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display', 'none'); // 3 - File path - $('#btn-template-url-create').attr('disabled', 'disabled').css('display','none'); // 4 - Remote folder path + $('#btn-template-url-create').attr('disabled', 'disabled').css('display', 'none'); // 4 - Remote folder path - $('#btn-template-remote-iso-create').removeAttr('disabled').css('display','inline-block'); // 5 - Remote selected isos + $('#btn-template-remote-iso-create').removeAttr('disabled').css('display', 'inline-block'); // 5 - Remote selected isos } else { $('#select-all-remote-iso').prop('checked', false); @@ -464,62 +469,70 @@ kimchi.template_add_main = function() { $('vm-image-local-text').val(''); $('#iso-url').val(''); - $('#btn-template-file-create').attr('disabled', 'disabled').css('display','none'); // 1 - Folder path + $('#btn-template-file-create').attr('disabled', 'disabled').css('display', 'none'); // 1 - Folder path - $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display','none'); // 2 - Selected ISOs + $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 2 - Selected ISOs - $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display','none'); // 3 - File path + $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display', 'none'); // 3 - File path - $('#btn-template-url-create').attr('disabled','disabled').css('display','inline-block'); // 4 - Remote folder path + $('#btn-template-url-create').attr('disabled', 'disabled').css('display', 'inline-block'); // 4 - Remote folder path - $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display','none'); // 5 - Remote selected isos + $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 5 - Remote selected isos } - $('#iso-url').on('input propertychange', function() { - if ($('#iso-url').val()) { - $('#btn-template-url-create').removeAttr('disabled'); - } else { - $('#btn-template-url-create').attr('disabled', 'disabled'); - } + $('#iso-url').on('input propertychange keyup focus cut paste click', function() { + $('#select-all-local-iso, #select-all-remote-iso').prop('checked', false); + $('#list-local-iso [type="checkbox"], #list-remote-iso [type="checkbox"]').prop('checked', false); + $('#btn-template-url-create').attr('disabled', 'disabled').css('display', 'inline-block'); + $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display', 'none'); + setTimeout(function() { + var isValid = kimchi.template_check_url($('input#iso-url').val()); + $('input#iso-url').parent().toggleClass('has-error', !isValid); + $('#btn-template-url-create').attr('disabled', (isValid ? false : true)); + }, 0); }); - $('#vm-image-local').change(function(){ - if(this.checked) { - if(currentPage === 'iso-local-box') { - kimchi.switchPage(currentPage, 'vm-image-local-box','left'); - } else if(currentPage === 'iso-remote-box') { - kimchi.switchPage(currentPage, 'vm-image-local-box','right'); + $('#vm-image-local').change(function() { + if (this.checked) { + if (currentPage === 'iso-local-box') { + kimchi.switchPage(currentPage, 'vm-image-local-box', 'left'); + } else if (currentPage === 'iso-remote-box') { + kimchi.switchPage(currentPage, 'vm-image-local-box', 'right'); } currentPage = 'vm-image-local-box'; $('#template-add-window .modal-body .template-pager').animate({ height: "100px" - },400); + }, 400); - $('#btn-template-file-create').attr('disabled', 'disabled').css('display','none'); // 1 - Folder path - $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display','none'); // 2 - Selected ISOs - $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display','inline-block'); // 3 - File path - $('#btn-template-url-create').attr('disabled', 'disabled').css('display','none'); // 4 - Remote folder path - $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display','none'); // 5 - Remote selected isos + $('#btn-template-file-create').attr('disabled', 'disabled').css('display', 'none'); // 1 - Folder path + $('#btn-template-local-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 2 - Selected ISOs + $('#vm-image-local-box-button').attr('disabled', 'disabled').css('display', 'inline-block'); // 3 - File path + $('#btn-template-url-create').attr('disabled', 'disabled').css('display', 'none'); // 4 - Remote folder path + $('#btn-template-remote-iso-create').attr('disabled', 'disabled').css('display', 'none'); // 5 - Remote selected isos } }); - $('input', '#vm-image-local-box').on('keyup cut paste', function(){ - setTimeout(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').toggleClass('invalid-field', !isValid); + $('input', '#vm-image-local-box').parent().toggleClass('has-error', !isValid); $('#vm-image-local-box-button').attr('disabled', (isValid ? false : true)); }, 0); }); $('button', $('#vm-image-local-box')).button({ disabled: true - }).click(function(){ + }).click(function() { $('input', '#vm-image-local-box').prop('disabled', true); $(this).button('option', { label: i18n['KCHAPI6008M'], disabled: true }); - addTemplate({disks:[{base:$('input', '#vm-image-local-box').val()}]}, function(){ + 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'], @@ -535,7 +548,7 @@ kimchi.template_add_main = function() { return; } var data = { - "cdrom" : isoUrl + "cdrom": isoUrl }; addTemplate(data); }); @@ -543,13 +556,13 @@ 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'); }); }; @@ -560,9 +573,9 @@ kimchi.template_add_main = function() { var successNum = 0; var addTemplate = function(isoInfo) { var data = { - "os_distro" : isoInfo.os_distro, - "os_version" : isoInfo.os_version, - "cdrom" : isoInfo.path + "os_distro": isoInfo.os_distro, + "os_version": isoInfo.os_version, + "cdrom": isoInfo.path }; kimchi.createTemplate(data, function() { successNum++; @@ -574,7 +587,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/js/src/kimchi.template_edit_main.js b/ui/js/src/kimchi.template_edit_main.js index 5791ea0..ce60af6 100644 --- a/ui/js/src/kimchi.template_edit_main.js +++ b/ui/js/src/kimchi.template_edit_main.js @@ -21,12 +21,18 @@ kimchi.template_edit_main = function() { var origNetworks; var templateDiskSize; $('#template-name', templateEditMain).val(kimchi.selectedTemplate); - $('#edit-template-tabs a[data-toggle="tab"]').on('shown.bs.tab', function (e) { + $('#edit-template-tabs a[data-toggle="tab"]').on('shown.bs.tab', function (e) { + $('.tab-content').css('overflow','hidden'); var target = $(this).attr('href'); - - $(target).css('left','-'+$(window).width()+'px'); + $(target).css('left','-'+$(window).width()+'px'); var left = $(target).offset().left; - $(target).css({left:left}).animate({"left":"0px"}, "10"); + $(target).css({ + left: left + }).animate({ + "left": "0px" + },400, function() { + $('.tab-content').css('overflow','visible'); + }); }); var initTemplate = function(template) { @@ -65,6 +71,7 @@ kimchi.template_edit_main = function() { return false; } enableSpice(); + $('#template-edit-graphics').selectpicker(); var initStorage = function(result) { // Gather storagepools data @@ -187,7 +194,7 @@ kimchi.template_edit_main = function() { storageDiskFormat : 'qcow2', storageIndex : storageID } - addStorageItem(storageNodeData); + addStorageItem(storageNodeData); }); }; diff --git a/ui/pages/i18n.json.tmpl b/ui/pages/i18n.json.tmpl index d356437..eead402 100644 --- a/ui/pages/i18n.json.tmpl +++ b/ui/pages/i18n.json.tmpl @@ -49,6 +49,12 @@ "KCHTMPL6002M": "$_("This may take a long time. Do you want to continue?")", "KCHTMPL6003M": "$_("This will permanently delete the template. Would you like to continue?")", + "KCHTMPL6004M": "$_("Template Name (ID)")", + "KCHTMPL6005M": "$_("OS")", + "KCHTMPL6006M": "$_("Version")", + "KCHTMPL6007M": "$_("CPUs")", + "KCHTMPL6008M": "$_("Memory")", + "KCHTMPL6009M": "$_("Actions")", "KCHVM6001M": "$_("This will delete the virtual machine and its virtual disks. This operation cannot be undone. Would you like to continue?")", diff --git a/ui/pages/template-add.html.tmpl b/ui/pages/template-add.html.tmpl index ad4ada6..46df4dc 100644 --- a/ui/pages/template-add.html.tmpl +++ b/ui/pages/template-add.html.tmpl @@ -28,30 +28,27 @@ <div class="modal-header"> <h4 class="modal-title">$_("Add Template")</h4> </div> - <div class="modal-body"> - <span id="alert-modal-container"></span> + <div class="modal-body"> <div class="template-modal-container"> <div> - <h5>$_("Where is the source media for this template? ")</h5> - <label class="radio-inline"> - <input type="radio" checked="checked" name="iso-source" id="iso-local" value="iso-local"> $_("Local ISO Image") - </label> - <label class="radio-inline"> - <input type="radio" name="iso-source" id="vm-image-local" value="vm-image-local"> $_("Local Image File") - </label> - <label class="radio-inline"> - <input type="radio" name="iso-source" id="iso-remote" value="iso-remote"> $_("Remote ISO Image") - </label> + <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> + <input type="radio" name="iso-source" id="vm-image-local" value="vm-image-local" class="wok-radio"> + <label for="vm-image-local">$_("Local Image File")</label> + <input type="radio" name="iso-source" id="iso-remote" value="iso-remote" class="wok-radio"> + <label for="iso-remote">$_("Remote ISO Image")</label> </div> </div> <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"> <div class="form-group"> - <label for="iso-file">Provide a File Path for a specific ISO image:</label> + <label for="iso-file">$_("Provide a File Path for a specific ISO image:")</label> <input type="text" class="form-control" id="iso-file" name="iso-file"> </div> </div> @@ -84,11 +81,11 @@ </h3> <dl class="iso-info"> <dt>{os_distro}</dt> - <dd>$_("OS: ")</dd> + <dd>$_("OS")</dd> <dt>{os_version}</dt> - <dd>$_("Version: ")</dd> + <dd>$_("Version")</dd> <dt>{capacity}</dt> - <dd>$_("Size: ")</dd> + <dd>$_("Size")</dd> </dl> </span> </span> @@ -104,6 +101,7 @@ </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" /> @@ -112,11 +110,11 @@ <!-- 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-field" style="display: none;"> <div id="iso-url-box" class="form-group"> - <label for="iso-url">Provide a URL for a specific ISO image:</label> + <label for="iso-url">$_("Provide a URL for a specific ISO image:")</label> <input type="text" class="form-control" id="iso-url" name="iso-url"> </div> </div> @@ -152,48 +150,28 @@ </h3> <dl class="iso-info"> <dt>{os_distro}</dt> - <dd>$_("OS: ")</dd> + <dd>$_("OS")</dd> <dt>{os_version}</dt> - <dd>$_("Version: ")</dd> + <dd>$_("Version")</dd> <dt>{os_arch}</dt> - <dd>$_("Arch: ")</dd> + <dd>$_("Arch")</dd> </dl> </span> </span> </label> </li> - </script> + </script> </div> </div> </div> </div> </div> <div class="modal-footer"> - - <!-- Template from local file path --> - - <!-- TODO: Use only one button and direct action based on current form field and "page" --> - <button class="btn btn-default" id="btn-template-file-create" disabled="disabled">$_("Create")</button> - - <!-- Template from selected local isos --> - - <!-- Old: $_("Create Templates from Selected ISO") --> <button class="btn btn-default" id="btn-template-local-iso-create" disabled="disabled">$_("Create")</button> - - <!-- Template from local file path --> - <button id="vm-image-local-box-button" class="btn btn-default ui-button-primary">$_("Create")</button> - - <!-- Template from URL Iso --> - <button class="btn btn-default" id="btn-template-url-create" disabled="disabled">$_("Create")</button> - - <!-- Template from selected remote isos --> - - <!-- Old: $_("Create Templates from Selected ISO") --> <button class="btn btn-default" id="btn-template-remote-iso-create" disabled="disabled">$_("Create")</button> - <button class="btn btn-default" data-dismiss="modal" type="button">$_("Cancel")</button> </div> </div> -- 1.9.3

From: samhenri <samuel.guimaraes@eldorado.org.br> Updated wok.message.error instances in kimchi.api.js to show some error messages inside modal windows. If the container provided is not found in the DOM, wok.message.js will display the error message within the default container. Signed-off-by: samhenri <samuel.guimaraes@eldorado.org.br> --- ui/js/src/kimchi.api.js | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/ui/js/src/kimchi.api.js b/ui/js/src/kimchi.api.js index cb6aaab..40f9f4f 100644 --- a/ui/js/src/kimchi.api.js +++ b/ui/js/src/kimchi.api.js @@ -523,8 +523,9 @@ var kimchi = { }; kimchi.getTask(taskID, onTaskResponse, err); - if(kimchi.trackingTasks.indexOf(taskID) < 0) + if(kimchi.trackingTasks.indexOf(taskID) < 0) { kimchi.trackingTasks.push(taskID); + } }, deleteStoragePool : function(poolName, suc, err) { @@ -539,7 +540,7 @@ var kimchi = { }, changePoolState : function(poolName, state, suc, err) { - if (state === 'activate' || state === 'deactivate') + if (state === 'activate' || state === 'deactivate') { $.ajax({ url : 'plugins/kimchi/storagepools/' + encodeURIComponent(poolName) + '/' + state, type : 'POST', @@ -548,6 +549,7 @@ var kimchi = { success : suc, error : err }); + } }, listNetworks : function(suc, err) { @@ -780,7 +782,7 @@ var kimchi = { dataType : 'json', success : suc, error : err || function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason,'#alert-modal-container'); } }); }, @@ -794,7 +796,7 @@ var kimchi = { data : JSON.stringify(interface), success : suc, error : err || function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason,'#alert-modal-container'); } }); }, @@ -807,7 +809,7 @@ var kimchi = { dataType : 'json', success : suc, error : err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason,'#alert-modal-container'); } }); }, @@ -821,7 +823,7 @@ var kimchi = { dataType : 'json', success: suc, error: err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason,'#alert-modal-container'); } }); }, @@ -836,7 +838,7 @@ var kimchi = { async : false, success : suc && suc(data), error : err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason,'#alert-modal-container'); } }); }, @@ -850,7 +852,7 @@ var kimchi = { resend : true, success : suc, error : err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason,'#alert-modal-container'); } }); }, @@ -864,7 +866,7 @@ var kimchi = { resend : true, success : suc, error : err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason,'#alert-modal-container'); } }); }, @@ -878,7 +880,7 @@ var kimchi = { resend : true, success : suc, error : err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason,'#alert-modal-container'); } }); }, @@ -892,7 +894,7 @@ var kimchi = { resend : true, success : suc, error : err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason,'#alert-modal-container'); } }); }, @@ -906,7 +908,7 @@ var kimchi = { resend : true, success : suc, error : err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason,'#alert-modal-container'); } }); }, @@ -922,7 +924,7 @@ var kimchi = { resend : true, success : suc, error : err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason,'#alert-modal-container'); } }); }, @@ -1067,7 +1069,7 @@ var kimchi = { resend : true, success : suc, error : err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason, '#alert-modal-container'); } }); }, @@ -1082,7 +1084,7 @@ var kimchi = { resend : true, success : suc, error : err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason, '#alert-modal-container'); } }); }, @@ -1095,7 +1097,7 @@ var kimchi = { dataType : 'json', success : suc, error : err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason, '#alert-modal-container'); } }); }, @@ -1108,7 +1110,7 @@ var kimchi = { dataType : 'json', success : suc, error : err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason, '#alert-modal-container'); } }); }, @@ -1121,7 +1123,7 @@ var kimchi = { dataType : 'json', success : suc, error : err ? err : function(data) { - wok.message.error(data.responseJSON.reason); + wok.message.error(data.responseJSON.reason, '#alert-modal-container'); } }); }, -- 1.9.3

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

From: samhenri <samuel.guimaraes@eldorado.org.br> Signed-off-by: Andre Teodoro <andreteodoro.work@gmail.com> --- ui/js/src/kimchi.template_main.js | 32 ++++++++++++++++++-------------- ui/pages/tabs/templates.html.tmpl | 35 +++++++++++++++++++++++------------ 2 files changed, 41 insertions(+), 26 deletions(-) diff --git a/ui/js/src/kimchi.template_main.js b/ui/js/src/kimchi.template_main.js index 3062856..7002b03 100644 --- a/ui/js/src/kimchi.template_main.js +++ b/ui/js/src/kimchi.template_main.js @@ -15,34 +15,38 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -kimchi.doListTemplates = function() { + + kimchi.doListTemplates = function() { + $('.wok-mask').removeClass('hidden'); kimchi.listTemplates(function(result) { if (result && result.length) { $('#noTemplates').hide(); - var listHtml = '<li class="wok-vm-header">' + - '<span class="column-name">'+i18n['KCHTMPL6004M']+'</span><!--' + - '--><span class="column-type">'+i18n['KCHTMPL6005M']+'</span><!--' + - '--><span class="column-version">'+i18n['KCHTMPL6006M']+'</span><!--' + - '--><span class="column-processors">'+i18n['KCHTMPL6007M']+'</span><!--' + - '--><span class="column-memory">'+i18n['KCHTMPL6008M']+'</span><!-- ' + - '--><span class="column-action" style="display:none"> ' + - ' <span class="sr-only">'+i18n['KCHTMPL6009M']+'</span><!-- ' + - '--></span> ' + - '</li>'; + var listHtml = ''; var templateHtml = $('#templateTmpl').html(); $.each(result, function(index, value) { listHtml += wok.substitute(templateHtml, value); }); + $('.wok-vm-list').removeClass('hidden'); + $('#templates-container').removeClass('hidden'); $('#templateList').html(listHtml); kimchi.templateBindClick(); + $('.wok-mask').fadeOut(300, function() {}); } else { $('#templateList').html(''); $('#noTemplates').show(); + $('.wok-vm-list').addClass('hidden'); + $('#templates-container').addClass('hidden'); + $('.wok-mask').fadeOut(300, function() {}); } - $('.wok-mask').addClass('hidden'); + + var options = { valueNames: ['name-filter', 'os-type-filter', 'os-version-filter', 'cpus-filter', 'memory-filter'] }; + var templatesList = new List('templates-container', options); + }, function(err) { wok.message.error(err.responseJSON.reason); - $('.wok-mask').addClass('hidden'); + $('.wok-mask').fadeOut(300, function() { + $('.wok-mask').addClass('hidden'); + }); }); }; @@ -80,7 +84,7 @@ kimchi.templateBindClick = function() { }, function(err) { wok.message.error(err.responseJSON.reason); }); - }, function() {}); + }, function(){}); }); } kimchi.hideTitle = function() { diff --git a/ui/pages/tabs/templates.html.tmpl b/ui/pages/tabs/templates.html.tmpl index e5b5720..ef4e660 100644 --- a/ui/pages/tabs/templates.html.tmpl +++ b/ui/pages/tabs/templates.html.tmpl @@ -24,7 +24,6 @@ <!DOCTYPE html> <html> <head> - <link rel="stylesheet" href="plugins/kimchi/css/theme-default.min.css"> <script src="plugins/kimchi/js/kimchi.min.js"></script> </head> <body> @@ -34,7 +33,7 @@ <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#toolbar" aria-expanded="false"> - <span class="sr-only">Toggle navigation</span> + <span class="sr-only">$_("Toggle navigation")</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> @@ -49,11 +48,11 @@ </div> </nav> <div class="templates"> - <div class="container"> - <div class="row grid-control hidden"> + <div id="templates-container" class="container hidden"> + <div class="row grid-control empty-when-logged-off"> <div class="pull-right"> - <label for="templates-filter" class="sr-only">$_("Filter"):</label> - <input type="text" class="filter form-control" placeholder="$_("Filter")"> + <label for="search_input" class="sr-only">$_("Filter"):</label> + <input type="text" class="filter form-control search" id="search_input" placeholder="$_("Filter")"> </div> </div> <div id="alert-container"></div> @@ -61,11 +60,23 @@ $_("No templates found.") </div> <div id="alert-container"></div> - <ul id="templateList" class="wok-vm-list empty-when-logged-off"> + <ul id="templates-grid" class="wok-vm-list hidden empty-when-logged-off"> + <li class="wok-vm-header"> + <span class="column-name">$_("Template Name (ID)")</span><!-- + --><span class="column-type">$_("OS")</span><!-- + --><span class="column-version">$_("Version")</span><!-- + --><span class="column-processors">$_("CPUs")</span><!-- + --><span class="column-memory">$_("Memory")</span><!-- + --><span class="column-action" style="display:none"><span class="sr-only">$_("Actions")</span></span> + </li> + <li> + <ul id="templateList" class="ul-body list"> + </ul> + </li> </ul> </div> </div> - <div class="wok-mask hidden"> + <div class="wok-mask"> <div class="wok-mask-loader-container"> <div class="wok-mask-loading"> <div class="wok-mask-loading-icon"></div> @@ -94,13 +105,13 @@ </div> </span> </span><!-- - --><span class='column-type distro-icon icon-{os_distro}' val="{os_distro}">{os_distro}</span><!-- + --><span class='column-type os-type-filter distro-icon icon-{os_distro}' val="{os_distro}">{os_distro}</span><!-- --><span class="item-hidden">$_("OS")</span><!-- - --><span class='column-version' val="{os_version}">{os_version}</span><!-- + --><span class='column-version os-version-filter' val="{os_version}">{os_version}</span><!-- --><span class="item-hidden">$_("Version")</span><!-- - --><span class='column-processors' val="{cpus}"><strong>{cpus}</strong> cores</span><!-- + --><span class='column-processors cpus-filter' val="{cpus}"><strong>{cpus}</strong> $_("cores")</span><!-- --><span class="item-hidden">$_("CPUs")</span><!-- - --><span class='column-memory' val="{memory}"><strong>{memory}</strong> M</span><!-- + --><span class='column-memory memory-filter' val="{memory}"><strong>{memory}</strong> $_("M")</span><!-- --><span class="item-hidden">$_("Memory")</span> </li> </script> -- 1.9.3

From: samhenri <samuel.guimaraes@eldorado.org.br> Signed-off-by: samhenri <samuel.guimaraes@eldorado.org.br> --- po/pt_BR.po | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/po/pt_BR.po b/po/pt_BR.po index 89447e0..332774a 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -2264,7 +2264,10 @@ msgid "Please, wait..." msgstr "Aguarde..." msgid "Add Template" -msgstr "Incluir modelo" +msgstr "Incluir Modelo" + +msgid "Add a Template" +msgstr "Incluir Modelo" msgid "Where is the source media for this template? " msgstr "Onde está a mídia de origem para este modelo? " @@ -2320,6 +2323,12 @@ msgstr "Editar modelo" msgid "Processor" msgstr "Processador" +msgid "Processors Used" +msgstr "Utilização do Processador" + +msgid "Memory Utilization" +msgstr "Utilização da Memória" + msgid "CDROM" msgstr "CD-ROM" @@ -2353,6 +2362,9 @@ msgstr "CPU" msgid "Disk I/O" msgstr "E/S de disco" +msgid "Storage I/O" +msgstr "E/S de disco" + msgid "Network I/O" msgstr "E/S de Rede" @@ -2377,6 +2389,12 @@ msgstr "Distribuição do S.O." msgid "OS Code Name" msgstr "Nome-código do S.O." +msgid "OS Type" +msgstr "Tipo do S.O." + +msgid "Guest Name ID" +msgstr "Nome do Guest (ID)" + msgid "CPU(s)" msgstr "CPU(s)" @@ -2452,6 +2470,15 @@ msgstr "Ativar" msgid "Add Volume" msgstr "Incluir volume" +msgid "Add a Storage" +msgstr "Incluir Armazenamento" + +msgid "Add a Network" +msgstr "Incluir Rede" + +msgid "Add a Guest" +msgstr "Incluir Máquina Guest" + msgid "Extend" msgstr "Estender" -- 1.9.3

From: samhenri <samuel.guimaraes@eldorado.org.br> Signed-off-by: samhenri <samuel.guimaraes@eldorado.org.br> --- ui/js/src/kimchi.network.js | 7 +++++-- ui/pages/tabs/network.html.tmpl | 14 +++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/ui/js/src/kimchi.network.js b/ui/js/src/kimchi.network.js index dc5773c..923aeb9 100644 --- a/ui/js/src/kimchi.network.js +++ b/ui/js/src/kimchi.network.js @@ -28,6 +28,7 @@ kimchi.initNetwork = function() { }; kimchi.initNetworkListView = function() { + $('.wok-mask').removeClass('hidden'); kimchi.listNetworks(function(data) { for (var i = 0; i < data.length; i++) { var network = { @@ -46,6 +47,8 @@ kimchi.initNetworkListView = function() { kimchi.addNetworkItem(network); } $('#networkGrid').dataGrid({enableSorting: false}); + $('#networkGrid').removeClass('hidden'); + $('.wok-mask').fadeOut(300, function() {}); $('input', $('.grid-control', '#network-content-container')).on('keyup', function(){ $('#networkGrid').dataGrid('filter', $(this).val()); }); @@ -151,7 +154,7 @@ kimchi.addNetworkActions = function(network) { }; wok.confirm(settings, function() { kimchi.stopNetwork(network, menu); - $('#networkGrid').dataGrid('deleteRow', $(evt.currentTarget).parents(".row")); + $('#networkGrid').dataGrid('deleteRow', $(evt.currentTarget).parents(".wok-datagrid-row")); }, null); } else { @@ -169,7 +172,7 @@ kimchi.addNetworkActions = function(network) { cancel : i18n['KCHAPI6003M'] }, function() { kimchi.deleteNetwork(network.name, function() { - $('#networkGrid').dataGrid('deleteRow', $(evt.currentTarget).parents(".row")); + $('#networkGrid').dataGrid('deleteRow', $(evt.currentTarget).parents(".wok-datagrid-row")); }); }, null); } diff --git a/ui/pages/tabs/network.html.tmpl b/ui/pages/tabs/network.html.tmpl index c6654de..74041fe 100644 --- a/ui/pages/tabs/network.html.tmpl +++ b/ui/pages/tabs/network.html.tmpl @@ -34,7 +34,7 @@ <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#toolbar" aria-expanded="false"> - <span class="sr-only">Toggle navigation</span> + <span class="sr-only">$_("Toggle navigation")</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> @@ -43,7 +43,7 @@ <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="toolbar"> <ul class="nav navbar-nav navbar-right tools" display="none"> - <li><a id="networkAdd" class="btn-tool" href="javascript:void(0);"><i class="fa fa-plus-circle"></i><span>Add a Network</span></a></li> + <li><a id="networkAdd" class="btn-tool" href="javascript:void(0);"><i class="fa fa-plus-circle"></i><span>$_("Add a Network")</span></a></li> </ul> </div> </div> @@ -57,7 +57,7 @@ </div> </div> <div id="alert-container"></div> - <div id="networkGrid"> + <div id="networkGrid" class="hidden"> <div> <span class="column-state"><span class="sr-only">$_("State")</span></span><!-- --><span class="column-name">$_("Network Name")</span><!-- @@ -73,6 +73,14 @@ </div> </div> + <div class="wok-mask"> + <div class="wok-mask-loader-container"> + <div class="wok-mask-loading"> + <div class="wok-mask-loading-icon"></div> + <div class="wok-mask-loading-text">$_("Loading...")</div> + </div> + </div> + </div> </div> <div id="modalWindow" class="modal fade network-modal" tabindex="-1" role="dialog" aria-labelledby="networkModalLabel" aria-hidden="true"> </div> <script id="networkItem" type="text/html"> -- 1.9.3

From: samhenri <samuel.guimaraes@eldorado.org.br> Signed-off-by: samhenri <samuel.guimaraes@eldorado.org.br> --- ui/js/src/kimchi.storage_main.js | 5 +++++ ui/pages/tabs/storage.html.tmpl | 14 +++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ui/js/src/kimchi.storage_main.js b/ui/js/src/kimchi.storage_main.js index 1b97307..ce83431 100644 --- a/ui/js/src/kimchi.storage_main.js +++ b/ui/js/src/kimchi.storage_main.js @@ -16,6 +16,7 @@ * limitations under the License. */ kimchi.doListStoragePools = function() { + $('.wok-mask').removeClass('hidden'); kimchi.listStoragePools(function(result) { var storageHtml = $('#storageTmpl').html(); if (result && result.length) { @@ -46,14 +47,18 @@ kimchi.doListStoragePools = function() { $('.storage-allocate').addClass('storage-allocate-padding-user'); } $('#storageGrid').dataGrid({enableSorting: false}); + $('#storageGrid').removeClass('hidden'); + $('.wok-mask').fadeOut(300, function() {}); $('input', $('.grid-control', '.storage')).on('keyup', function(){ $('#storageGrid').dataGrid('filter', $(this).val()); }); kimchi.storageBindClick(); } else { + $('.wok-mask').fadeOut(300, function() {}); $('#storagepoolsList').html(''); } }, function(err) { + $('.wok-mask').fadeOut(300, function() {}); wok.message.error(err.responseJSON.reason); }); }; diff --git a/ui/pages/tabs/storage.html.tmpl b/ui/pages/tabs/storage.html.tmpl index 9f2a978..3586ab6 100644 --- a/ui/pages/tabs/storage.html.tmpl +++ b/ui/pages/tabs/storage.html.tmpl @@ -34,7 +34,7 @@ <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#toolbar" aria-expanded="false"> - <span class="sr-only">Toggle navigation</span> + <span class="sr-only">$_("Toggle navigation")</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> @@ -43,7 +43,7 @@ <!-- Collect the nav links, forms, and other content for toggling --> <div class="collapse navbar-collapse" id="toolbar"> <ul class="nav navbar-nav navbar-right tools" display="none"> - <li><a id="storage-pool-add" class="btn-tool" href="javascript:void(0);"><i class="fa fa-plus-circle"></i><span>Add a Storage</span></a></li> + <li><a id="storage-pool-add" class="btn-tool" href="javascript:void(0);"><i class="fa fa-plus-circle"></i><span>$_("Add a Storage")</span></a></li> </ul> </div> </div> @@ -57,7 +57,7 @@ </div> </div> <div id="alert-container"></div> - <div id='storageGrid'> + <div id='storageGrid' class="hidden"> <div> <span class="column-state"><span class="sr-only">$_("State")</span></span><!-- --><span class="column-name">$_("Name")</span><!-- @@ -91,6 +91,14 @@ </div> </div> </div> + <div class="wok-mask"> + <div class="wok-mask-loader-container"> + <div class="wok-mask-loading"> + <div class="wok-mask-loading-icon"></div> + <div class="wok-mask-loading-text">$_("Loading...")</div> + </div> + </div> + </div> </div> </div> <script id="storageTmpl" type="html/text"> -- 1.9.3
participants (2)
-
Aline Manera
-
sguimaraes943@gmail.com