| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | <!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-ux-data-PagingMemoryProxy'>/**</span> * @class Ext.ux.data.PagingMemoryProxy * @extends Ext.data.proxy.Memory * <p>Paging Memory Proxy, allows to use paging grid with in memory dataset</p> */Ext.define('Ext.ux.data.PagingMemoryProxy', {    extend: 'Ext.data.proxy.Memory',    alias: 'proxy.pagingmemory',    alternateClassName: 'Ext.data.PagingMemoryProxy',    read : function(operation, callback, scope){        var reader = this.getReader(),            result = reader.read(this.data),            sorters, filters, sorterFn, records;        scope = scope || this;        // filtering        filters = operation.filters;        if (filters.length > 0) {            //at this point we have an array of  Ext.util.Filter objects to filter with,            //so here we construct a function that combines these filters by ANDing them together            records = [];            Ext.each(result.records, function(record) {                var isMatch = true,                    length = filters.length,                    i;                for (i = 0; i < length; i++) {                    var filter = filters[i],                        fn     = filter.filterFn,                        scope  = filter.scope;                    isMatch = isMatch && fn.call(scope, record);                }                if (isMatch) {                    records.push(record);                }            }, this);            result.records = records;            result.totalRecords = result.total = records.length;        }                // sorting        sorters = operation.sorters;        if (sorters.length > 0) {            //construct an amalgamated sorter function which combines all of the Sorters passed            sorterFn = function(r1, r2) {                var result = sorters[0].sort(r1, r2),                    length = sorters.length,                    i;                                    //if we have more than one sorter, OR any additional sorter functions together                    for (i = 1; i < length; i++) {                        result = result || sorters[i].sort.call(this, r1, r2);                    }                                               return result;            };                result.records.sort(sorterFn);        }                // paging (use undefined cause start can also be 0 (thus false))        if (operation.start !== undefined && operation.limit !== undefined) {            result.records = result.records.slice(operation.start, operation.start + operation.limit);            result.count = result.records.length;        }        Ext.apply(operation, {            resultSet: result        });                operation.setCompleted();        operation.setSuccessful();        Ext.Function.defer(function () {            Ext.callback(callback, scope, [operation]);        }, 10);    }});</pre></body></html>
 |