changeset 1653:b1e1dffd595c beta

one generic qfilter function.
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 04 Nov 2011 21:18:46 +0200
parents 8384eaabeb19
children 713315371e03
files rhodecode/public/js/rhodecode.js rhodecode/templates/admin/users/user_edit_my_account.html rhodecode/templates/base/base.html rhodecode/templates/index_base.html rhodecode/templates/repo_switcher_list.html
diffstat 5 files changed, 96 insertions(+), 168 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/public/js/rhodecode.js	Thu Nov 03 03:00:53 2011 +0200
+++ b/rhodecode/public/js/rhodecode.js	Fri Nov 04 21:18:46 2011 +0200
@@ -219,3 +219,63 @@
     });
 }
 
+
+/**
+ * Quick filter widget
+ * 
+ * @param target: filter input target
+ * @param nodes: list of nodes in html we want to filter.
+ * @param display_element function that takes current node from nodes and
+ *    does hide or show based on the node
+ * 
+ */
+var q_filter = function(target,nodes,display_element){
+	
+	var nodes = nodes;
+	var q_filter_field = YUD.get(target);
+	var F = YAHOO.namespace(target);
+
+	YUE.on(q_filter_field,'click',function(){
+	   q_filter_field.value = '';
+	});
+
+	YUE.on(q_filter_field,'keyup',function(e){
+	    clearTimeout(F.filterTimeout); 
+	    F.filterTimeout = setTimeout(F.updateFilter,600); 
+	});
+
+	F.filterTimeout = null;
+
+	var show_node = function(node){
+		YUD.setStyle(node,'display','')
+	}
+	var hide_node = function(node){
+		YUD.setStyle(node,'display','none');
+	}
+	
+	F.updateFilter  = function() { 
+	   // Reset timeout 
+	   F.filterTimeout = null;
+	   
+	   var obsolete = [];
+	   
+	   var req = q_filter_field.value.toLowerCase();
+	   
+	   var l = nodes.length;
+	   var i;
+       for (i=0;i<l;i++ ){
+    	   var n = nodes[i];
+    	   var target_element = display_element(n)
+    	   if(req && n.innerHTML.toLowerCase().indexOf(req) == -1){
+    		   hide_node(target_element);
+    	   }
+    	   else{
+    		   show_node(target_element);
+    	   }
+       }	  	   
+
+	}	
+}
+
+
+
--- a/rhodecode/templates/admin/users/user_edit_my_account.html	Thu Nov 03 03:00:53 2011 +0200
+++ b/rhodecode/templates/admin/users/user_edit_my_account.html	Fri Nov 04 21:18:46 2011 +0200
@@ -112,7 +112,7 @@
     <!-- box / title -->
     <div class="title">
         <h5> 
-        <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
+        <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/>        
         ${_('My repositories')}
         </h5>
          %if h.HasPermissionAny('hg.admin','hg.create.repository')():
@@ -178,50 +178,13 @@
 	     </tbody>
 	     </table>
     </div>
-    
 </div>
-    <script type="text/javascript">
-     var D = YAHOO.util.Dom;
-     var E = YAHOO.util.Event;
-     var S = YAHOO.util.Selector;
-     
-     var q_filter = D.get('q_filter');
-     var F = YAHOO.namespace('q_filter'); 
-     
-     E.on(q_filter,'click',function(){
-        q_filter.value = '';
-     });
-
-     F.filterTimeout = null;
-     
-     F.updateFilter  = function() { 
-        // Reset timeout 
-        F.filterTimeout = null;
-        
-        var obsolete = [];
-        var nodes = S.query('div.table tr td a.repo_name');
-        var req = q_filter.value.toLowerCase();
-        for (n in nodes){
-            D.setStyle(nodes[n].parentNode.parentNode,'display','')
-        }
-        if (req){
-            for (n in nodes){
-                if (nodes[n].innerHTML.toLowerCase().indexOf(req) == -1) {
-                    obsolete.push(nodes[n]); 
-                }
-            }
-            if(obsolete){
-                for (n in obsolete){
-                    D.setStyle(obsolete[n].parentNode.parentNode,'display','none');
-                }
-            }
-        }
-     }
-     
-     E.on(q_filter,'keyup',function(e){
-         clearTimeout(F.filterTimeout); 
-         F.filterTimeout = setTimeout(F.updateFilter,600); 
-     });
-     
-    </script>
+<script type="text/javascript">
+var nodes = YUQ('div.table tr td a.repo_name');
+var target = 'q_filter';
+var func = function(node){
+    return node.parentNode.parentNode;
+}
+q_filter(target,nodes,func);
+</script>
 </%def>  
--- a/rhodecode/templates/base/base.html	Thu Nov 03 03:00:53 2011 +0200
+++ b/rhodecode/templates/base/base.html	Fri Nov 04 21:18:46 2011 +0200
@@ -256,46 +256,13 @@
             <script type="text/javascript">
                YUE.on('repo_switcher','mouseover',function(){
                       function qfilter(){
-                         var S = YAHOO.util.Selector;
-                         
-                         var q_filter = YUD.get('q_filter_rs');
-                         var F = YAHOO.namespace('q_filter_rs'); 
-                         
-                         YUE.on(q_filter,'click',function(){
-                            q_filter.value = '';
-                         });
-                    
-                         F.filterTimeout = null;
-                         
-                         F.updateFilter  = function() { 
-                            // Reset timeout 
-                            F.filterTimeout = null;
-                            
-                            var obsolete = [];
-                            var nodes = S.query('ul#repo_switcher_list li a.repo_name');
-                            var req = YUD.get('q_filter_rs').value.toLowerCase();
-                            for (n in nodes){
-                                YUD.setStyle(nodes[n].parentNode,'display','')
-                            }
-                            if (req){
-                                for (n in nodes){
-                                    if (nodes[n].innerHTML.toLowerCase().indexOf(req) == -1) {
-                                        obsolete.push(nodes[n]); 
-                                    }
-                                }
-                                if(obsolete){
-                                    for (n in obsolete){
-                                        YUD.setStyle(obsolete[n].parentNode,'display','none');
-                                    }
-                                }
-                            }
-                         }
-                         
-                         YUE.on(q_filter,'keyup',function(e){
-                             clearTimeout(F.filterTimeout); 
-                             F.filterTimeout = setTimeout(F.updateFilter,600); 
-                         });
-                }
+                          var nodes = YUQ('ul#repo_switcher_list li a.repo_name');
+                          var target = 'q_filter_rs';
+                          var func = function(node){
+                              return node.parentNode;
+                          }                          
+                          q_filter(target,nodes,func);                         
+                      }
                    var loaded = YUD.hasClass('repo_switcher','loaded');
                    if(!loaded){
                        YUD.addClass('repo_switcher','loaded');
@@ -307,17 +274,17 @@
                    return false;
                });
 
-            YUE.on('branch_tag_switcher','mouseover',function(){
-               var loaded = YUD.hasClass('branch_tag_switcher','loaded');
-               if(!loaded){
-                   YUD.addClass('branch_tag_switcher','loaded');
-                   ypjax("${h.url('branch_tag_switcher',repo_name=c.repo_name)}",'switch_to_list',
-                       function(o){},
-                       function(o){YUD.removeClass('branch_tag_switcher','loaded');}
-                       ,null);
-               }
-               return false;
-            });
+              YUE.on('branch_tag_switcher','mouseover',function(){
+                 var loaded = YUD.hasClass('branch_tag_switcher','loaded');
+                 if(!loaded){
+                     YUD.addClass('branch_tag_switcher','loaded');
+                     ypjax("${h.url('branch_tag_switcher',repo_name=c.repo_name)}",'switch_to_list',
+                         function(o){},
+                         function(o){YUD.removeClass('branch_tag_switcher','loaded');}
+                         ,null);
+                 }
+                 return false;
+              });
             </script>             
 		%else:
 		    ##ROOT MENU
--- a/rhodecode/templates/index_base.html	Thu Nov 03 03:00:53 2011 +0200
+++ b/rhodecode/templates/index_base.html	Fri Nov 04 21:18:46 2011 +0200
@@ -156,70 +156,11 @@
             </table>
             </div>
     </div>
-    
-    
-    <script type="text/javascript">
-     var D = YAHOO.util.Dom;
-     var E = YAHOO.util.Event;
-     var S = YAHOO.util.Selector;
-     
-     var q_filter = D.get('q_filter');
-     var F = YAHOO.namespace('q_filter'); 
-     
-     E.on(q_filter,'click',function(){
-        q_filter.value = '';
-     });
-
-     F.filterTimeout = null;
-     
-     function set_count(count){
-    
-    	 if(count == 0){
-    		 YUD.setStyle('repos_list','display','none');
-    		 YUD.setStyle('welcome','display','');
-    	 }
-    	 else{
-    		 YUD.setStyle('repos_list','display','');
-    		 YUD.setStyle('welcome','display','none');
-    	 }
-    	 YUD.get('repo_count').innerHTML = count;
-    	 
-     }
-     
-     
-     //set initial count for repos
-     var nodes = S.query('div.table tr td div a.repo_name');
-     
-     set_count(nodes.length)
-     F.updateFilter  = function() { 
-        // Reset timeout 
-        F.filterTimeout = null;
-        
-        var obsolete = [];
-        nodes = S.query('div.table tr td div a.repo_name');
-        var req = q_filter.value.toLowerCase();
-        for (n in nodes){
-            D.setStyle(nodes[n].parentNode.parentNode.parentNode,'display','')
-        }
-        if (req){
-            for (n in nodes){
-                if (nodes[n].innerHTML.toLowerCase().indexOf(req) == -1) {
-                    obsolete.push(nodes[n]); 
-                }
-            }
-            if(obsolete){
-                for (n in obsolete){
-                    D.setStyle(obsolete[n].parentNode.parentNode.parentNode,'display','none');
-                }
-            }
-        }
-        // set new count into dashboard
-        set_count(nodes.length - obsolete.length)
-     }
-     
-     E.on(q_filter,'keyup',function(e){
-         clearTimeout(F.filterTimeout); 
-         F.filterTimeout = setTimeout(F.updateFilter,600); 
-     });
-     
-    </script>
+    <script>
+      var nodes = YUQ('div.table tr td a.repo_name');
+      var target = 'q_filter';
+      var func = function(node){
+    	  return node.parentNode.parentNode.parentNode;
+      }
+      q_filter(target,nodes,func);
+    </script>
\ No newline at end of file
--- a/rhodecode/templates/repo_switcher_list.html	Thu Nov 03 03:00:53 2011 +0200
+++ b/rhodecode/templates/repo_switcher_list.html	Fri Nov 04 21:18:46 2011 +0200
@@ -1,10 +1,7 @@
 ## -*- coding: utf-8 -*-
 
 <li class="qfilter_rs">
-<input type="text" 
-style="border:0"        
-value="quick filter..." 
-name="filter" size="15" id="q_filter_rs" />
+    <input type="text" style="border:0" value="quick filter..." name="filter" size="15" id="q_filter_rs" />
 </li>
     
 %for repo in c.repos_list: