10 lines
3.6 KiB
JavaScript
10 lines
3.6 KiB
JavaScript
//>>built
|
|
define("dstore/Trackable","dojo/_base/lang dojo/_base/declare dojo/aspect dojo/when dojo/promise/all dojo/_base/array dojo/on".split(" "),function(C,y,G,A,p,D,H){function E(g,k,t){for(var q=g.length-1;0<=q;--q){var m=g[q],x=m.start,m=x+m.count;if(k>m){g.splice(q+1,0,{start:k,count:t-k});return}t>=x&&(k=Math.min(k,x),t=Math.max(t,m),g.splice(q,1))}g.unshift({start:k,count:t-k})}var I=0,B={track:function(){function g(){return function(){var b=this,a=this.inherited(arguments);A(a,function(a){a=b._results=
|
|
a.slice();b._partialResults&&(b._partialResults=null);b._ranges=[];E(b._ranges,0,a.length)});return a}}function k(){return function(b){var a=this,f=b.start,e=b.end,c=this.inherited(arguments);this._results||A(c,function(c){return A(c.totalLength,function(b){var d=a._partialResults||(a._partialResults=[]);e=Math.min(e,f+c.length);d.length=b;b=[f,e-f].concat(c);d.splice.apply(d,b);E(a._ranges,f,e);return c})});return c}}function t(b,a){I++;var f=a.target;a=C.delegate(a,B[b]);A(r._results||r._partialResults,
|
|
function(e){if(e){var c,d,g,l=r._ranges,h,k="id"in a?a.id:q.getIdentity(f),m=-1,u=-1,n=-1,v=-1;if("delete"===b||"update"===b)for(c=0;-1===m&&c<l.length;++c)for(h=l[c],d=h.start,g=d+h.count;d<g;++d)if(q.getIdentity(e[d])==k){m=a.previousIndex=d;u=c;e.splice(m,1);h.count--;for(d=c+1;d<l.length;++d)l[d].start--;break}if("add"===b||"update"===b){if(z){if(z([f]).length){var w=0;g=l.length-1;d=-1;for(var p;w<=g&&-1===n;)c=w+Math.round((g-w)/2),h=l[c],u=e.slice(h.start,h.start+h.count),"beforeId"in a&&(d=
|
|
null===a.beforeId?u.length:F(u,a.beforeId)),-1===d&&(d=m>=Math.max(0,h.start-1)&&m<=h.start+h.count?m:q.defaultNewToStart?0:u.length),u.splice(d,0,f),k=D.indexOf(z(u),f),p=h.start+k,0===k&&0!==h.start?g=c-1:k>=u.length-1&&p<e.length?w=c+1:(n=p,v=c);if(-1===n&&0<w&&w<l.length)var t=!0}}else{d=-1;if("beforeId"in a)if(null===a.beforeId)n=e.length,d=l.length-1;else for(c=0,g=l.length;-1===v&&c<g;++c)h=l[c],n=F(e,a.beforeId,h.start,h.start+h.count),-1!==n&&(v=c);else"update"===b?(n=m,v=u):q.defaultNewToStart?
|
|
d=n=0:(n=e.length,d=l.length-1);-1!==d&&-1===v&&(h=l[d])&&h.start<=n&&n<=h.start+h.count&&(v=d)}if(-1<n&&-1<v)for(a.index=n,e.splice(n,0,f),l[v].count++,c=v+1;c<l.length;++c)l[c].start++;else if(t)for(a.beforeIndex=l[w].start,c=w;c<l.length;++c)l[c].start++}a.totalLength=e.length}(e=r["on_tracked"+b])&&e.call(r,a)})}var q=this.store||this,m=[],x={add:1,update:1,"delete":1},p;for(p in x)m.push(this.on(p,function(b){return function(a){t(b,a)}}(p)));var r=y.safeMixin(C.delegate(this),{_ranges:[],fetch:g(),
|
|
fetchRange:k(),releaseRange:function(b,a){if(this._partialResults){a:for(var f=this._ranges,e=0,c;c=f[e];++e){var d=c.start,g=d+c.count;if(b<=d)if(a>=g)f.splice(e,1);else{c.start=a;c.count=g-c.start;break a}else if(b<g)if(a>d){f.splice(e,1,{start:d,count:b-d},{start:a,count:g-a});break a}else c.count=b-c.start}for(;b<a;++b)delete this._partialResults[b]}},on:function(b,a){var f=this,e=this.getInherited(arguments);return H.parse(r,b,a,function(c,b){return b in x?G.after(r,"on_tracked"+b,a,!0):e.call(f,
|
|
b,a)})},tracking:{remove:function(){for(;0<m.length;)m.pop().remove();this.remove=function(){}}},track:null});this.fetchSync&&(y.safeMixin(r,{fetchSync:g(),fetchRangeSync:k()}),r.fetchSync());var z;D.forEach(this.queryLog,function(b){var a=z,f=b.querier;f&&(z=a?function(b){return f(a(b))}:f)});var B={add:{index:void 0},update:{previousIndex:void 0,index:void 0},"delete":{previousIndex:void 0}},F=function(b,a,f,e){e=void 0!==e?e:b.length;for(f=void 0!==f?f:0;f<e;++f)if(q.getIdentity(b[f])===a)return f;
|
|
return-1};return r}};p=y(null,B);p.create=function(g,k){g=y.safeMixin(C.delegate(g),B);y.safeMixin(g,k);return g};return p});
|
|
//# sourceMappingURL=Trackable.js.map
|