Clean up slickgrid - version 2.2 and only version 2.2

This commit is contained in:
Matt Fullerton 2015-05-11 21:32:12 +02:00
parent a9adae2055
commit bb575fcbb9
82 changed files with 5815 additions and 3545 deletions

View File

@ -1,16 +0,0 @@
This compiled version of SlickGrid has been obtained with the Google Closure
Compiler, using the following command:
java -jar compiler.jar --js=slick.core.js --js=slick.grid.js --js=slick.editors.js --js_output_file=slick.grid.min.js
There are two other files required for the SlickGrid view to work properly:
* jquery-ui-1.8.16.custom.min.js
* jquery.event.drag-2.0.min.js
These are included in the Recline source, but have not been included in the
built file to make easier to handle compatibility problems.
Please check SlickGrid license in the included MIT-LICENSE.txt file.
[1] https://developers.google.com/closure/compiler/

View File

@ -1,6 +0,0 @@
/*!
* jquery.event.drag - v 2.0.0
* Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
* Open Source MIT License - http://threedubmedia.com/code/license
*/
;(function(f){f.fn.drag=function(b,a,d){var e=typeof b=="string"?b:"",k=f.isFunction(b)?b:f.isFunction(a)?a:null;if(e.indexOf("drag")!==0)e="drag"+e;d=(b==k?a:d)||{};return k?this.bind(e,d,k):this.trigger(e)};var i=f.event,h=i.special,c=h.drag={defaults:{which:1,distance:0,not:":input",handle:null,relative:false,drop:true,click:false},datakey:"dragdata",livekey:"livedrag",add:function(b){var a=f.data(this,c.datakey),d=b.data||{};a.related+=1;if(!a.live&&b.selector){a.live=true;i.add(this,"draginit."+ c.livekey,c.delegate)}f.each(c.defaults,function(e){if(d[e]!==undefined)a[e]=d[e]})},remove:function(){f.data(this,c.datakey).related-=1},setup:function(){if(!f.data(this,c.datakey)){var b=f.extend({related:0},c.defaults);f.data(this,c.datakey,b);i.add(this,"mousedown",c.init,b);this.attachEvent&&this.attachEvent("ondragstart",c.dontstart)}},teardown:function(){if(!f.data(this,c.datakey).related){f.removeData(this,c.datakey);i.remove(this,"mousedown",c.init);i.remove(this,"draginit",c.delegate);c.textselect(true); this.detachEvent&&this.detachEvent("ondragstart",c.dontstart)}},init:function(b){var a=b.data,d;if(!(a.which>0&&b.which!=a.which))if(!f(b.target).is(a.not))if(!(a.handle&&!f(b.target).closest(a.handle,b.currentTarget).length)){a.propagates=1;a.interactions=[c.interaction(this,a)];a.target=b.target;a.pageX=b.pageX;a.pageY=b.pageY;a.dragging=null;d=c.hijack(b,"draginit",a);if(a.propagates){if((d=c.flatten(d))&&d.length){a.interactions=[];f.each(d,function(){a.interactions.push(c.interaction(this,a))})}a.propagates= a.interactions.length;a.drop!==false&&h.drop&&h.drop.handler(b,a);c.textselect(false);i.add(document,"mousemove mouseup",c.handler,a);return false}}},interaction:function(b,a){return{drag:b,callback:new c.callback,droppable:[],offset:f(b)[a.relative?"position":"offset"]()||{top:0,left:0}}},handler:function(b){var a=b.data;switch(b.type){case !a.dragging&&"mousemove":if(Math.pow(b.pageX-a.pageX,2)+Math.pow(b.pageY-a.pageY,2)<Math.pow(a.distance,2))break;b.target=a.target;c.hijack(b,"dragstart",a); if(a.propagates)a.dragging=true;case "mousemove":if(a.dragging){c.hijack(b,"drag",a);if(a.propagates){a.drop!==false&&h.drop&&h.drop.handler(b,a);break}b.type="mouseup"}case "mouseup":i.remove(document,"mousemove mouseup",c.handler);if(a.dragging){a.drop!==false&&h.drop&&h.drop.handler(b,a);c.hijack(b,"dragend",a)}c.textselect(true);if(a.click===false&&a.dragging){jQuery.event.triggered=true;setTimeout(function(){jQuery.event.triggered=false},20);a.dragging=false}break}},delegate:function(b){var a= [],d,e=f.data(this,"events")||{};f.each(e.live||[],function(k,j){if(j.preType.indexOf("drag")===0)if(d=f(b.target).closest(j.selector,b.currentTarget)[0]){i.add(d,j.origType+"."+c.livekey,j.origHandler,j.data);f.inArray(d,a)<0&&a.push(d)}});if(!a.length)return false;return f(a).bind("dragend."+c.livekey,function(){i.remove(this,"."+c.livekey)})},hijack:function(b,a,d,e,k){if(d){var j={event:b.originalEvent,type:b.type},n=a.indexOf("drop")?"drag":"drop",l,o=e||0,g,m;e=!isNaN(e)?e:d.interactions.length; b.type=a;b.originalEvent=null;d.results=[];do if(g=d.interactions[o])if(!(a!=="dragend"&&g.cancelled)){m=c.properties(b,d,g);g.results=[];f(k||g[n]||d.droppable).each(function(q,p){l=(m.target=p)?i.handle.call(p,b,m):null;if(l===false){if(n=="drag"){g.cancelled=true;d.propagates-=1}if(a=="drop")g[n][q]=null}else if(a=="dropinit")g.droppable.push(c.element(l)||p);if(a=="dragstart")g.proxy=f(c.element(l)||g.drag)[0];g.results.push(l);delete b.result;if(a!=="dropinit")return l});d.results[o]=c.flatten(g.results); if(a=="dropinit")g.droppable=c.flatten(g.droppable);a=="dragstart"&&!g.cancelled&&m.update()}while(++o<e);b.type=j.type;b.originalEvent=j.event;return c.flatten(d.results)}},properties:function(b,a,d){var e=d.callback;e.drag=d.drag;e.proxy=d.proxy||d.drag;e.startX=a.pageX;e.startY=a.pageY;e.deltaX=b.pageX-a.pageX;e.deltaY=b.pageY-a.pageY;e.originalX=d.offset.left;e.originalY=d.offset.top;e.offsetX=b.pageX-(a.pageX-e.originalX);e.offsetY=b.pageY-(a.pageY-e.originalY);e.drop=c.flatten((d.drop||[]).slice()); e.available=c.flatten((d.droppable||[]).slice());return e},element:function(b){if(b&&(b.jquery||b.nodeType==1))return b},flatten:function(b){return f.map(b,function(a){return a&&a.jquery?f.makeArray(a):a&&a.length?c.flatten(a):a})},textselect:function(b){f(document)[b?"unbind":"bind"]("selectstart",c.dontstart).attr("unselectable",b?"off":"on").css("MozUserSelect",b?"":"none")},dontstart:function(){return false},callback:function(){}};c.callback.prototype={update:function(){h.drop&&this.available.length&& f.each(this.available,function(b){h.drop.locate(this,b)})}};h.draginit=h.dragstart=h.dragend=c})(jQuery);

View File

@ -1,94 +0,0 @@
(function(c){function g(){var d=!1,c=!1;this.stopPropagation=function(){d=!0};this.isPropagationStopped=function(){return d};this.stopImmediatePropagation=function(){c=!0};this.isImmediatePropagationStopped=function(){return c}}function e(){this.__nonDataRow=!0}function i(){this.__group=!0;this.__updated=!1;this.count=0;this.title=this.value=null;this.collapsed=!1;this.totals=null}function j(){this.__groupTotals=!0;this.group=null}function h(){var d=null;this.isActive=function(c){return c?d===c:null!==
d};this.activate=function(c){if(c!==d){if(null!==d)throw"SlickGrid.EditorLock.activate: an editController is still active, can't activate another editController";if(!c.commitCurrentEdit)throw"SlickGrid.EditorLock.activate: editController must implement .commitCurrentEdit()";if(!c.cancelCurrentEdit)throw"SlickGrid.EditorLock.activate: editController must implement .cancelCurrentEdit()";d=c}};this.deactivate=function(c){if(d!==c)throw"SlickGrid.EditorLock.deactivate: specified editController is not the currently active one";
d=null};this.commitCurrentEdit=function(){return d?d.commitCurrentEdit():!0};this.cancelCurrentEdit=function(){return d?d.cancelCurrentEdit():!0}}c.extend(!0,window,{Slick:{Event:function(){var d=[];this.subscribe=function(c){d.push(c)};this.unsubscribe=function(c){for(var h=d.length-1;0<=h;h--)d[h]===c&&d.splice(h,1)};this.notify=function(c,h,e){for(var h=h||new g,e=e||this,j,i=0;i<d.length&&!h.isPropagationStopped()&&!h.isImmediatePropagationStopped();i++)j=d[i].call(e,h,c);return j}},EventData:g,
EventHandler:function(){var d=[];this.subscribe=function(c,h){d.push({event:c,handler:h});c.subscribe(h)};this.unsubscribe=function(c,h){for(var e=d.length;e--;)if(d[e].event===c&&d[e].handler===h){d.splice(e,1);c.unsubscribe(h);break}};this.unsubscribeAll=function(){for(var c=d.length;c--;)d[c].event.unsubscribe(d[c].handler);d=[]}},Range:function(d,c,h,e){void 0===h&&void 0===e&&(h=d,e=c);this.fromRow=Math.min(d,h);this.fromCell=Math.min(c,e);this.toRow=Math.max(d,h);this.toCell=Math.max(c,e);this.isSingleRow=
function(){return this.fromRow==this.toRow};this.isSingleCell=function(){return this.fromRow==this.toRow&&this.fromCell==this.toCell};this.contains=function(d,c){return d>=this.fromRow&&d<=this.toRow&&c>=this.fromCell&&c<=this.toCell};this.toString=function(){return this.isSingleCell()?"("+this.fromRow+":"+this.fromCell+")":"("+this.fromRow+":"+this.fromCell+" - "+this.toRow+":"+this.toCell+")"}},NonDataRow:e,Group:i,GroupTotals:j,EditorLock:h,GlobalEditorLock:new h}});i.prototype=new e;i.prototype.equals=
function(d){return this.value===d.value&&this.count===d.count&&this.collapsed===d.collapsed};j.prototype=new e})(jQuery);/*
(c) 2009-2012 Michael Leibman
michael{dot}leibman{at}gmail{dot}com
http://github.com/mleibman/slickgrid
Distributed under MIT license.
All rights reserved.
SlickGrid v2.0
NOTES:
Cell/row DOM manipulations are done directly bypassing jQuery's DOM manipulation methods.
This increases the speed dramatically, but can only be done safely because there are no event handlers
or data associated with any cell/row DOM nodes. Cell editors must make sure they implement .destroy()
and do proper cleanup.
*/
if("undefined"===typeof jQuery)throw"SlickGrid requires jquery module to be loaded";if(!jQuery.fn.drag)throw"SlickGrid requires jquery.event.drag module to be loaded";if("undefined"===typeof Slick)throw"slick.core.js not loaded";
(function(c){c.extend(!0,window,{Slick:{Grid:function(i,j,h,d){function ib(){if(!I){I=!0;V=parseFloat(c.css(r[0],"width",!0));var a,b=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"];a=c("<div class='ui-state-default slick-header-column' style='visibility:hidden'>-</div>").appendTo(s);W=Ka=0;c.each(b,function(b,f){W+=parseFloat(a.css(f))||0});c.each(f,function(b,f){Ka+=parseFloat(a.css(f))||0});a.remove();var p=
c("<div class='slick-row' />").appendTo(C);a=c("<div class='slick-cell' id='' style='visibility:hidden'>-</div>").appendTo(p);ta=ua=0;c.each(b,function(b,f){ta+=parseFloat(a.css(f))||0});c.each(f,function(b,f){ua+=parseFloat(a.css(f))||0});p.remove();P=Math.max(W,ta);s&&s.jquery&&s.attr("unselectable","on").css("MozUserSelect","none").bind("selectstart.ui",function(){return!1});d.enableTextSelectionOnCells||t.bind("selectstart.ui",function(a){return c(a.target).is("input,textarea")});kb();s.click(function(a){a.metaKey=
a.metaKey||a.ctrlKey;if(!c(a.target).hasClass("slick-resizable-handle")){var b=c(a.target).closest(".slick-header-column");if(b.length&&(b=h[La(b.data("fieldId"))],b.sortable&&u().commitCurrentEdit())){for(var f=null,p=0;p<y.length;p++)if(y[p].columnId==b.id){f=y[p];f.sortAsc=!f.sortAsc;break}if(a.metaKey&&d.multiColumnSort)f&&y.splice(p,1);else{if(!a.shiftKey&&!a.metaKey||!d.multiColumnSort)y=[];f?0==y.length&&y.push(f):(f={columnId:b.id,sortAsc:!0},y.push(f))}va(y);d.multiColumnSort?m(l.onSort,
{multiColumnSort:!0,sortCols:c.map(y,function(a){return{sortCol:h[J[a.columnId]],sortAsc:a.sortAsc}})},a):m(l.onSort,{multiColumnSort:!1,sortCol:b,sortAsc:f.sortAsc},a)}}});mb();L();for(b=C[0];(b=b.parentNode)!=document.body&&null!=b;)(b==t[0]||b.scrollWidth!=b.clientWidth||b.scrollHeight!=b.clientHeight)&&c(b).bind("scroll.slickgrid",nb);r.bind("resize.slickgrid",L);t.bind("scroll.slickgrid",ob);ca.bind("contextmenu.slickgrid",Wb).bind("click.slickgrid",Xb);Ma.bind("keydown.slickgrid",pb);C.bind("keydown.slickgrid",
pb).bind("click.slickgrid",Yb).bind("dblclick.slickgrid",Zb).bind("contextmenu.slickgrid",$b).bind("draginit",ac).bind("dragstart",bc).bind("drag",cc).bind("dragend",dc).delegate(".slick-cell","mouseenter",ec).delegate(".slick-cell","mouseleave",fc)}}function jb(a){for(var b=Q.length;0<=b;b--)if(Q[b]===a){Q[b].destroy&&Q[b].destroy();Q.splice(b,1);break}}function Ja(a){for(var b=R,f=na?V-g.width:V,p=0,c=h.length;c--;)p+=h[c].width||Na.width;R=d.fullWidthRows?Math.max(p,f):p;R!=b&&(C.width(R),da.width(R),
qb=R>V-g.width);(R!=b||a)&&Oa()}function kb(){function a(){c(this).addClass("ui-state-hover")}function b(){c(this).removeClass("ui-state-hover")}s.empty();da.empty();J={};for(var f=0;f<h.length;f++){var p=h[f]=c.extend({},Na,h[f]);J[p.id]=f;var e=c("<div class='ui-state-default slick-header-column' id='"+F+p.id+"' />").html("<span class='slick-column-name'>"+p.name+"</span>").width(p.width-W).attr("title",p.toolTip||p.name||"").data("fieldId",p.id).addClass(p.headerCssClass||"").appendTo(s);(d.enableColumnReorder||
p.sortable)&&e.hover(a,b);p.sortable&&e.append("<span class='slick-sort-indicator' />");d.showHeaderRow&&c("<div class='ui-state-default slick-headerrow-column l"+f+" r"+f+"'></div>").appendTo(da)}d.showHeaderRow&&c("<div style='display:block;height:1px;width:10000px;position:absolute;top:0;left:0;'></div>").appendTo(S);va(y);lb();d.enableColumnReorder&&s.sortable({containment:"parent",axis:"x",cursor:"default",tolerance:"intersection",helper:"clone",placeholder:"slick-sortable-placeholder ui-state-default slick-header-column",
forcePlaceholderSize:!0,start:function(a,b){c(b.helper).addClass("slick-header-column-active")},beforeStop:function(a,b){c(b.helper).removeClass("slick-header-column-active")},stop:function(a){if(u().commitCurrentEdit()){for(var b=s.sortable("toArray"),f=[],d=0;d<b.length;d++)f.push(h[La(b[d].replace(F,""))]);rb(f);m(l.onColumnsReordered,{});a.stopPropagation();lb()}else c(this).sortable("cancel")}})}function lb(){var a,b,f,p,e,j,i,g;p=s.children();p.find(".slick-resizable-handle").remove();p.each(function(a){h[a].resizable&&
(void 0===i&&(i=a),g=a)});void 0!==i&&p.each(function(k,n){k<i||d.forceFitColumns&&k>=g||(c(n),c("<div class='slick-resizable-handle' />").appendTo(n).bind("dragstart",function(i){if(!u().commitCurrentEdit())return!1;f=i.pageX;c(this).parent().addClass("slick-header-column-active");var g=i=null;p.each(function(a,b){h[a].previousWidth=c(b).outerWidth()});if(d.forceFitColumns){g=i=0;for(a=k+1;a<p.length;a++)b=h[a],b.resizable&&(null!==g&&(g=b.maxWidth?g+(b.maxWidth-b.previousWidth):null),i+=b.previousWidth-
Math.max(b.minWidth||0,P))}var oa=0,l=0;for(a=0;a<=k;a++)b=h[a],b.resizable&&(null!==l&&(l=b.maxWidth?l+(b.maxWidth-b.previousWidth):null),oa+=b.previousWidth-Math.max(b.minWidth||0,P));null===i&&(i=1E5);null===oa&&(oa=1E5);null===g&&(g=1E5);null===l&&(l=1E5);j=f+Math.min(i,l);e=f-Math.min(oa,g)}).bind("drag",function(c){var i=Math.min(j,Math.max(e,c.pageX))-f,g;if(0>i){g=i;for(a=k;0<=a;a--)b=h[a],b.resizable&&(c=Math.max(b.minWidth||0,P),g&&b.previousWidth+g<c?(g+=b.previousWidth-c,b.width=c):(b.width=
b.previousWidth+g,g=0));if(d.forceFitColumns){g=-i;for(a=k+1;a<p.length;a++)b=h[a],b.resizable&&(g&&b.maxWidth&&b.maxWidth-b.previousWidth<g?(g-=b.maxWidth-b.previousWidth,b.width=b.maxWidth):(b.width=b.previousWidth+g,g=0))}}else{g=i;for(a=k;0<=a;a--)b=h[a],b.resizable&&(g&&b.maxWidth&&b.maxWidth-b.previousWidth<g?(g-=b.maxWidth-b.previousWidth,b.width=b.maxWidth):(b.width=b.previousWidth+g,g=0));if(d.forceFitColumns){g=-i;for(a=k+1;a<p.length;a++)b=h[a],b.resizable&&(c=Math.max(b.minWidth||0,P),
g&&b.previousWidth+g<c?(g+=b.previousWidth-c,b.width=c):(b.width=b.previousWidth+g,g=0))}}sb();d.syncColumnCellResize&&Oa()}).bind("dragend",function(){var f;c(this).parent().removeClass("slick-header-column-active");for(a=0;a<p.length;a++)b=h[a],f=c(p[a]).outerWidth(),b.previousWidth!==f&&b.rerenderOnResize&&X();Ja(!0);K();m(l.onColumnsResized,{})}))})}function Pa(a){var b=0;c.each(["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],function(f,d){b+=parseFloat(a.css(d))||0});return b}
function mb(){Y=c("<style type='text/css' rel='stylesheet' />").appendTo(c("head"));for(var a=["."+F+" .slick-header-column { left: 1000px; }","."+F+" .slick-top-panel { height:"+d.topPanelHeight+"px; }","."+F+" .slick-headerrow-columns { height:"+d.headerRowHeight+"px; }","."+F+" .slick-cell { height:"+(d.rowHeight-ua)+"px; }","."+F+" .slick-row { height:"+d.rowHeight+"px; }"],b=0;b<h.length;b++)a.push("."+F+" .l"+b+" { }"),a.push("."+F+" .r"+b+" { }");Y[0].styleSheet?Y[0].styleSheet.cssText=a.join(" "):
Y[0].appendChild(document.createTextNode(a.join(" ")))}function m(a,b,f){f=f||new Slick.EventData;b=b||{};b.grid=l;return a.notify(b,f,l)}function u(){return d.editorLock}function La(a){return J[a]}function Qa(){var a,b,f=[],d=0,c=0,e,j=na?V-g.width:V;for(a=0;a<h.length;a++)b=h[a],f.push(b.width),c+=b.width,b.resizable&&(d+=b.width-Math.max(b.minWidth,P));for(e=c;c>j&&d;){var i=(c-j)/d;for(a=0;a<h.length&&c>j;a++){b=h[a];var k=f[a];if(b.resizable&&!(k<=b.minWidth||k<=P)){b=Math.max(b.minWidth,P);
var l=Math.floor(i*(k-b))||1,l=Math.min(l,k-b),c=c-l,d=d-l;f[a]-=l}}if(e==c)break;e=c}for(e=c;c<j;){d=j/c;for(a=0;a<h.length&&c<j;a++)b=h[a],b.resizable&&!(b.maxWidth<=b.width)&&(i=Math.min(Math.floor(d*b.width)-b.width,b.maxWidth-b.width||1E6)||1,c+=i,f[a]+=i);if(e==c)break;e=c}c=!1;for(a=0;a<h.length;a++)h[a].rerenderOnResize&&h[a].width!=f[a]&&(c=!0),h[a].width=f[a];sb();Ja(!0);c&&(X(),K())}function sb(){if(I)for(var a,b=0,f=s.children(),d=f.length;b<d;b++)a=c(f[b]),a.width()!==h[b].width-W&&a.width(h[b].width-
W)}function Oa(){for(var a,b,f=0,d,c=0;c<h.length;c++){d=h[c].width;b=c;if(!Z){var e=document.styleSheets;for(a=0;a<e.length;a++)if((e[a].ownerNode||e[a].owningElement)==Y[0]){Z=e[a];break}if(!Z)throw Error("Cannot find stylesheet.");Ra=[];Sa=[];var e=Z.cssRules||Z.rules,g=void 0,g=void 0;for(a=0;a<e.length;a++){var j=e[a].selectorText;if(g=/\.l\d+/.exec(j))g=parseInt(g[0].substr(2,g[0].length-2),10),Ra[g]=e[a];else if(g=/\.r\d+/.exec(j))g=parseInt(g[0].substr(2,g[0].length-2),10),Sa[g]=e[a]}}a=Ra[b];
b=Sa[b];a.style.left=f+"px";b.style.right=R-f-d+"px";f+=h[c].width}}function va(a){y=a;var b=s.children();b.removeClass("slick-header-column-sorted").find(".slick-sort-indicator").removeClass("slick-sort-indicator-asc slick-sort-indicator-desc");c.each(y,function(a,d){null==d.sortAsc&&(d.sortAsc=!0);var c=J[d.columnId];null!=c&&b.eq(c).addClass("slick-header-column-sorted").find(".slick-sort-indicator").addClass(d.sortAsc?"slick-sort-indicator-asc":"slick-sort-indicator-desc")})}function tb(a,b){Ta=
[];for(var f={},c=0;c<b.length;c++)for(var e=b[c].fromRow;e<=b[c].toRow;e++){f[e]||Ta.push(e);f[e]={};for(var g=b[c].fromCell;g<=b[c].toCell;g++)ub(e,g)&&(f[e][h[g].id]=d.selectedCellCssClass)}vb(d.selectedCellCssClass,f);m(l.onSelectedRowsChanged,{rows:wb()},a)}function rb(a){h=a;I&&(X(),kb(),Y.remove(),Z=null,mb(),L(),Oa(),ob())}function v(){return j.getLength?j.getLength():j.length}function D(a){return j.getItem?j.getItem(a):j[a]}function ea(a){var b=x;fa=Math.min(ga-1,Math.floor(a/ha));x=Math.round(fa*
wa);a-=x;if(x!=b){var f=xa(a);xb(f.top,f.bottom);for(var c in z)z[c].style.top=c*d.rowHeight-x+"px"}ia!=a&&($=ia+b<a+x?1:-1,t[0].scrollTop=Ua=A=ia=a,m(l.onViewportChanged,{}))}function ya(a,b){var f=j.getItemMetadata&&j.getItemMetadata(a),c=f&&f.columns&&(f.columns[b.id]||f.columns[J[b.id]]);return c&&c.formatter||f&&f.formatter||b.formatter||d.formatterFactory&&d.formatterFactory.getFormatter(b)||d.defaultFormatter}function yb(a,b){var f=h[b],c=j.getItemMetadata&&j.getItemMetadata(a);return(c=c&&
c.columns)&&c[f.id]&&void 0!==c[f.id].editor?c[f.id].editor:c&&c[b]&&void 0!==c[b].editor?c[b].editor:f.editor||d.editorFactory&&d.editorFactory.getEditor(f)}function za(a,b){return d.dataItemColumnValueExtractor?d.dataItemColumnValueExtractor(a,b):a[b.field]}function xb(a){for(var b in z)(b=parseInt(b,10))!==n&&(b<a.top||b>a.bottom)&&Aa(b)}function X(){k&&M();for(var a in z)Aa(a)}function Aa(a){var b=z[a];b&&(C[0].removeChild(b),delete z[a],delete Ba[a],Va--,zb++)}function Ab(a){var b,f;if(a&&a.length){b=
$=0;for(f=a.length;b<f;b++)k&&n===a[b]&&M(),z[a[b]]&&Aa(a[b])}}function Bb(a){Ab([a])}function Wa(a){if(z[a]){var b=0;c(z[a]).children().each(function(f){var c=h[b],d=D(a);a===n&&f===w&&k?k.loadValue(D(n)):this.innerHTML=d?ya(a,c)(a,b,za(d,c),c,D(a)):"";b+=aa(a,f)});Xa(a)}}function L(){I&&(B=d.autoHeight?d.rowHeight*(v()+(d.enableAddRow?1:0)+(d.leaveSpaceForNewRows?Ca-1:0)):parseFloat(c.css(r[0],"height",!0))-parseFloat(c.css(ca[0],"height"))-Pa(ca)-(d.showTopPanel?d.topPanelHeight+Pa(ba):0)-(d.showHeaderRow?
d.headerRowHeight+Pa(S):0),Ca=Math.ceil(B/d.rowHeight),V=parseFloat(c.css(r[0],"width",!0)),t.height(B),d.forceFitColumns&&Qa(),Da(),K())}function Da(){if(I){Ya=v()+(d.enableAddRow?1:0)+(d.leaveSpaceForNewRows?Ca-1:0);var a=na;na=!d.autoHeight&&Ya*d.rowHeight>B;var b=d.enableAddRow?v():v()-1,f;for(f in z)f>=b&&Aa(f);b=N;O=Math.max(d.rowHeight*Ya,B-g.height);O<e?(N=ha=O,ga=1,wa=0):(N=e,ha=N/100,ga=Math.floor(O/ha),wa=(O-N)/(ga-1));N!==b&&(C.css("height",N),A=t[0].scrollTop);f=A+x<=O-B;0==O||0==A?fa=
x=0:f?ea(A+x):ea(O-B);N!=b&&d.autoHeight&&L();d.forceFitColumns&&a!=na&&Qa();Ja(!1)}}function xa(a){null==a&&(a=A);return{top:Math.floor((a+x)/d.rowHeight),bottom:Math.ceil((a+x+B)/d.rowHeight)}}function Cb(a){var a=xa(a),b=Math.round(B/d.rowHeight);-1==$?(a.top-=b,a.bottom+=3):1==$?(a.top-=3,a.bottom+=b):(a.top-=3,a.bottom+=3);a.top=Math.max(0,a.top);a.bottom=Math.min(d.enableAddRow?v():v()-1,a.bottom);return a}function Db(){d.enableAsyncPostRender&&(clearTimeout(Za),Za=setTimeout(Eb,d.asyncPostRenderDelay))}
function Xa(a){delete Ba[a];ja=Math.min(ja,a);pa=Math.max(pa,a);Db()}function K(){if(I){var a=xa(),b=Cb();xb(b);var f,c,e=C[0];c=[];var g=[],i=!1;for(f=b.top;f<=b.bottom;f++)if(!z[f]){Va++;g.push(f);var l=c,k=f,m=D(k),r=void 0,r="slick-row "+(k<v()&&!m?" loading":"")+(1==k%2?" odd":" even"),t=j.getItemMetadata&&j.getItemMetadata(k);t&&t.cssClasses&&(r+=" "+t.cssClasses);l.push("<div class='ui-widget-content "+r+"' row='"+k+"' style='top:"+(d.rowHeight*k-x)+"px'>");for(var u=t=void 0,s=0,B=h.length;s<
B;s++){u=h[s];t=aa(k,s);r="slick-cell l"+s+" r"+Math.min(h.length-1,s+t-1)+(u.cssClass?" "+u.cssClass:"");k===n&&s===w&&(r+=" active");for(var y in E)E[y][k]&&E[y][k][u.id]&&(r+=" "+E[y][k][u.id]);l.push("<div class='"+r+"'>");m&&l.push(ya(k,u)(k,s,za(m,u),u,m));l.push("</div>");t&&(s+=t-1)}l.push("</div>");q&&n===f&&(i=!0);Fb++}if(g.length){b=document.createElement("div");b.innerHTML=c.join("");f=0;for(c=b.childNodes.length;f<c;f++)z[g[f]]=e.appendChild(b.firstChild);i&&(q=G(n,w))}ja=a.top;pa=Math.min(d.enableAddRow?
v():v()-1,a.bottom);Db();Ua=A;Ea=null}}function ob(){A=t[0].scrollTop;var a=t[0].scrollLeft,b=Math.abs(A-ia);a!==Gb&&(Gb=a,ca[0].scrollLeft=a,ba[0].scrollLeft=a,S[0].scrollLeft=a);b&&($=ia<A?1:-1,ia=A,b<B?ea(A+x):(b=x,fa=Math.min(ga-1,Math.floor(A*((O-B)/(N-B))*(1/ha))),x=Math.round(fa*wa),b!=x&&X()),Ea&&clearTimeout(Ea),Math.abs(Ua-A)<B?K():Ea=setTimeout(K,50),m(l.onViewportChanged,{}));m(l.onScroll,{scrollLeft:a,scrollTop:A})}function Eb(){for(;ja<=pa;){var a=0<=$?ja++:pa--,b=z[a];if(b&&!(Ba[a]||
a>=v())){for(var f=D(a),b=b.childNodes,c=0,e=0,g=h.length;c<g;++c){var j=h[c];j.asyncPostRender&&j.asyncPostRender(b[e],ja,f,j);++e}Ba[a]=!0;Za=setTimeout(Eb,d.asyncPostRenderDelay);break}}}function $a(a,b){var f,d,e,h,g;for(g in z){h=b&&b[g];e=a&&a[g];if(h)for(d in h)if(!e||h[d]!=e[d])(f=G(g,J[d]))&&c(f).removeClass(h[d]);if(e)for(d in e)if(!h||h[d]!=e[d])(f=G(g,J[d]))&&c(f).addClass(e[d])}}function vb(a,b){var f=E[a];E[a]=b;$a(b,f);m(l.onCellCssStylesChanged,{key:a,hash:b})}function ac(a,b){var f=
qa(a);if(!f||!ab(f.row,f.cell))return!1;retval=m(l.onDragInit,b,a);return a.isImmediatePropagationStopped()?retval:!1}function bc(a,b){var f=qa(a);if(!f||!ab(f.row,f.cell))return!1;f=m(l.onDragStart,b,a);return a.isImmediatePropagationStopped()?f:!1}function cc(a,b){return m(l.onDrag,b,a)}function dc(a,b){m(l.onDragEnd,b,a)}function pb(a){m(l.onKeyDown,{row:n,cell:w},a);if(!a.isImmediatePropagationStopped())if(!a.shiftKey&&!a.altKey&&!a.ctrlKey)if(27==a.which){if(!u().isActive())return;Hb()}else if(37==
a.which)Ib();else if(39==a.which)Jb();else if(38==a.which)Kb();else if(40==a.which)Fa();else if(9==a.which)Lb();else if(13==a.which)d.editable&&(k?n===v()?Fa():Mb():u().commitCurrentEdit()&&Ga());else return;else if(9==a.which&&a.shiftKey&&!a.ctrlKey&&!a.altKey)Nb();else return;a.stopPropagation();a.preventDefault();try{a.originalEvent.keyCode=0}catch(b){}}function Yb(a){k||T();var b=qa(a);if(b&&!(null!==k&&n==b.row&&w==b.cell)&&(m(l.onClick,{row:b.row,cell:b.cell},a),!a.isImmediatePropagationStopped()&&
U(b.row,b.cell)&&(!u().isActive()||u().commitCurrentEdit())))ra(b.row,!1),ka(G(b.row,b.cell),b.row===v()||d.autoEdit)}function $b(a){var b=c(a.target).closest(".slick-cell",C);0!==b.length&&(q===b[0]&&null!==k||m(l.onContextMenu,{},a))}function Zb(a){var b=qa(a);b&&!(null!==k&&n==b.row&&w==b.cell)&&(m(l.onDblClick,{row:b.row,cell:b.cell},a),a.isImmediatePropagationStopped()||d.editable&&Ob(b.row,b.cell,!0))}function Wb(a){var b=c(a.target).closest(".slick-header-column",".slick-header-columns"),b=
b&&h[l.getColumnIndex(b.data("fieldId"))];m(l.onHeaderContextMenu,{column:b},a)}function Xb(a){var b=c(a.target).closest(".slick-header-column",".slick-header-columns");(b=b&&h[l.getColumnIndex(b.data("fieldId"))])&&m(l.onHeaderClick,{column:b},a)}function ec(a){m(l.onMouseEnter,{},a)}function fc(a){m(l.onMouseLeave,{},a)}function ab(a,b){return!(0>a||a>=v()||0>b||b>=h.length)}function bb(a){var b=/l\d+/.exec(a.className);if(!b)throw"getCellFromNode: cannot get cell - "+a.className;return parseInt(b[0].substr(1,
b[0].length-1),10)}function qa(a){a=c(a.target).closest(".slick-cell",C);return!a.length?null:{row:a.parent().attr("row")|0,cell:bb(a[0])}}function T(){Ma[0].focus()}function ka(a,b){null!==q&&(M(),c(q).removeClass("active"));var f=q!==a;q=a;null!=q?(n=parseInt(c(q).parent().attr("row")),w=cb=bb(q),c(q).addClass("active"),d.editable&&b&&Pb(n,w)?(clearTimeout(db),d.asyncEditorLoading?db=setTimeout(function(){Ga()},d.asyncEditorLoadDelay):Ga()):T()):n=w=null;if(f){if(q){var f=c(q).position().left,e=
f+c(q).outerWidth(),h=t.scrollLeft(),g=h+t.width();f<h?t.scrollLeft(f):e>g&&t.scrollLeft(Math.min(f,e-t[0].clientWidth))}m(l.onActiveCellChanged,Qb())}}function Pb(a,b){return a<v()&&!D(a)||h[b].cannotTriggerInsert&&a>=v()||!yb(a,b)?!1:!0}function M(){if(k){m(l.onBeforeCellEditorDestroy,{editor:k});k.destroy();k=null;if(q){var a=D(n);c(q).removeClass("editable invalid");if(a){var b=h[w],f=ya(n,b);q.innerHTML=f(n,w,za(a,b),b,D(n));Xa(n)}}c.browser.msie&&(document.selection&&document.selection.empty?
document.selection.empty():window.getSelection&&(a=window.getSelection())&&a.removeAllRanges&&a.removeAllRanges());u().deactivate(Ha)}}function Ga(a){if(q){if(!d.editable)throw"Grid : makeActiveCellEditable : should never get called when options.editable is false";clearTimeout(db);if(Pb(n,w)){var b=h[w],f=D(n);!1===m(l.onBeforeEditCell,{row:n,cell:w,item:f,column:b})?T():(u().activate(Ha),c(q).addClass("editable"),a||(q.innerHTML=""),k=new (a||yb(n,w))({grid:l,gridPosition:Ia(r[0]),position:Ia(q),
container:q,column:b,item:f||{},commitChanges:Mb,cancelChanges:Hb}),f&&k.loadValue(f),Rb=k.serializeValue(),k.position&&nb())}}}function Mb(){u().commitCurrentEdit()&&(T(),d.autoEdit&&Fa())}function Hb(){u().cancelCurrentEdit()&&T()}function Ia(a){var b={top:a.offsetTop,left:a.offsetLeft,bottom:0,right:0,width:c(a).outerWidth(),height:c(a).outerHeight(),visible:!0};b.bottom=b.top+b.height;b.right=b.left+b.width;for(var f=a.offsetParent;(a=a.parentNode)!=document.body;)b.visible&&(a.scrollHeight!=
a.offsetHeight&&"visible"!=c(a).css("overflowY"))&&(b.visible=b.bottom>a.scrollTop&&b.top<a.scrollTop+a.clientHeight),b.visible&&(a.scrollWidth!=a.offsetWidth&&"visible"!=c(a).css("overflowX"))&&(b.visible=b.right>a.scrollLeft&&b.left<a.scrollLeft+a.clientWidth),b.left-=a.scrollLeft,b.top-=a.scrollTop,a===f&&(b.left+=a.offsetLeft,b.top+=a.offsetTop,f=a.offsetParent),b.bottom=b.top+b.height,b.right=b.left+b.width;return b}function Sb(){return Ia(q)}function nb(){if(q&&(m(l.onActiveCellPositionChanged,
{}),k)){var a=Sb();k.show&&k.hide&&(a.visible?k.show():k.hide());k.position&&k.position(a)}}function Qb(){return q?{row:n,cell:w}:null}function ra(a,b){var f=a*d.rowHeight,c=(a+1)*d.rowHeight-B+(qb?g.height:0);(a+1)*d.rowHeight>A+B+x?(ea(b?f:c),K()):a*d.rowHeight<A+x&&(ea(b?c:f),K())}function aa(a,b){var f=j.getItemMetadata&&j.getItemMetadata(a);if(!f||!f.columns)return 1;f=(f=f.columns[h[b].id]||f.columns[b])&&f.colspan;"*"===f&&(f=h.length-b);return f||1}function Tb(a){for(var b=0;b<h.length;){if(U(a,
b))return b;b+=aa(a,b)}return null}function eb(a,b){if(b>=h.length)return null;do b+=aa(a,b);while(b<h.length&&!U(a,b));return b<h.length?{row:a,cell:b,posX:b}:null}function Ub(a,b){if(0>=b)return null;var f=Tb(a);if(null===f||f>=b)return null;for(var f={row:a,cell:f,posX:f},c;;){c=eb(f.row,f.cell,f.posX);if(!c)return null;if(c.cell>=b)return f;f=c}}function gc(a,b,f){for(var c;;){if(++a>=v()+(d.enableAddRow?1:0))return null;for(c=b=0;b<=f;)c=b,b+=aa(a,b);if(U(a,c))return{row:a,cell:c,posX:f}}}function hc(a,
b,f){for(var c;;){if(0>--a)return null;for(c=b=0;b<=f;)c=b,b+=aa(a,b);if(U(a,c))return{row:a,cell:c,posX:f}}}function ic(a,b,c){if(b=eb(a,b,c))return b;for(b=null;++a<v()+(d.enableAddRow?1:0);)if(b=Tb(a),null!==b)return{row:a,cell:b,posX:b};return null}function jc(a,b,c){for(var d,e;!d&&!(d=Ub(a,b,c));){if(0>--a)return null;b=0;e=a;for(var g=0,j=null;g<h.length;)U(e,g)&&(j=g),g+=aa(e,g);e=j;null!==e&&(d={row:a,cell:e,posX:e})}return d}function Jb(){la("right")}function Ib(){la("left")}function Fa(){la("down")}
function Kb(){la("up")}function Lb(){la("next")}function Nb(){la("prev")}function la(a){if(q&&d.enableCellNavigation&&u().commitCurrentEdit())if(T(),a=(0,{up:hc,down:gc,left:Ub,right:eb,prev:jc,next:ic}[a])(n,w,cb)){var b=a.row==v();ra(a.row,!b);ka(G(a.row,a.cell),b||d.autoEdit);cb=a.posX}else ka(G(n,w),n==v()||d.autoEdit)}function G(a,b){if(z[a])for(var f=c(z[a]).children(),d,e=0;e<f.length;e++){d=bb(f[e]);if(d===b)return f[e];if(d>b)break}return null}function U(a,b){if(!d.enableCellNavigation||
a>=v()+(d.enableAddRow?1:0)||0>a||b>=h.length||0>b)return!1;var c=j.getItemMetadata&&j.getItemMetadata(a);return c&&"boolean"===typeof c.focusable?c.focusable:(c=c&&c.columns)&&c[h[b].id]&&"boolean"===typeof c[h[b].id].focusable?c[h[b].id].focusable:c&&c[b]&&"boolean"===typeof c[b].focusable?c[b].focusable:"boolean"===typeof h[b].focusable?h[b].focusable:!0}function ub(a,b){if(a>=v()||0>a||b>=h.length||0>b)return!1;var c=j.getItemMetadata&&j.getItemMetadata(a);return c&&"boolean"===typeof c.selectable?
c.selectable:(c=c&&c.columns&&(c.columns[h[b].id]||c.columns[b]))&&"boolean"===typeof c.selectable?c.selectable:"boolean"===typeof h[b].selectable?h[b].selectable:!0}function Ob(a,b,c){I&&(U(a,b)&&u().commitCurrentEdit())&&(ra(a,!1),b=G(a,b),ka(b,c||a===v()||d.autoEdit),k||T())}function kc(a){for(var b=[],c=h.length-1,d=0;d<a.length;d++)b.push(new Slick.Range(a[d],0,a[d],c));return b}function wb(){if(!H)throw"Selection model is not set";return Ta}var lc={explicitInitialization:!1,rowHeight:25,defaultColumnWidth:80,
enableAddRow:!1,leaveSpaceForNewRows:!1,editable:!1,autoEdit:!0,enableCellNavigation:!0,enableColumnReorder:!0,asyncEditorLoading:!1,asyncEditorLoadDelay:100,forceFitColumns:!1,enableAsyncPostRender:!1,asyncPostRenderDelay:60,autoHeight:!1,editorLock:Slick.GlobalEditorLock,showHeaderRow:!1,headerRowHeight:25,showTopPanel:!1,topPanelHeight:25,formatterFactory:null,editorFactory:null,cellFlashingCssClass:"flashing",selectedCellCssClass:"selected",multiSelect:!0,enableTextSelectionOnCells:!1,dataItemColumnValueExtractor:null,
fullWidthRows:!1,multiColumnSort:!1,defaultFormatter:function(a,b,c){return null==c?"":c.toString().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}},Na={name:"",resizable:!0,sortable:!1,minWidth:30,rerenderOnResize:!1,headerCssClass:null},O,N,ha,ga,wa,fa=0,x=0,$=1,I=!1,r,F="slickgrid_"+Math.round(1E6*Math.random()),l=this,Ma,ca,s,da,S,ba,Vb,t,C,Y,Z,Ra,Sa,B,V,R,qb,na,W=0,Ka=0,ta=0,ua=0,P,Ya=0,cb,n,w,q=null,k=null,Rb,Ha,z={},Va=0,Ca,ia=0,A=0,Ua=0,Gb=0,H,Ta=[],Q=[],E={},J={},y=[],db=
null,Ea=null,Za=null,Ba={},pa=null,ja=null,Fb=0,zb=0;this.debug=function(){var a;a="\ncounter_rows_rendered: "+Fb;a+="\ncounter_rows_removed: "+zb;a+="\nrenderedRows: "+Va;a+="\nnumVisibleRows: "+Ca;a+="\nmaxSupportedCssHeight: "+e;a+="\nn(umber of pages): "+ga;a+="\n(current) page: "+fa;a+="\npage height (ph): "+ha;a+="\nscrollDir: "+$;alert(a)};this.eval=function(a){return eval(a)};c.extend(this,{slickGridVersion:"2.0",onScroll:new Slick.Event,onSort:new Slick.Event,onHeaderContextMenu:new Slick.Event,
onHeaderClick:new Slick.Event,onMouseEnter:new Slick.Event,onMouseLeave:new Slick.Event,onClick:new Slick.Event,onDblClick:new Slick.Event,onContextMenu:new Slick.Event,onKeyDown:new Slick.Event,onAddNewRow:new Slick.Event,onValidationError:new Slick.Event,onViewportChanged:new Slick.Event,onColumnsReordered:new Slick.Event,onColumnsResized:new Slick.Event,onCellChange:new Slick.Event,onBeforeEditCell:new Slick.Event,onBeforeCellEditorDestroy:new Slick.Event,onBeforeDestroy:new Slick.Event,onActiveCellChanged:new Slick.Event,
onActiveCellPositionChanged:new Slick.Event,onDragInit:new Slick.Event,onDragStart:new Slick.Event,onDrag:new Slick.Event,onDragEnd:new Slick.Event,onSelectedRowsChanged:new Slick.Event,onCellCssStylesChanged:new Slick.Event,registerPlugin:function(a){Q.unshift(a);a.init(l)},unregisterPlugin:jb,getColumns:function(){return h},setColumns:rb,getColumnIndex:La,updateColumnHeader:function(a,b,c){if(I){var a=J[a],d=s.children().eq(a);d&&(h[a].name=b,h[a].toolTip=c,d.attr("title",c||b||"").children().eq(0).html(b))}},
setSortColumn:function(a,b){va([{columnId:a,sortAsc:b}])},setSortColumns:va,getSortColumns:function(){return y},autosizeColumns:Qa,getOptions:function(){return d},setOptions:function(a){u().commitCurrentEdit()&&(M(),d.enableAddRow!==a.enableAddRow&&Bb(v()),d=c.extend(d,a),t.css("overflow-y",d.autoHeight?"hidden":"auto"),K())},getData:function(){return j},getDataLength:v,getDataItem:D,setData:function(a,b){j=a;X();Da();b&&ea(0)},getSelectionModel:function(){return H},setSelectionModel:function(a){H&&
(H.onSelectedRangesChanged.unsubscribe(tb),H.destroy&&H.destroy());if(H=a)H.init(l),H.onSelectedRangesChanged.subscribe(tb)},getSelectedRows:wb,setSelectedRows:function(a){if(!H)throw"Selection model is not set";H.setSelectedRanges(kc(a))},render:K,invalidate:function(){Da();X();K()},invalidateRow:Bb,invalidateRows:Ab,invalidateAllRows:X,updateCell:function(a,b){var c=G(a,b);if(c){var d=h[b],e=D(a);k&&n===a&&w===b?k.loadValue(e):(c.innerHTML=e?ya(a,d)(a,b,za(e,d),d,e):"",Xa(a))}},updateRow:Wa,getViewport:xa,
getRenderedRange:Cb,resizeCanvas:L,updateRowCount:Da,scrollRowIntoView:ra,getCanvasNode:function(){return C[0]},focus:T,getCellFromPoint:function(a,b){for(var c=Math.floor((b+x)/d.rowHeight),e=0,g=0,j=0;j<h.length&&g<a;j++)g+=h[j].width,e++;0>e&&(e=0);return{row:c,cell:e-1}},getCellFromEvent:qa,getActiveCell:Qb,setActiveCell:function(a,b){if(I&&!(a>v()||0>a||b>=h.length||0>b)&&d.enableCellNavigation)ra(a,!1),ka(G(a,b),!1)},getActiveCellNode:function(){return q},getActiveCellPosition:Sb,resetActiveCell:function(){ka(null,
!1)},editActiveCell:Ga,getCellEditor:function(){return k},getCellNode:G,getCellNodeBox:function(a,b){if(!ab(a,b))return null;for(var c=a*d.rowHeight-x,e=c+d.rowHeight-1,g=0,j=0;j<b;j++)g+=h[j].width;return{top:c,left:g,bottom:e,right:g+h[b].width}},canCellBeSelected:ub,canCellBeActive:U,navigatePrev:Nb,navigateNext:Lb,navigateUp:Kb,navigateDown:Fa,navigateLeft:Ib,navigateRight:Jb,gotoCell:Ob,getTopPanel:function(){return Vb[0]},showTopPanel:function(){d.showTopPanel=!0;ba.slideDown("fast",L)},hideTopPanel:function(){d.showTopPanel=
!1;ba.slideUp("fast",L)},showHeaderRowColumns:function(){d.showHeaderRow=!0;S.slideDown("fast",L)},hideHeaderRowColumns:function(){d.showHeaderRow=!1;S.slideUp("fast",L)},getHeaderRow:function(){return da[0]},getHeaderRowColumn:function(a){a=J[a];return(a=da.children().eq(a))&&a[0]},getGridPosition:function(){return Ia(r[0])},flashCell:function(a,b,f){f=f||100;if(z[a]){var e=c(G(a,b)),h=function(a){a&&setTimeout(function(){e.queue(function(){e.toggleClass(d.cellFlashingCssClass).dequeue();h(a-1)})},
f)};h(4)}},addCellCssStyles:function(a,b){if(E[a])throw"addCellCssStyles: cell CSS hash with key '"+a+"' already exists.";E[a]=b;$a(b,null);m(l.onCellCssStylesChanged,{key:a,hash:b})},setCellCssStyles:vb,removeCellCssStyles:function(a){E[a]&&($a(null,E[a]),delete E[a],m(l.onCellCssStylesChanged,{key:a,hash:null}))},getCellCssStyles:function(a){return E[a]},init:ib,destroy:function(){u().cancelCurrentEdit();m(l.onBeforeDestroy,{});for(var a=0;a<Q.length;a++)jb(Q[a]);d.enableColumnReorder&&s.sortable&&
s.sortable("destroy");C.parents().unbind("scroll.slickgrid");r.unbind(".slickgrid");Y.remove();Z=null;C.unbind("draginit dragstart dragend drag");r.empty().removeClass(F)},getEditorLock:u,getEditController:function(){return Ha}});r=c(i);if(1>r.length)throw Error("SlickGrid requires a valid container, "+i+" does not exist in the DOM.");var fb;if(!(fb=e)){for(var ma=1E6,mc=c.browser.mozilla?5E6:1E9,gb=c("<div style='display:none' />").appendTo(document.body);ma<=mc&&!(gb.css("height",ma+1E6),gb.height()!==
ma+1E6);)ma+=1E6;gb.remove();fb=ma}e=fb;var hb;if(!(hb=g)){var sa=c("<div style='position:absolute; top:-10000px; left:-10000px; width:100px; height:100px; overflow:scroll;'></div>").appendTo("body"),nc={width:sa.width()-sa[0].clientWidth,height:sa.height()-sa[0].clientHeight};sa.remove();hb=nc}g=hb;d=c.extend({},lc,d);Na.width=d.defaultColumnWidth;if(d.enableColumnReorder&&!c.fn.sortable)throw Error("SlickGrid's 'enableColumnReorder = true' option requires jquery-ui.sortable module to be loaded");
Ha={commitCurrentEdit:function(){var a=D(n),b=h[w];if(k){if(k.isValueChanged()){var f=k.validate();if(f.valid)return n<v()?(f={row:n,cell:w,editor:k,serializedValue:k.serializeValue(),prevSerializedValue:Rb,execute:function(){this.editor.applyValue(a,this.serializedValue);Wa(this.row)},undo:function(){this.editor.applyValue(a,this.prevSerializedValue);Wa(this.row)}},d.editCommandHandler?(M(),d.editCommandHandler(a,b,f)):(f.execute(),M()),m(l.onCellChange,{row:n,cell:w,item:a})):(f={},k.applyValue(f,
k.serializeValue()),M(),m(l.onAddNewRow,{item:f,column:b})),!u().isActive();c(q).addClass("invalid");c(q).stop(!0,!0).effect("highlight",{color:"red"},300);m(l.onValidationError,{editor:k,cellNode:q,validationResults:f,row:n,cell:w,column:b});k.focus();return!1}M()}return!0},cancelCurrentEdit:function(){M();return!0}};r.empty().css("overflow","hidden").css("outline",0).addClass(F).addClass("ui-widget");/relative|absolute|fixed/.test(r.css("position"))||r.css("position","relative");Ma=c("<div tabIndex='0' hideFocus style='position:fixed;width:0;height:0;top:0;left:0;outline:0;'></div>").appendTo(r);
ca=c("<div class='slick-header ui-state-default' style='overflow:hidden;position:relative;' />").appendTo(r);s=c("<div class='slick-header-columns' style='width:10000px; left:-1000px' />").appendTo(ca);S=c("<div class='slick-headerrow ui-state-default' style='overflow:hidden;position:relative;' />").appendTo(r);da=c("<div class='slick-headerrow-columns' />").appendTo(S);ba=c("<div class='slick-top-panel-scroller ui-state-default' style='overflow:hidden;position:relative;' />").appendTo(r);Vb=c("<div class='slick-top-panel' style='width:10000px' />").appendTo(ba);
d.showTopPanel||ba.hide();d.showHeaderRow||S.hide();t=c("<div class='slick-viewport' style='width:100%;overflow:auto;outline:0;position:relative;;'>").appendTo(r);t.css("overflow-y",d.autoHeight?"hidden":"auto");C=c("<div class='grid-canvas' />").appendTo(t);d.explicitInitialization||ib()}}});var g,e})(jQuery);(function(c){c.extend(!0,window,{Slick:{Editors:{Text:function(g){var e,i;this.init=function(){e=c("<INPUT type=text class='editor-text' />").appendTo(g.container).bind("keydown.nav",function(e){(e.keyCode===c.ui.keyCode.LEFT||e.keyCode===c.ui.keyCode.RIGHT)&&e.stopImmediatePropagation()}).focus().select()};this.destroy=function(){e.remove()};this.focus=function(){e.focus()};this.getValue=function(){return e.val()};this.setValue=function(c){e.val(c)};this.loadValue=function(c){i=c[g.column.field]||
"";e.val(i);e[0].defaultValue=i;e.select()};this.serializeValue=function(){return e.val()};this.applyValue=function(c,e){c[g.column.field]=e};this.isValueChanged=function(){return!(""==e.val()&&null==i)&&e.val()!=i};this.validate=function(){if(g.column.validator){var c=g.column.validator(e.val());if(!c.valid)return c}return{valid:!0,msg:null}};this.init()},Integer:function(g){var e,i;this.init=function(){e=c("<INPUT type=text class='editor-text' />");e.bind("keydown.nav",function(e){(e.keyCode===
c.ui.keyCode.LEFT||e.keyCode===c.ui.keyCode.RIGHT)&&e.stopImmediatePropagation()});e.appendTo(g.container);e.focus().select()};this.destroy=function(){e.remove()};this.focus=function(){e.focus()};this.loadValue=function(c){i=c[g.column.field];e.val(i);e[0].defaultValue=i;e.select()};this.serializeValue=function(){return parseInt(e.val(),10)||0};this.applyValue=function(c,e){c[g.column.field]=e};this.isValueChanged=function(){return!(""==e.val()&&null==i)&&e.val()!=i};this.validate=function(){return isNaN(e.val())?
{valid:!1,msg:"Please enter a valid integer"}:{valid:!0,msg:null}};this.init()},Date:function(g){var e,i,j=!1;this.init=function(){e=c("<INPUT type=text class='editor-text' />");e.appendTo(g.container);e.focus().select();e.datepicker({showOn:"button",buttonImageOnly:!0,buttonImage:"../images/calendar.gif",beforeShow:function(){j=!0},onClose:function(){j=!1}});e.width(e.width()-18)};this.destroy=function(){c.datepicker.dpDiv.stop(!0,!0);e.datepicker("hide");e.datepicker("destroy");e.remove()};this.show=
function(){j&&c.datepicker.dpDiv.stop(!0,!0).show()};this.hide=function(){j&&c.datepicker.dpDiv.stop(!0,!0).hide()};this.position=function(e){j&&c.datepicker.dpDiv.css("top",e.top+30).css("left",e.left)};this.focus=function(){e.focus()};this.loadValue=function(c){i=c[g.column.field];e.val(i);e[0].defaultValue=i;e.select()};this.serializeValue=function(){return e.val()};this.applyValue=function(c,d){c[g.column.field]=d};this.isValueChanged=function(){return!(""==e.val()&&null==i)&&e.val()!=i};this.validate=
function(){return{valid:!0,msg:null}};this.init()},YesNoSelect:function(g){var e,i;this.init=function(){e=c("<SELECT tabIndex='0' class='editor-yesno'><OPTION value='yes'>Yes</OPTION><OPTION value='no'>No</OPTION></SELECT>");e.appendTo(g.container);e.focus()};this.destroy=function(){e.remove()};this.focus=function(){e.focus()};this.loadValue=function(c){e.val((i=c[g.column.field])?"yes":"no");e.select()};this.serializeValue=function(){return"yes"==e.val()};this.applyValue=function(c,e){c[g.column.field]=
e};this.isValueChanged=function(){return e.val()!=i};this.validate=function(){return{valid:!0,msg:null}};this.init()},Checkbox:function(g){var e,i;this.init=function(){e=c("<INPUT type=checkbox value='true' class='editor-checkbox' hideFocus>");e.appendTo(g.container);e.focus()};this.destroy=function(){e.remove()};this.focus=function(){e.focus()};this.loadValue=function(c){(i=c[g.column.field])?e.attr("checked","checked"):e.removeAttr("checked")};this.serializeValue=function(){return e.attr("checked")};
this.applyValue=function(c,e){c[g.column.field]=e};this.isValueChanged=function(){return e.attr("checked")!=i};this.validate=function(){return{valid:!0,msg:null}};this.init()},PercentComplete:function(g){var e,i,j;this.init=function(){e=c("<INPUT type=text class='editor-percentcomplete' />");e.width(c(g.container).innerWidth()-25);e.appendTo(g.container);i=c("<div class='editor-percentcomplete-picker' />").appendTo(g.container);i.append("<div class='editor-percentcomplete-helper'><div class='editor-percentcomplete-wrapper'><div class='editor-percentcomplete-slider' /><div class='editor-percentcomplete-buttons' /></div></div>");
i.find(".editor-percentcomplete-buttons").append("<button val=0>Not started</button><br/><button val=50>In Progress</button><br/><button val=100>Complete</button>");e.focus().select();i.find(".editor-percentcomplete-slider").slider({orientation:"vertical",range:"min",value:j,slide:function(c,d){e.val(d.value)}});i.find(".editor-percentcomplete-buttons button").bind("click",function(){e.val(c(this).attr("val"));i.find(".editor-percentcomplete-slider").slider("value",c(this).attr("val"))})};this.destroy=
function(){e.remove();i.remove()};this.focus=function(){e.focus()};this.loadValue=function(c){e.val(j=c[g.column.field]);e.select()};this.serializeValue=function(){return parseInt(e.val(),10)||0};this.applyValue=function(c,d){c[g.column.field]=d};this.isValueChanged=function(){return!(""==e.val()&&null==j)&&(parseInt(e.val(),10)||0)!=j};this.validate=function(){return isNaN(parseInt(e.val(),10))?{valid:!1,msg:"Please enter a valid positive number"}:{valid:!0,msg:null}};this.init()},LongText:function(g){var e,
i,j,h=this;this.init=function(){var d=c("body");i=c("<DIV style='z-index:10000;position:absolute;background:white;padding:5px;border:3px solid gray; -moz-border-radius:10px; border-radius:10px;'/>").appendTo(d);e=c("<TEXTAREA hidefocus rows=5 style='backround:white;width:250px;height:80px;border:0;outline:0'>").appendTo(i);c("<DIV style='text-align:right'><BUTTON>Save</BUTTON><BUTTON>Cancel</BUTTON></DIV>").appendTo(i);i.find("button:first").bind("click",this.save);i.find("button:last").bind("click",
this.cancel);e.bind("keydown",this.handleKeyDown);h.position(g.position);e.focus().select()};this.handleKeyDown=function(d){d.which==c.ui.keyCode.ENTER&&d.ctrlKey?h.save():d.which==c.ui.keyCode.ESCAPE?(d.preventDefault(),h.cancel()):d.which==c.ui.keyCode.TAB&&d.shiftKey?(d.preventDefault(),grid.navigatePrev()):d.which==c.ui.keyCode.TAB&&(d.preventDefault(),grid.navigateNext())};this.save=function(){g.commitChanges()};this.cancel=function(){e.val(j);g.cancelChanges()};this.hide=function(){i.hide()};
this.show=function(){i.show()};this.position=function(c){i.css("top",c.top-5).css("left",c.left-5)};this.destroy=function(){i.remove()};this.focus=function(){e.focus()};this.loadValue=function(c){e.val(j=c[g.column.field]);e.select()};this.serializeValue=function(){return e.val()};this.applyValue=function(c,e){c[g.column.field]=e};this.isValueChanged=function(){return!(""==e.val()&&null==j)&&e.val()!=j};this.validate=function(){return{valid:!0,msg:null}};this.init()}}}})})(jQuery);

25
vendor/slickgrid/2.2/README.md vendored Normal file
View File

@ -0,0 +1,25 @@
# Welcome to SlickGrid
Find documentation and examples in [the wiki](https://github.com/mleibman/SlickGrid/wiki).
**UPDATE: March 5th, 2014 - I have too many things going on in my life right now to really give SlickGrid support and development the time and attention it deserves. I am not stopping it, but I will most likely be unresponsive for some time. Sorry.**
## SlickGrid is an advanced JavaScript grid/spreadsheet component
Some highlights:
* Adaptive virtual scrolling (handle hundreds of thousands of rows with extreme responsiveness)
* Extremely fast rendering speed
* Supports jQuery UI Themes
* Background post-rendering for richer cells
* Configurable & customizable
* Full keyboard navigation
* Column resize/reorder/show/hide
* Column autosizing & force-fit
* Pluggable cell formatters & editors
* Support for editing and creating new rows.
* Grouping, filtering, custom aggregators, and more!
* Advanced detached & multi-field editors with undo/redo support.
* “GlobalEditorLock” to manage concurrent edits in cases where multiple Views on a page can edit the same data.
* Support for [millions of rows](http://stackoverflow.com/a/2569488/1269037)

View File

@ -0,0 +1,31 @@
.slick-columnpicker {
border: 1px solid #718BB7;
background: #f0f0f0;
padding: 6px;
-moz-box-shadow: 2px 2px 2px silver;
-webkit-box-shadow: 2px 2px 2px silver;
box-shadow: 2px 2px 2px silver;
min-width: 100px;
cursor: default;
}
.slick-columnpicker li {
list-style: none;
margin: 0;
padding: 0;
background: none;
}
.slick-columnpicker input {
margin: 4px;
}
.slick-columnpicker li a {
display: block;
padding: 4px;
font-weight: bold;
}
.slick-columnpicker li a:hover {
background: white;
}

View File

@ -0,0 +1,152 @@
(function ($) {
function SlickColumnPicker(columns, grid, options) {
var $menu;
var columnCheckboxes;
var defaults = {
fadeSpeed:250
};
function init() {
grid.onHeaderContextMenu.subscribe(handleHeaderContextMenu);
grid.onColumnsReordered.subscribe(updateColumnOrder);
options = $.extend({}, defaults, options);
$menu = $("<span class='slick-columnpicker' style='display:none;position:absolute;z-index:20;' />").appendTo(document.body);
$menu.bind("mouseleave", function (e) {
$(this).fadeOut(options.fadeSpeed)
});
$menu.bind("click", updateColumn);
}
function destroy() {
grid.onHeaderContextMenu.unsubscribe(handleHeaderContextMenu);
grid.onColumnsReordered.unsubscribe(updateColumnOrder);
$menu.remove();
}
function handleHeaderContextMenu(e, args) {
e.preventDefault();
$menu.empty();
updateColumnOrder();
columnCheckboxes = [];
var $li, $input;
for (var i = 0; i < columns.length; i++) {
$li = $("<li />").appendTo($menu);
$input = $("<input type='checkbox' />").data("column-id", columns[i].id);
columnCheckboxes.push($input);
if (grid.getColumnIndex(columns[i].id) != null) {
$input.attr("checked", "checked");
}
$("<label />")
.text(columns[i].name)
.prepend($input)
.appendTo($li);
}
$("<hr/>").appendTo($menu);
$li = $("<li />").appendTo($menu);
$input = $("<input type='checkbox' />").data("option", "autoresize");
$("<label />")
.text("Force fit columns")
.prepend($input)
.appendTo($li);
if (grid.getOptions().forceFitColumns) {
$input.attr("checked", "checked");
}
$li = $("<li />").appendTo($menu);
$input = $("<input type='checkbox' />").data("option", "syncresize");
$("<label />")
.text("Synchronous resize")
.prepend($input)
.appendTo($li);
if (grid.getOptions().syncColumnCellResize) {
$input.attr("checked", "checked");
}
$menu
.css("top", e.pageY - 10)
.css("left", e.pageX - 10)
.fadeIn(options.fadeSpeed);
}
function updateColumnOrder() {
// Because columns can be reordered, we have to update the `columns`
// to reflect the new order, however we can't just take `grid.getColumns()`,
// as it does not include columns currently hidden by the picker.
// We create a new `columns` structure by leaving currently-hidden
// columns in their original ordinal position and interleaving the results
// of the current column sort.
var current = grid.getColumns().slice(0);
var ordered = new Array(columns.length);
for (var i = 0; i < ordered.length; i++) {
if ( grid.getColumnIndex(columns[i].id) === undefined ) {
// If the column doesn't return a value from getColumnIndex,
// it is hidden. Leave it in this position.
ordered[i] = columns[i];
} else {
// Otherwise, grab the next visible column.
ordered[i] = current.shift();
}
}
columns = ordered;
}
function updateColumn(e) {
if ($(e.target).data("option") == "autoresize") {
if (e.target.checked) {
grid.setOptions({forceFitColumns:true});
grid.autosizeColumns();
} else {
grid.setOptions({forceFitColumns:false});
}
return;
}
if ($(e.target).data("option") == "syncresize") {
if (e.target.checked) {
grid.setOptions({syncColumnCellResize:true});
} else {
grid.setOptions({syncColumnCellResize:false});
}
return;
}
if ($(e.target).is(":checkbox")) {
var visibleColumns = [];
$.each(columnCheckboxes, function (i, e) {
if ($(this).is(":checked")) {
visibleColumns.push(columns[i]);
}
});
if (!visibleColumns.length) {
$(e.target).attr("checked", "checked");
return;
}
grid.setColumns(visibleColumns);
}
}
function getAllColumns() {
return columns;
}
init();
return {
"getAllColumns": getAllColumns,
"destroy": destroy
};
}
// Slick.Controls.ColumnPicker
$.extend(true, window, { Slick:{ Controls:{ ColumnPicker:SlickColumnPicker }}});
})(jQuery);

View File

@ -0,0 +1,41 @@
.slick-pager {
width: 100%;
height: 26px;
border: 1px solid gray;
border-top: 0;
background: url('../images/header-columns-bg.gif') repeat-x center bottom;
vertical-align: middle;
}
.slick-pager .slick-pager-status {
display: inline-block;
padding: 6px;
}
.slick-pager .ui-icon-container {
display: inline-block;
margin: 2px;
border-color: gray;
}
.slick-pager .slick-pager-nav {
display: inline-block;
float: left;
padding: 2px;
}
.slick-pager .slick-pager-settings {
display: block;
float: right;
padding: 2px;
}
.slick-pager .slick-pager-settings * {
vertical-align: middle;
}
.slick-pager .slick-pager-settings a {
padding: 2px;
text-decoration: underline;
cursor: pointer;
}

View File

@ -0,0 +1,154 @@
(function ($) {
function SlickGridPager(dataView, grid, $container) {
var $status;
function init() {
dataView.onPagingInfoChanged.subscribe(function (e, pagingInfo) {
updatePager(pagingInfo);
});
constructPagerUI();
updatePager(dataView.getPagingInfo());
}
function getNavState() {
var cannotLeaveEditMode = !Slick.GlobalEditorLock.commitCurrentEdit();
var pagingInfo = dataView.getPagingInfo();
var lastPage = pagingInfo.totalPages - 1;
return {
canGotoFirst: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum > 0,
canGotoLast: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum != lastPage,
canGotoPrev: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum > 0,
canGotoNext: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum < lastPage,
pagingInfo: pagingInfo
}
}
function setPageSize(n) {
dataView.setRefreshHints({
isFilterUnchanged: true
});
dataView.setPagingOptions({pageSize: n});
}
function gotoFirst() {
if (getNavState().canGotoFirst) {
dataView.setPagingOptions({pageNum: 0});
}
}
function gotoLast() {
var state = getNavState();
if (state.canGotoLast) {
dataView.setPagingOptions({pageNum: state.pagingInfo.totalPages - 1});
}
}
function gotoPrev() {
var state = getNavState();
if (state.canGotoPrev) {
dataView.setPagingOptions({pageNum: state.pagingInfo.pageNum - 1});
}
}
function gotoNext() {
var state = getNavState();
if (state.canGotoNext) {
dataView.setPagingOptions({pageNum: state.pagingInfo.pageNum + 1});
}
}
function constructPagerUI() {
$container.empty();
var $nav = $("<span class='slick-pager-nav' />").appendTo($container);
var $settings = $("<span class='slick-pager-settings' />").appendTo($container);
$status = $("<span class='slick-pager-status' />").appendTo($container);
$settings
.append("<span class='slick-pager-settings-expanded' style='display:none'>Show: <a data=0>All</a><a data='-1'>Auto</a><a data=25>25</a><a data=50>50</a><a data=100>100</a></span>");
$settings.find("a[data]").click(function (e) {
var pagesize = $(e.target).attr("data");
if (pagesize != undefined) {
if (pagesize == -1) {
var vp = grid.getViewport();
setPageSize(vp.bottom - vp.top);
} else {
setPageSize(parseInt(pagesize));
}
}
});
var icon_prefix = "<span class='ui-state-default ui-corner-all ui-icon-container'><span class='ui-icon ";
var icon_suffix = "' /></span>";
$(icon_prefix + "ui-icon-lightbulb" + icon_suffix)
.click(function () {
$(".slick-pager-settings-expanded").toggle()
})
.appendTo($settings);
$(icon_prefix + "ui-icon-seek-first" + icon_suffix)
.click(gotoFirst)
.appendTo($nav);
$(icon_prefix + "ui-icon-seek-prev" + icon_suffix)
.click(gotoPrev)
.appendTo($nav);
$(icon_prefix + "ui-icon-seek-next" + icon_suffix)
.click(gotoNext)
.appendTo($nav);
$(icon_prefix + "ui-icon-seek-end" + icon_suffix)
.click(gotoLast)
.appendTo($nav);
$container.find(".ui-icon-container")
.hover(function () {
$(this).toggleClass("ui-state-hover");
});
$container.children().wrapAll("<div class='slick-pager' />");
}
function updatePager(pagingInfo) {
var state = getNavState();
$container.find(".slick-pager-nav span").removeClass("ui-state-disabled");
if (!state.canGotoFirst) {
$container.find(".ui-icon-seek-first").addClass("ui-state-disabled");
}
if (!state.canGotoLast) {
$container.find(".ui-icon-seek-end").addClass("ui-state-disabled");
}
if (!state.canGotoNext) {
$container.find(".ui-icon-seek-next").addClass("ui-state-disabled");
}
if (!state.canGotoPrev) {
$container.find(".ui-icon-seek-prev").addClass("ui-state-disabled");
}
if (pagingInfo.pageSize == 0) {
var totalRowsCount = dataView.getItems().length;
var visibleRowsCount = pagingInfo.totalRows;
if (visibleRowsCount < totalRowsCount) {
$status.text("Showing " + visibleRowsCount + " of " + totalRowsCount + " rows");
} else {
$status.text("Showing all " + totalRowsCount + " rows");
}
$status.text("Showing all " + pagingInfo.totalRows + " rows");
} else {
$status.text("Showing page " + (pagingInfo.pageNum + 1) + " of " + pagingInfo.totalPages);
}
}
init();
}
// Slick.Controls.Pager
$.extend(true, window, { Slick:{ Controls:{ Pager:SlickGridPager }}});
})(jQuery);

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,409 @@
/*
* jQuery UI CSS Framework 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
.ui-widget-content a { color: #222222; }
.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
.ui-widget-header a { color: #222222; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
.ui-widget :active { outline: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
/* Overlays */
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
* jQuery UI Resizable 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Resizable#theming
*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
* jQuery UI Selectable 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Selectable#theming
*/
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
/*
* jQuery UI Slider 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Slider#theming
*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
* jQuery UI Datepicker 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Datepicker#theming
*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}

BIN
vendor/slickgrid/2.2/images/actions.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
vendor/slickgrid/2.2/images/collapse.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 846 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 B

BIN
vendor/slickgrid/2.2/images/down.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
vendor/slickgrid/2.2/images/expand.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 872 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 836 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 823 B

BIN
vendor/slickgrid/2.2/images/help.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

BIN
vendor/slickgrid/2.2/images/info.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 B

BIN
vendor/slickgrid/2.2/images/listview.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
vendor/slickgrid/2.2/images/pencil.gif vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 914 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 823 B

View File

Before

Width:  |  Height:  |  Size: 830 B

After

Width:  |  Height:  |  Size: 830 B

BIN
vendor/slickgrid/2.2/images/sort-asc.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

View File

Before

Width:  |  Height:  |  Size: 833 B

After

Width:  |  Height:  |  Size: 833 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

BIN
vendor/slickgrid/2.2/images/stripes.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
vendor/slickgrid/2.2/images/tag_red.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B

BIN
vendor/slickgrid/2.2/images/tick.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 484 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 B

View File

@ -0,0 +1,118 @@
/*
IMPORTANT:
In order to preserve the uniform grid appearance, all cell styles need to have padding, margin and border sizes.
No built-in (selected, editable, highlight, flashing, invalid, loading, :focus) or user-specified CSS
classes should alter those!
*/
.slick-header-columns {
background: url('images/header-columns-bg.gif') repeat-x center bottom;
border-bottom: 1px solid silver;
}
.slick-header-column {
background: url('images/header-columns-bg.gif') repeat-x center bottom;
border-right: 1px solid silver;
}
.slick-header-column:hover, .slick-header-column-active {
background: white url('images/header-columns-over-bg.gif') repeat-x center bottom;
}
.slick-headerrow {
background: #fafafa;
}
.slick-headerrow-column {
background: #fafafa;
border-bottom: 0;
height: 100%;
}
.slick-row.ui-state-active {
background: #F5F7D7;
}
.slick-row {
position: absolute;
background: white;
border: 0px;
line-height: 20px;
}
.slick-row.selected {
z-index: 10;
background: #DFE8F6;
}
.slick-cell {
padding-left: 4px;
padding-right: 4px;
}
.slick-group {
border-bottom: 2px solid silver;
}
.slick-group-toggle {
width: 9px;
height: 9px;
margin-right: 5px;
}
.slick-group-toggle.expanded {
background: url(images/collapse.gif) no-repeat center center;
}
.slick-group-toggle.collapsed {
background: url(images/expand.gif) no-repeat center center;
}
.slick-group-totals {
color: gray;
background: white;
}
.slick-cell.selected {
background-color: beige;
}
.slick-cell.active {
border-color: gray;
border-style: solid;
}
.slick-sortable-placeholder {
background: silver !important;
}
.slick-row.odd {
background: #fafafa;
}
.slick-row.ui-state-active {
background: #F5F7D7;
}
.slick-row.loading {
opacity: 0.5;
filter: alpha(opacity = 50);
}
.slick-cell.invalid {
border-color: red;
-moz-animation-duration: 0.2s;
-webkit-animation-duration: 0.2s;
-moz-animation-name: slickgrid-invalid-hilite;
-webkit-animation-name: slickgrid-invalid-hilite;
}
@-moz-keyframes slickgrid-invalid-hilite {
from { box-shadow: 0 0 6px red; }
to { box-shadow: none; }
}
@-webkit-keyframes slickgrid-invalid-hilite {
from { box-shadow: 0 0 6px red; }
to { box-shadow: none; }
}

1126
vendor/slickgrid/2.2/slick.dataview.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -12,7 +12,6 @@ classes should alter those!
}
.slick-header-columns, .slick-headerrow-columns {
width: 999999px;
position: relative;
white-space: nowrap;
cursor: default;
@ -23,6 +22,7 @@ classes should alter those!
position: relative;
display: inline-block;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
height: 16px;
line-height: 16px;
@ -48,6 +48,8 @@ classes should alter those!
width: 8px;
height: 5px;
margin-left: 4px;
margin-top: 6px;
float: left;
}
.slick-sort-indicator-desc {
@ -86,21 +88,17 @@ classes should alter those!
.slick-cell, .slick-headerrow-column {
position: absolute;
border: 1px solid transparent;
border-right: 1px dotted silver;
border-bottom-color: silver;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
white-space: nowrap;
vertical-align: middle;
z-index: 1;
padding: 1px 2px 2px 1px;
margin: 0;
white-space: nowrap;
cursor: default;
}
@ -116,6 +114,7 @@ classes should alter those!
background: rgba(0, 0, 255, 0.2);
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
-o-transition: all 0.5s;
transition: all 0.5s;
}
@ -155,4 +154,4 @@ classes should alter those!
z-index: 10;
position: absolute;
border: 2px dashed black;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,158 @@
(function ($) {
$.extend(true, window, {
Slick: {
Data: {
GroupItemMetadataProvider: GroupItemMetadataProvider
}
}
});
/***
* Provides item metadata for group (Slick.Group) and totals (Slick.Totals) rows produced by the DataView.
* This metadata overrides the default behavior and formatting of those rows so that they appear and function
* correctly when processed by the grid.
*
* This class also acts as a grid plugin providing event handlers to expand & collapse groups.
* If "grid.registerPlugin(...)" is not called, expand & collapse will not work.
*
* @class GroupItemMetadataProvider
* @module Data
* @namespace Slick.Data
* @constructor
* @param options
*/
function GroupItemMetadataProvider(options) {
var _grid;
var _defaults = {
groupCssClass: "slick-group",
groupTitleCssClass: "slick-group-title",
totalsCssClass: "slick-group-totals",
groupFocusable: true,
totalsFocusable: false,
toggleCssClass: "slick-group-toggle",
toggleExpandedCssClass: "expanded",
toggleCollapsedCssClass: "collapsed",
enableExpandCollapse: true,
groupFormatter: defaultGroupCellFormatter,
totalsFormatter: defaultTotalsCellFormatter
};
options = $.extend(true, {}, _defaults, options);
function defaultGroupCellFormatter(row, cell, value, columnDef, item) {
if (!options.enableExpandCollapse) {
return item.title;
}
var indentation = item.level * 15 + "px";
return "<span class='" + options.toggleCssClass + " " +
(item.collapsed ? options.toggleCollapsedCssClass : options.toggleExpandedCssClass) +
"' style='margin-left:" + indentation +"'>" +
"</span>" +
"<span class='" + options.groupTitleCssClass + "' level='" + item.level + "'>" +
item.title +
"</span>";
}
function defaultTotalsCellFormatter(row, cell, value, columnDef, item) {
return (columnDef.groupTotalsFormatter && columnDef.groupTotalsFormatter(item, columnDef)) || "";
}
function init(grid) {
_grid = grid;
_grid.onClick.subscribe(handleGridClick);
_grid.onKeyDown.subscribe(handleGridKeyDown);
}
function destroy() {
if (_grid) {
_grid.onClick.unsubscribe(handleGridClick);
_grid.onKeyDown.unsubscribe(handleGridKeyDown);
}
}
function handleGridClick(e, args) {
var item = this.getDataItem(args.row);
if (item && item instanceof Slick.Group && $(e.target).hasClass(options.toggleCssClass)) {
var range = _grid.getRenderedRange();
this.getData().setRefreshHints({
ignoreDiffsBefore: range.top,
ignoreDiffsAfter: range.bottom
});
if (item.collapsed) {
this.getData().expandGroup(item.groupingKey);
} else {
this.getData().collapseGroup(item.groupingKey);
}
e.stopImmediatePropagation();
e.preventDefault();
}
}
// TODO: add -/+ handling
function handleGridKeyDown(e, args) {
if (options.enableExpandCollapse && (e.which == $.ui.keyCode.SPACE)) {
var activeCell = this.getActiveCell();
if (activeCell) {
var item = this.getDataItem(activeCell.row);
if (item && item instanceof Slick.Group) {
var range = _grid.getRenderedRange();
this.getData().setRefreshHints({
ignoreDiffsBefore: range.top,
ignoreDiffsAfter: range.bottom
});
if (item.collapsed) {
this.getData().expandGroup(item.groupingKey);
} else {
this.getData().collapseGroup(item.groupingKey);
}
e.stopImmediatePropagation();
e.preventDefault();
}
}
}
}
function getGroupRowMetadata(item) {
return {
selectable: false,
focusable: options.groupFocusable,
cssClasses: options.groupCssClass,
columns: {
0: {
colspan: "*",
formatter: options.groupFormatter,
editor: null
}
}
};
}
function getTotalsRowMetadata(item) {
return {
selectable: false,
focusable: options.totalsFocusable,
cssClasses: options.totalsCssClass,
formatter: options.totalsFormatter,
editor: null
};
}
return {
"init": init,
"destroy": destroy,
"getGroupRowMetadata": getGroupRowMetadata,
"getTotalsRowMetadata": getTotalsRowMetadata
};
}
})(jQuery);

View File

@ -0,0 +1,173 @@
(function ($) {
/***
* A sample AJAX data store implementation.
* Right now, it's hooked up to load Hackernews stories, but can
* easily be extended to support any JSONP-compatible backend that accepts paging parameters.
*/
function RemoteModel() {
// private
var PAGESIZE = 50;
var data = {length: 0};
var searchstr = "";
var sortcol = null;
var sortdir = 1;
var h_request = null;
var req = null; // ajax request
// events
var onDataLoading = new Slick.Event();
var onDataLoaded = new Slick.Event();
function init() {
}
function isDataLoaded(from, to) {
for (var i = from; i <= to; i++) {
if (data[i] == undefined || data[i] == null) {
return false;
}
}
return true;
}
function clear() {
for (var key in data) {
delete data[key];
}
data.length = 0;
}
function ensureData(from, to) {
if (req) {
req.abort();
for (var i = req.fromPage; i <= req.toPage; i++)
data[i * PAGESIZE] = undefined;
}
if (from < 0) {
from = 0;
}
if (data.length > 0) {
to = Math.min(to, data.length - 1);
}
var fromPage = Math.floor(from / PAGESIZE);
var toPage = Math.floor(to / PAGESIZE);
while (data[fromPage * PAGESIZE] !== undefined && fromPage < toPage)
fromPage++;
while (data[toPage * PAGESIZE] !== undefined && fromPage < toPage)
toPage--;
if (fromPage > toPage || ((fromPage == toPage) && data[fromPage * PAGESIZE] !== undefined)) {
// TODO: look-ahead
onDataLoaded.notify({from: from, to: to});
return;
}
var url = "http://api.thriftdb.com/api.hnsearch.com/items/_search?filter[fields][type][]=submission&q=" + searchstr + "&start=" + (fromPage * PAGESIZE) + "&limit=" + (((toPage - fromPage) * PAGESIZE) + PAGESIZE);
if (sortcol != null) {
url += ("&sortby=" + sortcol + ((sortdir > 0) ? "+asc" : "+desc"));
}
if (h_request != null) {
clearTimeout(h_request);
}
h_request = setTimeout(function () {
for (var i = fromPage; i <= toPage; i++)
data[i * PAGESIZE] = null; // null indicates a 'requested but not available yet'
onDataLoading.notify({from: from, to: to});
req = $.jsonp({
url: url,
callbackParameter: "callback",
cache: true,
success: onSuccess,
error: function () {
onError(fromPage, toPage)
}
});
req.fromPage = fromPage;
req.toPage = toPage;
}, 50);
}
function onError(fromPage, toPage) {
alert("error loading pages " + fromPage + " to " + toPage);
}
function onSuccess(resp) {
var from = resp.request.start, to = from + resp.results.length;
data.length = Math.min(parseInt(resp.hits),1000); // limitation of the API
for (var i = 0; i < resp.results.length; i++) {
var item = resp.results[i].item;
// Old IE versions can't parse ISO dates, so change to universally-supported format.
item.create_ts = item.create_ts.replace(/^(\d+)-(\d+)-(\d+)T(\d+:\d+:\d+)Z$/, "$2/$3/$1 $4 UTC");
item.create_ts = new Date(item.create_ts);
data[from + i] = item;
data[from + i].index = from + i;
}
req = null;
onDataLoaded.notify({from: from, to: to});
}
function reloadData(from, to) {
for (var i = from; i <= to; i++)
delete data[i];
ensureData(from, to);
}
function setSort(column, dir) {
sortcol = column;
sortdir = dir;
clear();
}
function setSearch(str) {
searchstr = str;
clear();
}
init();
return {
// properties
"data": data,
// methods
"clear": clear,
"isDataLoaded": isDataLoaded,
"ensureData": ensureData,
"reloadData": reloadData,
"setSort": setSort,
"setSearch": setSearch,
// events
"onDataLoading": onDataLoading,
"onDataLoaded": onDataLoaded
};
}
// Slick.Data.RemoteModel
$.extend(true, window, { Slick: { Data: { RemoteModel: RemoteModel }}});
})(jQuery);