Mercurial > kallithea
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: