/* * Kendo UI v2011.3.1129 (http://kendoui.com) * Copyright 2011 Telerik AD. All rights reserved. * * Kendo UI commercial licenses may be obtained at http://kendoui.com/license. * If you do not own a commercial license, this file shall be governed by the * GNU General Public License (GPL) version 3. For GPL requirements, please * review: http://www.gnu.org/copyleft/gpl.html */ (function(a,b){function _(b,c){var d=a(b)[0].tBodies[0],e=d?d.rows:[],f,g,h,i=c.length,j=[],k,l,m,n;for(f=0,g=e.length;fc?1:ac?-1:0}},create:function(a){return I[a.dir.toLowerCase()](a.field)},combine:function(a){return function(b,c){var d=a[0](b,c),e,f;for(e=1,f=a.length;e",a,b,c)},gte:function(a,b,c){return d(">=",a,b,c)},lt:function(a,b,c){return d("<",a,b,c)},lte:function(a,b,c){return d("<=",a,b,c)},startswith:function(a,b,c){c&&(a=a+".toLowerCase()",b&&(b=b.toLowerCase()));return a+".lastIndexOf('"+b+"', 0) == 0"},endswith:function(a,b,c){c&&(a=a+".toLowerCase()",b&&(b=b.toLowerCase()));return a+".lastIndexOf('"+b+"') == "+a+".length - "+(b||"").length},contains:function(a,b,c){c&&(a=a+".toLowerCase()",b&&(b=b.toLowerCase()));return a+".indexOf('"+b+"') >= 0"}}}();K.normalizeFilter=O,K.filterExpr=function(a){var c=[],d={and:" && ",or:" || "},e,f,g,h,i=[],j=[],k,l,m=a.filters;for(e=0,f=m.length;e":"gt",isgreaterthan:"gt",greaterthan:"gt",greater:"gt",">=":"gte",isgreaterthanorequalto:"gte",greaterthanequal:"gte",ge:"gte"};K.prototype={toArray:function(){return this.data},range:function(a,b){return new K(this.data.slice(a,a+b))},skip:function(a){return new K(this.data.slice(a))},take:function(a){return new K(this.data.slice(0,a))},select:function(a){return new K(k(this.data,a))},orderBy:function(a){var b=this.data.slice(0),c=e(a)||!a?I.asc(a):a.compare;return new K(b.sort(c))},orderByDescending:function(a){return new K(this.data.slice(0).sort(I.desc(a)))},sort:function(a,b){var c,d,e=L(a,b),f=[];if(e.length){for(c=0,d=e.length;c0&&(e=a[0],d=d.groupBy(e).select(function(c){var d=(new K(b)).filter([{field:c.field,operator:"eq",value:c.value}]);return{field:c.field,value:c.value,items:a.length>1?(new K(c.items)).group(a.slice(1),d.toArray()).toArray():c.items,hasSubgroups:a.length>1,aggregates:d.aggregate(e.aggregates)}}));return d},groupBy:function(a){if(g(a)||!this.data.length)return new K([]);var b=a.field,c=this.sort(b,a.dir||"asc").toArray(),d=n.accessor(b),e,f=d.get(c[0],b),h={field:b,value:f,items:[]},i,j,k,l=[h];for(j=0,k=c.length;jd&&(a=d);return a}},V=p.extend({init:function(a){this.data=a.data},read:function(a){a.success(this.data)},update:function(a){a.success(a.data)},create:m,destory:m}),W=p.extend({init:function(a){var b=this,d;a=b.options=c({},b.options,a),l(D,function(b,c){typeof a[c]===s&&(a[c]={url:a[c]})}),b.cache=a.cache?X.create(a.cache):{find:m,add:m},d=a.parameterMap,b.parameterMap=e(d)?d:function(a){var b={};l(a,function(a,c){a in d&&(a=d[a],f(a)&&(c=a.value(c),a=a.key)),b[a]=c});return b}},options:{parameterMap:E},create:function(a){return j(this.setup(a,t))},read:function(c){var d=this,e,f,g,h=d.cache;c=d.setup(c,u),e=c.success||m,f=c.error||m,g=h.find(c.data),g!==b?e(g):(c.success=function(a){h.add(c.data,a),e(a)},a.ajax(c))},update:function(a){return j(this.setup(a,v))},destroy:function(a){return j(this.setup(a,w))},setup:function(a,b){a=a||{};var d=this,f=d.options[b],g=e(f.data)?f.data():f.data;a=c(!0,{},f,a),a.data=d.parameterMap(c(g,a.data),b);return a}});X.create=function(a){var b={inmemory:function(){return new X}};if(f(a)&&e(a.find))return a;if(a===!0)return new X;return b[a]()},X.prototype={add:function(a,c){a!==b&&(this._store[G(a)]=c)},find:function(a){return this._store[G(a)]},clear:function(){this._store={}},remove:function(a){delete this._store[G(a)]}};var Y=p.extend({init:function(a){var b=this,c,d;a=a||{};for(c in a)d=a[c],b[c]=typeof d===s?F(d):d;f(b.model)&&(b.model=q.define(b.model))},parse:E,data:E,total:function(a){return a.length},groups:E,status:function(a){return a.status},aggregates:function(){return{}}}),Z=o.extend({init:function(a){var d=this,f,h,i;a=d.options=c({},d.options,a),c(d,{_map:{},_prefetch:{},_data:[],_ranges:[],_view:[],_pageSize:a.pageSize,_page:a.page||(a.pageSize?1:b),_sort:L(a.sort),_filter:O(a.filter),_group:Q(a.group),_aggregate:a.aggregate}),o.fn.init.call(d),i=a.transport,i?(i.read=typeof i.read===s?{url:i.read}:i.read,a.type&&(i=c(!0,{},n.data.transports[a.type],i),a.schema=c(!0,{},n.data.schemas[a.type],a.schema)),d.transport=e(i.read)?i:new W(i)):d.transport=new V({data:a.data}),d.reader=new n.data.readers[a.schema.type||"json"](a.schema),h=d.reader.model||{},f=h.id,q&&!g(h)&&(d._set=new r({model:h,data:d._data,reader:d.reader,batch:a.batch,sendAllFields:a.sendAllFields,transport:d.transport,change:function(){var a=d.data();d._total=d.reader.total(a),d._process(a)},modelChange:function(a){d.trigger(y,a)},error:function(a){d.trigger(B,a)}})),f&&(d.id=function(a){return f(a)}),d.bind([B,x,t,w,v,C,y],a)},options:{data:[],schema:{},serverSorting:!1,serverPaging:!1,serverFiltering:!1,serverGrouping:!1,serverAggregates:!1,sendAllFields:!0,batch:!1},get:function(a){return this._set.get(a)},sync:function(){this._set.sync()},add:function(a){return this._set.add(a)},insert:function(a,b){return this._set.insert(a,b)},cancelChanges:function(){this._set.cancelChanges()},read:function(a){var b=this,c=b._params(a);b._queueRequest(c,function(){b.trigger(C),b._ranges=[],b.transport.read({data:c,success:d(b.success,b),error:d(b.error,b)})})},indexOf:function(a){return this._set.indexOf(a)},_params:function(a){var b=this;return c({take:b.take(),skip:b.skip(),page:b.page(),pageSize:b.pageSize(),sort:b._sort,filter:b._filter,group:b._group,aggregate:b._aggregate},a)},_queueRequest:function(a,c){var e=this;e._requestInProgress?e._pending={callback:d(c,e),options:a}:(e._requestInProgress=!0,e._pending=b,c())},_dequeueRequest:function(){var a=this;a._requestInProgress=!1,a._pending&&a._queueRequest(a._pending.options,a._pending.callback)},remove:function(a){this._set.remove(a)},error:function(){this.trigger(B,arguments)},success:function(a){var b=this,c={},d,e=b.options.serverGrouping===!0&&b._group&&b._group.length>0;a=b.reader.parse(a),b._total=b.reader.total(a),b._aggregate&&b.options.serverAggregates&&(b._aggregateResult=b.reader.aggregates(a)),e?a=b.reader.groups(a):a=b.reader.data(a),b._data=a,b._set&&b._set.data(a);var f=b._skip||0,g=f+a.length;b._ranges.push({start:f,end:g,data:a}),b._ranges.sort(function(a,b){return a.start-b.start}),b._dequeueRequest(),b._process(a)},_process:function(a){var c=this,d={},e,f=c.options.serverGrouping===!0&&c._group&&c._group.length>0;c.options.serverPaging!==!0&&(d.skip=c._skip,d.take=c._take||c._pageSize,d.skip===b&&c._page!==b&&c._pageSize!==b&&(d.skip=(c._page-1)*c._pageSize)),c.options.serverSorting!==!0&&(d.sort=c._sort),c.options.serverFiltering!==!0&&(d.filter=c._filter),c.options.serverGrouping!==!0&&(d.group=c._group),c.options.serverAggregates!==!0&&(d.aggregate=c._aggregate,c._aggregateResult=U(a,d)),e=T(a,d),c._view=e.data,e.total!==b&&!c.options.serverFiltering&&(c._total=e.total),c.trigger(x)},at:function(a){return this._data[a]},data:function(a){var c=this;if(a!==b)c._data=a,c._set&&c._set.data(a),c._process(a);else return c._data},view:function(){return this._view},query:function(a){var c=this,d,e=c.options.serverSorting||c.options.serverPaging||c.options.serverFiltering||c.options.serverGrouping||c.options.serverAggregates;a!==b&&(c._pageSize=a.pageSize,c._page=a.page,c._sort=a.sort,c._filter=a.filter,c._group=a.group,c._aggregate=a.aggregate,c._skip=a.skip,c._take=a.take,c._skip===b&&(c._skip=c.skip(),a.skip=c.skip()),c._take===b&&c._pageSize!==b&&(c._take=c._pageSize,a.take=c._take),a.sort&&(c._sort=a.sort=L(a.sort)),a.filter&&(c._filter=a.filter=O(a.filter)),a.group&&(c._group=a.group=Q(a.group)),a.aggregate&&(c._aggregate=a.aggregate=P(a.aggregate))),e||c._data===b||c._data.length==0?c.read(a):(c.trigger(C),d=T(c._data,a),c.options.serverFiltering||(d.total!==b?c._total=d.total:c._total=c.reader.total(c._data)),c._view=d.data,c._aggregateResult=U(c._data,a),c.trigger(x))},fetch:function(a){var b=this;a&&e(a)&&b.one(x,a),b._query()},_query:function(a){var b=this;b.query(c({},{page:b.page(),pageSize:b.pageSize(),sort:b.sort(),filter:b.filter(),group:b.group(),aggregate:b.aggregate()},a))},page:function(a){var c=this,d;if(a!==b)a=H.max(H.min(H.max(a,1),c.totalPages()),1),c._query({page:a});else{d=c.skip();return d!==b?H.round((d||0)/(c.take()||1))+1:b}},pageSize:function(a){var c=this;if(a!==b)c._query({pageSize:a});else return c.take()},sort:function(a){var c=this;if(a!==b)c._query({sort:a});else return c._sort},filter:function(a){var c=this;if(a===b)return c._filter;c._query({filter:a})},group:function(a){var c=this;if(a!==b)c._query({group:a});else return c._group},total:function(){return this._total},aggregate:function(a){var c=this;if(a!==b)c._query({aggregate:a});else return c._aggregate},aggregates:function(){return this._aggregateResult},totalPages:function(){var a=this,b=a.pageSize()||a.total();return H.ceil((a.total()||0)/b)},inRange:function(a,b){var c=this,d=H.min(a+b,c.total());if(!c.options.serverPaging&&c.data.length>0)return!0;return c._findRange(a,d).length>0},range:function(a,c){a=H.min(a||0,this.total());var d=this,e=H.max(H.floor(a/c),0)*c,f=H.min(e+c,d.total()),g;g=d._findRange(a,H.min(a+c,d.total()));if(g.length){d._skip=a>d.skip()?H.min(f,(d.totalPages()-1)*d.take()):e,d._take=c;var h=d.options.serverPaging;try{d.options.serverPaging=!0,d._process(g)}finally{d.options.serverPaging=h}}else c!==b&&(d._rangeExists(e,f)?ee&&f=f.start&&a<=f.end){var l=0;for(i=h;i=f.start&&l+l<=f.end){j=0,a+l>f.start&&(j=a+l-f.start),k=f.data.length,f.end>b&&(k=k-(f.end-b)),l+=k-j,g=g.concat(f.data.slice(j,k));if(b<=f.end&&l==b-a)return g}}break}}return[]},skip:function(){var a=this;if(a._skip===b)return a._page!==b?(a._page-1)*(a.take()||1):b;return a._skip},take:function(){var a=this;return a._take||a._pageSize},prefetch:function(a,b,c){var d=this,e=H.min(a+b,d.total()),f={start:a,end:e,data:[]},g={take:b,skip:a,page:a/b+1,pageSize:b,sort:d._sort,filter:d._filter,group:d._group,aggregate:d._aggregate};d._rangeExists(a,e)?c&&c():(clearTimeout(d._timeout),d._timeout=setTimeout(function(){d._queueRequest(g,function(){d.transport.read({data:g,success:function(b){d._dequeueRequest();var e=!1;for(var g=0,h=d._ranges.length;g=b)return!0;return!1}});Z.create=function(a){a=h(a)?{data:a}:a;var b=a||{},c=b.data,d=b.fields,e=b.table,f=b.select;!c&&d&&!b.transport&&(e?c=_(e,d):f&&(c=$(f,d))),b.data=c;return b instanceof Z?b:new Z(b)},c(!0,n.data,{readers:{json:Y},Query:K,DataSource:Z,LocalTransport:V,RemoteTransport:W,Cache:X,DataReader:Y})})(jQuery)