BlueCat Address Manager Table Quick-Filter

Add a quick filter to visible Table content in BlueCat Address Manager

  1. // ==UserScript==
  2. // @name BlueCat Address Manager Table Quick-Filter
  3. // @namespace *
  4. // @description Add a quick filter to visible Table content in BlueCat Address Manager
  5. // @include */app*
  6. // @license MIT
  7. // @version 1
  8. // @grant none
  9. // @copyright 2019, Marius Galm
  10. // @license MIT
  11. // @icon https://www.bluecatnetworks.com/wp-content/uploads/2018/03/cropped-bluecat-favicon-32x32.png
  12. // @require http://code.jquery.com/jquery-latest.js
  13. // ==/UserScript==
  14.  
  15. if (document.readyState === "interactive" ) {
  16. var topBar = document.getElementsByClassName('value-table-topToolBar')[0];
  17. var tBody = topBar.getElementsByTagName('tbody')[2];
  18. var tR = tBody.getElementsByTagName('tr')[0];
  19. var w = tR.insertCell(-1);
  20. w.innerHTML='<div class="separator"></div>';
  21. var x = tR.insertCell(-1);
  22. x.innerHTML='<td><form action="#" method="get"><div class="input-group"><span class="title-center"><b> Quick Filter: </b></span><input autocomplete="off" class="form-control" id="system-search" name="q" placeholder=" Type to filter..." required=""></div></form></td>';
  23. var y = tR.insertCell(-1);
  24. y.innerHTML='<td><div id="qcontent"></div></td>';
  25. }
  26.  
  27. $(document).ready(function() {
  28. var activeSystemClass = $('.list-group-item.active');
  29. var qcontent = $('#qcontent');
  30.  
  31. //something is entered in search form
  32. $('#system-search').keyup( function() {
  33. var that = this;
  34. // affect all table rows on in systems table
  35. var tableBody = $('#outerTable tbody:first');
  36. var tableRowsClass = $('#outerTable tbody:first > tr').not(':first').not('th');
  37. $('.search-sf').remove();
  38. tableRowsClass.each( function(i, val) {
  39. //Lower text for case insensitive
  40. var rowText = $(val).text().toLowerCase();
  41. var inputText = $(that).val().toLowerCase();
  42. if(inputText != '')
  43. {
  44. $('.search-query-sf').remove();
  45. qcontent.prepend('<span style="padding-left: 5px;" class="search-query-sf"><strong>Searching for: "'
  46. + $(that).val()
  47. + '"</strong></span>');
  48. }
  49. else
  50. {
  51. $('.search-query-sf').remove();
  52. }
  53.  
  54. if( rowText.indexOf( inputText ) == -1 )
  55. {
  56. //hide rows
  57. tableRowsClass.eq(i).hide();
  58. }
  59. else
  60. {
  61. $('.search-sf').remove();
  62. tableRowsClass.eq(i).show();
  63. }
  64. });
  65. //all tr elements are hidden
  66. if(tableRowsClass.children(':visible').length == 0)
  67. {
  68. tableBody.append('<tr class="search-sf"><td class="text-muted" colspan="6">No entries found.</td></tr>');
  69. }
  70. });
  71. });