OSDN Git Service

Version 0.6.168, fix X.UI.Repeater.
[pettanr/clientJs.git] / 0.6.x / js / 20_ui / 16_Repeater.js
index e709360..6deacef 100644 (file)
@@ -7,19 +7,14 @@ var XUI_Repeater = XUI_Box.inherits(
        '_Repeater',\r
        X_Class.NONE,\r
        {\r
-               layout       : XUI_Layout_Vertical,\r
+               layout           : XUI_Layout_Vertical,\r
                \r
-               dataSource   : null, // Array.<object>, Array.<ItemData>\r
+               dataSource       : null, // Array.<object>, Array.<ItemData>\r
                \r
                itemRenderer     : null,\r
                \r
                itemNodes        : null,\r
-               \r
-               startIndex       : 0,\r
-               startRenderIndex : 0,\r
-               numItemsParPage  : 0,\r
-               numItemsPrev     : 0,\r
-               numItems         : 0,\r
+\r
                itemHeightLast   : 0,\r
                itemHeightLastEM : 0,\r
                \r
@@ -33,8 +28,6 @@ var XUI_Repeater = XUI_Box.inherits(
                \r
                initialize : function(){\r
                        XUI_AbstractUINode.prototype.initialize.apply( this, arguments );\r
-                       \r
-                       this.parent[ 'listen' ]( XUI_Event.SCROLL_END, this );\r
                },\r
                \r
                /*\r
@@ -44,9 +37,6 @@ var XUI_Repeater = XUI_Box.inherits(
                        var dataSource = this[ 'dataSource' ];\r
 \r
                        if( allowedW + allowedH === XUI_Attr_AUTO ) return false;\r
-               \r
-                       this.scrollPortWidth  = allowedW;\r
-                       this.scrollPortHeight = allowedH;                       \r
                        \r
                        this.preMesure( allowedW, allowedH );\r
                        \r
@@ -67,54 +57,8 @@ var XUI_Repeater = XUI_Box.inherits(
                },\r
                \r
                handleEvent : function( e ){\r
-                       var scrollBox, scrollY, dataSource, offsetY, startIndex, maxIndex, offset, itemNodes, ary, i, l;\r
-                       \r
                        switch( e.type ){\r
-                               case XUI_Event.SCROLL_END :\r
-                                       scrollBox  = this.parentData;\r
-                                       scrollY    = - scrollBox.scrollY;\r
-                                       dataSource = this[ 'dataSource' ];\r
-                                       itemNodes  = this.itemNodes;\r
-                                       itemH      = this.itemHeightLast;\r
-                                       \r
-                                       // transition Y を 0 付近に。\r
-                               \r
-                                       \r
-                                       // startIndex の計算\r
-                                       startIndex = scrollY / itemH | 0;\r
-                                       \r
-                                       /*maxIndex   = dataSource.length <= this.numItems ? 0 : dataSource.length - this.numItems;\r
-                                       console.log( ' >>> ' + startIndex + ' ' + maxIndex );\r
-                                       \r
-                                       startIndex =\r
-                                               startIndex < 0 ? 0 :\r
-                                               maxIndex < startIndex ? maxIndex : startIndex; */\r
-                                       // アイテムの座標の修正とレンジ外のアイテムを配列内で再配置\r
-                                       offset = startIndex - this.startIndex; // visible な stratIndex renderStartIndex\r
-                                       this.startIndex = startIndex;\r
-                                       \r
-                                       console.log(  this.numItemsPrev + ' oo ' + offset )\r
-                                       \r
-                                       if( 0 < offset ){\r
-                                               itemNodes.push.apply( itemNodes, itemNodes.splice( 0, offset ) );\r
-                                       } else\r
-                                       if( offset < - 0 ){\r
-                                               itemNodes.unshift.apply( itemNodes, itemNodes.splice( itemNodes.length + offset ) );\r
-                                       };\r
-\r
-                                       // 再配置されたアイテムにitemData のセット\r
-                                       this.updateItemRenderer( this.contentWidth, this.scrollPortHeight );\r
-                                       \r
-                                       \r
-                                       \r
-                                       offsetY  = scrollY % itemH;\r
-                                       offsetY  = offsetY === 0 ? 0 : ( offsetY - itemH );\r
-                                       offsetY += ( this.startRenderIndex - this.startIndex ) * itemH;\r
-                                       //console.log( ' ====> ' + this.startRenderIndex + ' -> ' + this.startIndex + ' scrollY:' + offsetY );\r
 \r
-                                       //scrollBox.scrollTo( 0, - scrollY, 0, '', 0 ); // anime無し                                                  \r
-                                       //console.log( '  <==== ' );\r
-                                       break;\r
                        };\r
                },\r
                \r
@@ -123,19 +67,14 @@ var XUI_Repeater = XUI_Box.inherits(
                                attrs      = this.attrObject || this.attrClass.prototype,\r
                                gapY       = XUI_AbstractUINode_calcValue( attrs[ this.usableAttrs.gapY.No ], _w ),\r
                                dataSource = this[ 'dataSource' ],\r
-                               render     = this[ 'itemRenderer' ],\r
+                               renderer   = this[ 'itemRenderer' ],\r
                                l          = dataSource.length,\r
-                               start      = this.startIndex - this.numItemsPrev,\r
                                itemH      = this.itemHeightLastEM,\r
-                               i, data, node, _y = 0, last, n;\r
-                       \r
-                       i = this.startRenderIndex = start = start < 0 ? 0 : start;\r
-                       \r
-                       _y = ( itemH + gapY ) * i;\r
+                               i = 0, data, node, _y = 0, last, n;\r
                        \r
                        for( ; i < l; ++i ){\r
                                if( !( data = itemNodes[ i ] ) ){\r
-                                       node = render.clone( true );\r
+                                       node = renderer.clone( true );\r
                                        this.addAt( i, [ node ] );\r
                                        data = itemNodes[ i ] = X_Pair_get( node );\r
                                        // init -> addToParent -> creationComplete\r
@@ -146,17 +85,10 @@ var XUI_Repeater = XUI_Box.inherits(
                                _y += ( itemH || data.boxHeight ) + gapY;\r
                                \r
                                // 一番最初のループ。ここでページあたりのアイテム数を計算\r
-                               if( !itemH && i === start ){\r
+                               if( !itemH && i === 0 ){\r
                                        itemH = _y - gapY;\r
                                        this.itemHeightLastEM = itemH;\r
-                                       this.itemHeightLast   = itemH * X_ViewPort_baseFontSize,\r
-                                       // scroller の miniHeight は(例えば)親の高さの300% そこにいくつのアイテムを並べることが出来るか?端数切り上げ\r
-                                       this.numItemsParPage = _h / itemH + 0.999 | 0;\r
-                                       n    = this.numItems = ( _h * 3 ) / itemH + 0.999 | 0; // TODO boxHeight\r
-                                       this.numItemsPrev    = ( this.numItems - this.numItemsParPage ) / 2 | 0;\r
-                                       last = i + n;\r
-                                       // データの最後まで、または、開始位置から 3ページ分を生成する\r
-                                       l    = last < l ? last : l;\r
+                                       this.itemHeightLast   = itemH * X_ViewPort_baseFontSize;\r
                                };\r
                        };\r
                        \r
@@ -165,7 +97,7 @@ var XUI_Repeater = XUI_Box.inherits(
                        };\r
                        \r
                        // TODO contentHeight は attr を無視する -> 未表示領域につくるアイテム数 GPU の有無で変わる\r
-                       this.contentHeight = dataSource.length * ( itemH + gapY ) - gapY;\r
+                       this.contentHeight = l * ( itemH + gapY ) - gapY;\r
                },\r
                \r
                onPropertyChange : function( name, newValue ){\r