From 38223bbadd1474fd3d23506a3abed1a0a86c1078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Indrek=20V=C3=A4ndrik?= Date: Tue, 20 Sep 2011 11:31:43 +0300 Subject: [PATCH 1/2] Added multilevel list-dividers --- js/jquery.mobile.listview.filter.js | 35 +++++++++++++++++++---------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/js/jquery.mobile.listview.filter.js b/js/jquery.mobile.listview.filter.js index ebbcc2bdad4..1858921a367 100644 --- a/js/jquery.mobile.listview.filter.js +++ b/js/jquery.mobile.listview.filter.js @@ -38,10 +38,15 @@ $( ":jqmData(role='listview')" ).live( "listviewcreate", function() { val = this.value.toLowerCase(), listItems = null, lastval = $this.jqmData( "lastval" ) + "", - childItems = false, + levels = [], + level = null, itemtext = "", - item, change; - + levelCount = 0, + item; + + // Get level count for list dividers + $("li:jqmData(role=list-divider)").each(function() {levelCount = $(this).attr('divider-level') > levelCount ? $(this).attr('divider-level') : levelCount; }); + // Change val as lastval for next execution $this.jqmData( "lastval" , val ); @@ -67,20 +72,26 @@ $( ":jqmData(role='listview')" ).live( "listviewcreate", function() { itemtext = item.jqmData( "filtertext" ) || item.text(); if ( item.is( "li:jqmData(role=list-divider)" ) ) { - - item.toggleClass( "ui-filter-hidequeue" , !childItems ); - + level = item.attr('divider-level'); + item.toggleClass( "ui-filter-hidequeue" , !levels[level] ); + + if(level > 1){ + for (var j = level; j>1; j-- ){ + levels[j] = true; + } + } // New bucket! - childItems = false; + levels[level] = false; + + } else if ( itemtext.toLowerCase().indexOf( val ) === -1 ) { - } else if ( listview.options.filterCallback( itemtext, val ) ) { - - //mark to be hidden + // Mark to be hidden item.toggleClass( "ui-filter-hidequeue" , true ); } else { - // There"s a shown item in the bucket - childItems = true; + for (var j = levelCount; j>0; j-- ){ + levels[j] = true; + } } } From c53d1094999b2a8ee6a36684ef6a6c47c3728a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Indrek=20V=C3=A4ndrik?= Date: Tue, 20 Sep 2011 15:27:58 +0300 Subject: [PATCH 2/2] Added multilevel list-divider functionality --- js/.directory | 3 +++ js/jquery.mobile.listview.filter.js | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 js/.directory diff --git a/js/.directory b/js/.directory new file mode 100644 index 00000000000..3ccf79f15c4 --- /dev/null +++ b/js/.directory @@ -0,0 +1,3 @@ +[Dolphin] +Timestamp=2011,9,20,11,27,25 +ViewMode=1 diff --git a/js/jquery.mobile.listview.filter.js b/js/jquery.mobile.listview.filter.js index 1858921a367..37b24ad5b32 100644 --- a/js/jquery.mobile.listview.filter.js +++ b/js/jquery.mobile.listview.filter.js @@ -45,7 +45,8 @@ $( ":jqmData(role='listview')" ).live( "listviewcreate", function() { item; // Get level count for list dividers - $("li:jqmData(role=list-divider)").each(function() {levelCount = $(this).attr('divider-level') > levelCount ? $(this).attr('divider-level') : levelCount; }); + $("li:jqmData(role=list-divider)").each(function() {levelCount = $(this).attr('data-divider-level') > levelCount ? $(this).attr('data-divider-level') : levelCount; }); + // Change val as lastval for next execution $this.jqmData( "lastval" , val ); @@ -72,7 +73,8 @@ $( ":jqmData(role='listview')" ).live( "listviewcreate", function() { itemtext = item.jqmData( "filtertext" ) || item.text(); if ( item.is( "li:jqmData(role=list-divider)" ) ) { - level = item.attr('divider-level'); + level = item.attr('data-divider-level'); + item.toggleClass( "ui-filter-hidequeue" , !levels[level] ); if(level > 1){