Javascript for filtering the SP by name and description
authorRob Crittenden <rcritten@redhat.com>
Wed, 2 Sep 2015 20:56:26 +0000 (16:56 -0400)
committerPatrick Uiterwijk <puiterwijk@redhat.com>
Fri, 4 Sep 2015 02:50:27 +0000 (04:50 +0200)
https://fedorahosted.org/ipsilon/ticket/148

Signed-off-by: Rob Crittenden <rcritten@redhat.com>
Reviewed-by: Patrick Uiterwijk <puiterwijk@redhat.com>
ui/js/divfilter.js [new file with mode: 0644]

diff --git a/ui/js/divfilter.js b/ui/js/divfilter.js
new file mode 100644 (file)
index 0000000..cf8933d
--- /dev/null
@@ -0,0 +1,70 @@
+// Useful for debugging
+function listProperties(obj) {
+   var propList = "";
+   for(var propName in obj) {
+      if(typeof(obj[propName]) != "undefined") {
+         propList += (propName + "=" + obj[propName] + ", ");
+      }
+   }
+   window.alert(propList);
+}
+
+$(function() {
+    'use strict';
+
+    var DivFilter = (function(Arr) {
+        var _input;
+
+        function _onInputEvent(e) {
+            _input = e.target;
+            var divs = document.getElementById("providers");
+            var providerdivs = divs.getElementsByTagName("div");
+
+            for(var i=0; i < providerdivs.length; i++) {
+                var anchor = providerdivs[i].getElementsByTagName("a");
+                var x = _filter(anchor[0]);
+                if (x == 0) {
+                    providerdivs[i].style.display = 'none';
+                    //$(providerdivs[i]).slideUp();
+                } else {
+                    providerdivs[i].style.display = 'inline';
+                    //$(providerdivs[i]).slideDown();
+                }
+            };
+        }
+
+        function _filter(anchor) {
+             var name = anchor.name.toLowerCase();
+             var desc = $(anchor).data("original-title");
+             var val = _input.value.toLowerCase();
+
+             if (desc === "None") {
+                 desc="";
+             } else {
+                 desc = desc.toLowerCase();
+             }
+
+             if (name.indexOf(val) === -1 && desc.indexOf(val) === -1) {
+                 return 0;
+             } else {
+                 return 1;
+             }
+        }
+
+        return {
+            init: function() {
+                var inputs = document.getElementsByClassName('div-filter');
+                Arr.forEach.call(inputs, function(input) {
+                    input.oninput = _onInputEvent;
+                });
+        }
+    };
+})(Array.prototype);
+
+document.addEventListener('readystatechange', function() {
+    if (document.readyState === 'complete') {
+        DivFilter.init();
+    }
+});
+
+});