| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | <!DOCTYPE html><html><head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>The source code</title>  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>  <style type="text/css">    .highlight { display: block; background-color: #ddd; }  </style>  <script type="text/javascript">    function highlight() {      document.getElementById(location.hash.replace(/#/, "")).className = "highlight";    }  </script></head><body onload="prettyPrint(); highlight();">  <pre class="prettyprint lang-js"><span id='Ext-grid-feature-Chunking'>/**</span> * */Ext.define('Ext.grid.feature.Chunking', {    extend: 'Ext.grid.feature.Feature',    alias: 'feature.chunking',    chunkSize: 20,    rowHeight: Ext.isIE ? 27 : 26,    visibleChunk: 0,    hasFeatureEvent: false,    attachEvents: function() {        this.view.el.on('scroll', this.onBodyScroll, this, {buffer: 300});    },    onBodyScroll: function(e, t) {        var view = this.view,            top  = t.scrollTop,            nextChunk = Math.floor(top / this.rowHeight / this.chunkSize);        if (nextChunk !== this.visibleChunk) {            this.visibleChunk = nextChunk;            view.refresh();            view.el.dom.scrollTop = top;            //BrowserBug: IE6,7,8 quirks mode takes setting scrollTop 2x.            view.el.dom.scrollTop = top;        }    },    collectData: function(records, preppedRecords, startIndex, fullWidth, o) {        //headerCt = this.view.headerCt,        //colums = headerCt.getColumnsForTpl(),        var me = this,            recordCount = o.rows.length,            start = 0,            i = 0,            visibleChunk = me.visibleChunk,            rows,            chunkLength,            origRows = o.rows;        delete o.rows;        o.chunks = [];        for (; start < recordCount; start += me.chunkSize, i++) {            if (start + me.chunkSize > recordCount) {                chunkLength = recordCount - start;            } else {                chunkLength = me.chunkSize;            }                        if (i >= visibleChunk - 1 && i <= visibleChunk + 1) {                rows = origRows.slice(start, start + me.chunkSize);            } else {                rows = [];            }            o.chunks.push({                rows: rows,                fullWidth: fullWidth,                chunkHeight: chunkLength * me.rowHeight            });        }        return o;    },    getTableFragments: function() {        return {            openTableWrap: function() {                return '<tpl for="chunks"><div class="' + Ext.baseCSSPrefix + 'grid-chunk" style="height: {chunkHeight}px;">';            },            closeTableWrap: function() {                return '</div></tpl>';            }        };    }});</pre></body></html>
 |