//
// this: virtuallist element
// event: virtuallistview.options
- // TODO: Why this arg name is 'event'? Not resonable.
- // (this function is not called with event element as args!)
+ // TODO: Why this arg name is 'event'? Not resonable.
+ // (this function is not called with event element as args!)
_reposition: function ( event ) {
var o,
t = this,
padding = parseInt( $( o.id + o.childSelector ).css( "padding-left" ), 10 ) + parseInt( $( o.id + o.childSelector ).css( "padding-right" ), 10 );
// Add CSS to all <li> elements
- // * absolute position
- // * btn-up
- // * mouse up/down/over/out styles
+ // * absolute position
+ // * btn-up
+ // * mouse up/down/over/out styles
$( o.id + ">" + o.childSelector )
.addClass( "position_absolute" )
.addClass( "ui-btn-up-s" )
o = t.options, // options
prevTopBufLen = t._num_top_items, // Previous(remembered) top buf length
timerInterval = 100,
- i;
+ i,
+ _scrollView,
+ _normalScroll;
- var _scrollView = {
+ _scrollView = {
viewTop: function ( ) {
var sv = $( o.id ).parentsUntil( ".ui-page" ).find( ".ui-scrollview-view" ),
svTrans = sv.css( "-webkit-transform" ),
if ( svTrans ) {
svTransVal = svTrans.replace( /matrix\s*\((.*)\)/, "$1" ); // matrix(a,c,b,d,tx,ty)
}
- return - parseInt( svTransVal.split(',')[5] );
+ return - parseInt( svTransVal.split(',')[5], 10 );
}
- },
- _normalScroll = {
+ };
+ _normalScroll = {
viewTop: function ( ) {
return $( window ).scrollTop( ); // TODO: - _line_h?
}
// @param[in] vl virtuallist object (JQM object)
function timerMove ( vl, undefined ) {
var cy, // current y position
- cti, cbi, // current top/bottom idx
- oti = vl._first_index, obi = vl._last_index, // old top/botton idx
+ cti, // current top idx
+ cbi, // current bottom idx
+ oti = vl._first_index, // old top idx
+ obi = vl._last_index, // old botton idx
dti, // delta of top idx
- fromIdx, toIdx, // index range to be moved
+ fromIdx,
+ toIdx, // index range to be moved
delta, // moveItem delta
rowLen = vl.options.row, // max. # of items handled at once
bufSize, // top/bottom buffer size. unit: # of items
i;
+ // subroutine: Move itemContents in i2 into i1
+ function moveItemContents( vl, i1, i2 ) {
+ // TODO: Find a efficient way to replace data!
+ // Assumption: i1 and i2 has same children.
+ var NODETYPE = { ELEMENT_NODE: 1, TEXT_NODE: 3 },
+ c1, // child item 1 (old)
+ c2, // child item 2 (new)
+ newText,
+ newImg,
+ i;
+
+ $( i1 ).find( ".ui-li-text-main", ".ui-li-text-sub", ".ui-li-text-sub2", "ui-btn-text" ).each( function ( index ) {
+ c1 = $( this );
+ newText = $( i2 ).find( ".ui-li-text-main", ".ui-li-text-sub", "ui-btn-text" ).eq( index ).text();
+
+ $( c1 ).contents().filter( function () {
+ return ( this.nodeType == NODETYPE.TEXT_NODE );
+ } ).get( 0 ).data = newText;
+ } );
+
+ $( i1 ).find( "img" ).each( function ( imgIdx ) {
+ var c1 = $( this );
+ newImg = $( i2 ).find( "img" ).eq( imgIdx ).attr( "src" );
+
+ $( c1 ).attr( "src", newImg );
+ } );
+
+ $( i1 ).removeData( ); // Clear old data
+ }
+
+ // subroutine: Move item
+ function moveItem( vl, fromIdx, toIdx ) {
+ var itemData, // data from itemData()
+ item, // item element
+ newItem, // new item element
+ tmpl; // template
+
+ log( ">> move item: " + fromIdx + " --> " + toIdx );
+
+ // Find current item
+ item = $( '#' + vl.options.itemIDPrefix + fromIdx ); // TODO: refactor ID generation!
+ if ( ! item ) {
+ return false;
+ }
+
+ // Get new item
+ tmpl = $( "#" + vl.options.template );
+ newItem = tmpl.tmpl( vl._itemData( toIdx ) );
+
+ // TODO: Consider touch block while moving?
+
+ // Move item contents
+ moveItemContents( vl, item, newItem );
+
+ // clean up temporary item
+ newItem.remove();
+
+ // Move position, and set id
+ item.css( 'top', toIdx * vl._line_h )
+ .attr( 'id' , vl.options.itemIDPrefix + toIdx ); // TODO: refactor ID generation!
+
+ // TODO: Apply jqmdata? check following old code;
+ // $( oldItem ).removeData( ); // Clear old data
+ // if (key) { $( oldItem ).data( key, $( newItem ).data( key ) ); }
+
+ return true;
+ }
+
+
// Get current view position
cy = viewTop();
cbi = cti + rowLen - 1;
if ( cti < 0 ) { // Top boundary check
- cbi += ( 0 - cti );
+ cbi += ( - cti );
cti = 0;
} else if ( cbi > ( vl._numItemData - 1 ) ) { // Bottom boundary check
cti -= ( cbi - ( vl._numItemData - 1 ) );
// Calculate dti
dti = cti - oti;
- log("cy="+cy+", oti="+oti+", obi="+obi+", cti="+cti+", cbi="+cbi+", dti="+dti);
+ log( "cy=" + cy + ", oti=" + oti + ", obi=" + obi + ", cti=" + cti + ", cbi=" + cbi + ", dti=" + dti );
// switch: dti = 0 --> timer stop condition: delta=0 or scrollstop event comes. END.
if ( 0 == dti ) {
clearTimeout( vl.timerMoveID );
vl.timerMoveID = null;
}
- return; // End timerMove()
- }
-
- // switch: dti >= # of max elements --> total replace.
- else {
+ } else {
+ // switch: dti >= # of max elements --> total replace.
vl.timerStillCount = 0; // Reset still counter
if ( Math.abs( dti ) >= rowLen ) {
fromIdx = oti;
toIdx = obi;
delta = dti;
- log(">>> WHOLE CHANGE! delta="+delta);
- }
-
- // switch: dti < # of max elements --> move t2b or b2t until new top/bottom idx is covered
- else {
+ log( ">>> WHOLE CHANGE! delta=" + delta );
+ } else {
+ // switch: dti < # of max elements --> move t2b or b2t until new top/bottom idx is covered
if ( dti > 0 ) {
fromIdx = oti;
toIdx = oti + dti - 1;
toIdx = obi;
delta = -rowLen;
}
- log(">>> partial change. delta="+delta);
+ log( ">>> partial change. delta=" + delta );
}
// Move items
- for( i = fromIdx; i <= toIdx; i++ ) {
+ for ( i = fromIdx; i <= toIdx; i++ ) {
moveItem( vl, i, i + delta ); // Change data and position
}
vl.timerMoveID = setTimeout( timerMove, timerInterval, vl );
}
return; // End of function
-
- // Move itemContents in i2 into i1
- function moveItemContents( vl, i1, i2 ) {
- // TODO: Find a efficient way to replace data!
- // Assumption: i1 and i2 has same children.
- var NODETYPE={ ELEMENT_NODE:1, TEXT_NODE:3 },
- c1, c2, // child item
- newText,
- i;
-
- $( i1 ).find( ".ui-li-text-main", ".ui-li-text-sub", ".ui-li-text-sub2", "ui-btn-text" ).each( function ( index ) {
- c1 = $( this );
- newText = $( i2 ).find( ".ui-li-text-main", ".ui-li-text-sub", "ui-btn-text" ).eq( index ).text();
-
- $( c1 ).contents().filter( function () {
- return ( this.nodeType == NODETYPE.TEXT_NODE );
- } ).get( 0 ).data = newText;
- } );
-
- $( i1 ).find( "img" ).each( function ( imgIdx ) {
- var c1 = $( this );
- newImg = $( i2 ).find( "img" ).eq( imgIdx ).attr( "src" );
-
- $( c1 ).attr( "src", newImg );
- } );
-
- $( i1 ).removeData( ); // Clear old data
- }
-
- // Move item
- function moveItem( vl, fromIdx, toIdx ) {
- var itemData,
- item, newItem,
- tmpl;
-
- log(">> move item: "+fromIdx + " --> "+toIdx);
-
- // Find current item
- item = $( '#' + vl.options.itemIDPrefix + fromIdx ); // TODO: refactor ID generation!
- if ( ! item ) {
- return false;
- }
-
- // Get new item
- tmpl = $( "#" + vl.options.template );
- newItem = tmpl.tmpl( vl._itemData( toIdx ) );
-
- // TODO: Consider touch block while moving?
-
- // Move item contents
- moveItemContents( vl, item, newItem );
-
- // clean up temporary item
- newItem.remove();
-
- // Move position, and set id
- item.css( 'top', toIdx * vl._line_h )
- .attr( 'id' , vl.options.itemIDPrefix + toIdx ); // TODO: refactor ID generation!
-
- // TODO: Apply jqmdata? check following old code;
- // $( oldItem ).removeData( ); // Clear old data
- // if (key) { $( oldItem ).data( key, $( newItem ).data( key ) ); }
-
- return true;
- }
}
// ==== function start ====
$( window ).bind( "resize.virtuallist", t._resize );
// when ul is a childselector, assume that this is also a swipelist,
- // and run swipelist constructor
+ // and run swipelist constructor
if ( o.childSelector == " ul" ) {
$( o.id + " ul" ).swipelist();
}