[PATCH] [Kimchi] Issue #809: PCI filter does not seem to work

From: Samuel Guimarães <sguimaraes943@gmail.com> This patch fixes issue #809 "PCI filter does not seem to work". This fix requires "Added jquery.containsNC to enable case insensitive pseudo-selector in JS" applied since it uses this snippet to allow case insensitive filter. Samuel Guimarães (1): Issue #809: PCI filter does not seem to work ui/js/src/kimchi.guest_edit_main.js | 49 ++++++++++++++++++++----------------- ui/pages/guest-edit.html.tmpl | 8 +++--- 2 files changed, 31 insertions(+), 26 deletions(-) -- 1.9.3

From: Samuel Guimarães <sguimaraes943@gmail.com> This commit fixes issue #809 "PCI filter does not seem to work". Removed readonly input fields and inserted the PCI device values in the span tags. Added a minor change to kimchi.filterPCINodes() function that requires a new library in Wok (jquery.containsNC.js) as an enhancement to allow case insensitive values to maintain consistency with other filter inputs. Signed-off-by: Samuel Guimarães <sguimaraes943@gmail.com> --- ui/js/src/kimchi.guest_edit_main.js | 49 ++++++++++++++++++++----------------- ui/pages/guest-edit.html.tmpl | 8 +++--- 2 files changed, 31 insertions(+), 26 deletions(-) diff --git a/ui/js/src/kimchi.guest_edit_main.js b/ui/js/src/kimchi.guest_edit_main.js index 1118e89..b51f97f 100644 --- a/ui/js/src/kimchi.guest_edit_main.js +++ b/ui/js/src/kimchi.guest_edit_main.js @@ -428,26 +428,31 @@ kimchi.guest_edit_main = function() { }; var filterPCINodes = function(group, text, targetName) { - text = text.toLowerCase(); - targetName = targetName.toLowerCase(); - $('.body', '#form-guest-edit-pci').children().each(function() { - var currentName = $('.name', this).text().toLowerCase(); - var textFilter = currentName.indexOf(text) !== -1; - textFilter = textFilter || $('.product', this).text().toLowerCase().indexOf(text) !== -1; - textFilter = textFilter || $('.vendor', this).text().toLowerCase().indexOf(text) !== -1; - var display = 'none'; - var itemGroup = $('button i', this); - if (textFilter) { - if (group === 'all') { - display = ''; - } else if (group === 'toAdd' && itemGroup.hasClass('fa-power-off')) { - display = ''; - } else if (group === 'added' && itemGroup.hasClass('fa-ban')) { - display = ''; + targetName = targetName || null; + text = text.trim().split(" "); + var rows = $('.body', '#form-guest-edit-pci').find('div'); + if(text === ""){ + rows.show(); + return; + } + rows.hide(); + + rows.filter(function(index, value){ + var $span = $(this); + var $itemGroup = $('button i', this); + for (var i = 0; i < text.length; ++i){ + if ($span.is(":containsNC('" + text[i] + "')")) { + if (group === 'all') { + return true; + } else if (group === 'toAdd' && $itemGroup.hasClass('fa-power-off')) { + return true; + } else if (group === 'added' && $itemGroup.hasClass('fa-ban')) { + return true; + } } } - $(this).css('display', display); - }); + return false; + }).show(); }; var setupPCIDevice = function() { kimchi.getAvailableHostPCIDevices(function(hostPCIs) { @@ -457,10 +462,10 @@ kimchi.guest_edit_main = function() { }); }); $('select', '#form-guest-edit-pci').change(function() { - filterPCINodes($(this).val(), $('input', '#form-guest-edit-pci').val(), ''); + filterPCINodes($(this).val(), $('input#guest-edit-pci-filter', '#form-guest-edit-pci').val(), ''); }); $('select', '#form-guest-edit-pci').selectpicker(); - $('input', '#form-guest-edit-pci').on('keyup', function() { + $('input#guest-edit-pci-filter', '#form-guest-edit-pci').on('keyup', function() { filterPCINodes($('select', '#form-guest-edit-pci').val(), $(this).val(), ''); }); }; @@ -508,7 +513,7 @@ kimchi.guest_edit_main = function() { }); }); //id is for the object that is being added back to the available PCI devices - filterPCINodes($('select', '#form-guest-edit-pci').val(), $('input', '#form-guest-edit-pci').val(), id); + filterPCINodes($('select', '#form-guest-edit-pci').val(), $('input#guest-edit-pci-filter', '#form-guest-edit-pci').val(), id); }); } else { kimchi.addVMPCIDevice(kimchi.selectedGuest, { @@ -520,7 +525,7 @@ kimchi.guest_edit_main = function() { } }); //id is for the object that is being removed from the available PCI devices - filterPCINodes($('select', '#form-guest-edit-pci').val(), $('input', '#form-guest-edit-pci').val(), id); + filterPCINodes($('select', '#form-guest-edit-pci').val(), $('input#guest-edit-pci-filter', '#form-guest-edit-pci').val(), id); }); } }); diff --git a/ui/pages/guest-edit.html.tmpl b/ui/pages/guest-edit.html.tmpl index 06063b9..2a8cfbe 100644 --- a/ui/pages/guest-edit.html.tmpl +++ b/ui/pages/guest-edit.html.tmpl @@ -147,7 +147,7 @@ <option value="toAdd">$_("To Add")</option> <option value="added">$_("Added")</option> </select> - <input type="text" class="form-control" placeholder="$_("Filter")" /> + <input type="text" class="form-control" id="guest-edit-pci-filter" placeholder="$_("Filter")" /> </div> </div> <div class="header"> @@ -277,9 +277,9 @@ <span class="cell status column-pci-status"> <i class="fa fa-power-off"></i> </span> - <span class="cell name column-pci-name"><input type="text" readonly="readonly" value="{name}" title="{name}" class="form-control" /></span> - <span class="cell product column-product"><input type="text" readonly="readonly" value="{product}" title="{product}" class="form-control" /></span> - <span class="cell vendor column-vendor"><input type="text" readonly="readonly" value="{vendor}" title="{vendor}" class="form-control" /></span> + <span class="cell name column-pci-name" title="{name}">{name}</span> + <span class="cell product column-product" title="{product}">{product}</span> + <span class="cell vendor column-vendor" title="{vendor}">{vendor}</span> <span class="cell column-actions action-area"><button class="btn btn-link"><i class="fa"></i></button></span> </div> </script> -- 1.9.3

Reviewed by: Jose Ricardo Ziviani <joserz@linux.vnet.ibm.com> Tested by: Jose Ricardo Ziviani <joserz@linux.vnet.ibm.com> On 14-03-2016 14:46, sguimaraes943@gmail.com wrote:
From: Samuel Guimarães <sguimaraes943@gmail.com>
This patch fixes issue #809 "PCI filter does not seem to work". This fix requires "Added jquery.containsNC to enable case insensitive pseudo-selector in JS" applied since it uses this snippet to allow case insensitive filter.
Samuel Guimarães (1): Issue #809: PCI filter does not seem to work
ui/js/src/kimchi.guest_edit_main.js | 49 ++++++++++++++++++++----------------- ui/pages/guest-edit.html.tmpl | 8 +++--- 2 files changed, 31 insertions(+), 26 deletions(-)
-- Jose Ricardo Ziviani ----------------------------- Software Engineer Linux Technology Center - IBM

Applied. Thanks. Regards, Aline Manera
participants (3)
-
Aline Manera
-
Jose Ricardo Ziviani
-
sguimaraes943@gmail.com