From 38e6600f127bb36cc9af7e2cb5673fd7719f434b Mon Sep 17 00:00:00 2001 From: ekarudianto Date: Mon, 30 Nov 2015 15:25:48 +0700 Subject: [PATCH 1/5] adding new sortableType parameter, adding new convertion to date if the sortableType is date, remove case sensitive --- js/src/treegrid/treegrid.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/js/src/treegrid/treegrid.js b/js/src/treegrid/treegrid.js index 19c80e8..ad0e624 100644 --- a/js/src/treegrid/treegrid.js +++ b/js/src/treegrid/treegrid.js @@ -2234,10 +2234,11 @@ links.TreeGrid.Header.prototype.repaint = function () { domField.onclick = function () { dataConnector.setSorting([{ field: field, + type: (type) ? type : "string", order: (order === 'asc') ? 'desc' : (order === 'desc') ? null : 'asc' }]); } - })(column.name, order) + })(column.name, column.sortableType, order) } } } @@ -4641,11 +4642,12 @@ links.DataTable.prototype._applySortingAndFilters = function () { var orders = []; for (var f = 0, fMax = this.sorting.length; f < fMax; f++) { var entry = this.sorting[f]; - if (entry.field && entry.order) { + if (entry.field && entry.order && entry.type) { var order = entry.order.toLowerCase(); if (order == 'asc' || order == 'desc') { orders.push({ 'field': entry.field, + 'type': entry.type, 'direction': ((order == 'asc') ? 1 : -1) }); } @@ -4662,9 +4664,12 @@ links.DataTable.prototype._applySortingAndFilters = function () { for (var i = 0; i < len; i++) { var order = orders[i]; var field = order.field; + var type = order.type; var direction = order.direction; + var aField = (!a[field]) ? "" : (type == "date") ? new Date(a[field]) : a[field].toLowerCase(); + var bField = (!b[field]) ? "" : (type == "date") ? new Date(b[field]) : b[field].toLowerCase(); - if (a[field] == b[field]) { + if (aField == bField) { if (i == len - 1) { return 0; } @@ -4673,7 +4678,7 @@ links.DataTable.prototype._applySortingAndFilters = function () { } } else { - return (a[field] > b[field]) ? direction : -direction; + return (aField > bField) ? direction : -direction; } } }); From 9bbcdcc9b49956587ebc778705eeba85726ddf47 Mon Sep 17 00:00:00 2001 From: ekarudianto Date: Mon, 30 Nov 2015 15:30:09 +0700 Subject: [PATCH 2/5] adding minified js --- js/src/treegrid/treegrid-min.js | 175 -------------------------------- js/src/treegrid/treegrid.min.js | 38 +++++++ 2 files changed, 38 insertions(+), 175 deletions(-) delete mode 100644 js/src/treegrid/treegrid-min.js create mode 100644 js/src/treegrid/treegrid.min.js diff --git a/js/src/treegrid/treegrid-min.js b/js/src/treegrid/treegrid-min.js deleted file mode 100644 index 74784f6..0000000 --- a/js/src/treegrid/treegrid-min.js +++ /dev/null @@ -1,175 +0,0 @@ -/* - - Licensed under the Apache License, Version 2.0 (the "License"); you may not - use this file except in compliance with the License. You may obtain a copy - of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - License for the specific language governing permissions and limitations under - the License. - - Copyright (c) 2011-2015 Almende B.V. - - @author Jos de Jong, - @date 2015-11-20 - @version 1.8.0 -*/ -typeof links==="undefined"&&(links={});typeof google==="undefined"&&(google=void 0); -links.TreeGrid=function(a,b){if(!Array.prototype.indexOf)Array.prototype.indexOf=function(a){for(var b=0;b=10)try{console.log("Warning: maximum number of loops exceeded")}catch(b){}};links.TreeGrid.Frame.prototype.onRangeChange=function(){this._updateVisibleWindow();this.update();this.repaint();for(this.reflow();this.reflow();)this.repaint()};links.TreeGrid.Frame.prototype.getVisibleWindow=function(){return this.window}; -links.TreeGrid.Frame.prototype.update=function(){this.grid&&this.grid.update()};links.TreeGrid.Frame.prototype._updateVisibleWindow=function(){var a=this.grid,b=this.frameHeight,c=this.frameWidth,d=a?a.getTop():0,a=a?a.getHeight():0,f=this.verticalScroll?this.verticalScroll.get():0;this.top=a>0&&b>0&&f>0?(d+a-b)/(a-b)*f:0;this.window={left:this.left,top:this.top,height:b,width:c}}; -links.TreeGrid.Frame.prototype.reflow=function(){var a=!1,b=this.dom,c=this.grid;c&&(c=c.reflow(),a=a||c);c=b.mainFrame?b.mainFrame.clientHeight:0;b=b.mainFrame?b.mainFrame.clientWidth:0;a=(a=a||this.frameHeight!=c)||this.frameWidth!=b;this.frameHeight=c;this.frameWidth=b;a&&(this.verticalScroll.setInterval(0,this.gridHeight-c),this._updateVisibleWindow());this.verticalScroll.reflow();return a};links.TreeGrid.Frame.prototype.updateHeight=function(a,b){a==this.grid&&(this.gridHeight+=b)}; -links.TreeGrid.Frame.prototype.repaint=function(){this._repaintFrame();this._repaintScrollbars();this._repaintGrid()}; -links.TreeGrid.Frame.prototype._repaintFrame=function(){var a=this,b=this.dom,c=this.options,d=b.mainFrame;if(!d){d=document.createElement("DIV");d.className="treegrid-frame";d.style.position="relative";d.style.overflow="hidden";d.style.left="0px";d.style.top="0px";d.frame=this;this.container.appendChild(d);b.mainFrame=d;links.TreeGrid.addEventListener(d,"mousedown",function(b){a.onMouseDown(b)});links.TreeGrid.addEventListener(d,"mouseover",function(b){a.onMouseOver(b)});links.TreeGrid.addEventListener(d, -"mouseleave",function(b){a.onMouseLeave(b)});links.TreeGrid.addEventListener(d,"mousewheel",function(b){a.onMouseWheel(b)});links.TreeGrid.addEventListener(d,"touchstart",function(b){a.onTouchStart(b)});var f=document.createElement("div");f.innerHTML="1 item";f.className="treegrid-drag-image";this.dom.dragImage=f;links.dnd.makeDraggable(d,{dragImage:f,dragImageOffsetX:10,dragImageOffsetY:-10,dragStart:function(b){return a.onDragStart(b)}})}d.style.width=c.width||"100%";d.style.height=c.height||"100%"; -c=b.itemFrame;if(!c)c=document.createElement("DIV"),c.style.position="absolute",c.style.left="0px",c.style.top="0px",c.style.width="100%",c.style.height="0px",b.mainFrame.appendChild(c),b.itemFrame=c};links.TreeGrid.Frame.prototype._repaintGrid=function(){this.grid&&this.grid.repaint()}; -links.TreeGrid.Frame.prototype._repaintScrollbars=function(){var a=this.dom,b=a.scrollContainer;if(!b){b=document.createElement("div");b.style.position="absolute";b.style.zIndex=9999;b.style.right="0px";b.style.top="0px";b.style.height="100%";b.style.width="16px";a.mainFrame.appendChild(b);a.scrollContainer=b;var c=this;verticalScroll=new links.TreeGrid.VerticalScroll(b);verticalScroll.addOnChangeHandler(function(){c.onRangeChange()});this.verticalScroll=verticalScroll}this.verticalScroll.redraw()}; -links.TreeGrid.isArray=function(a){return a instanceof Array?!0:Object.prototype.toString.call(a)==="[object Array]"}; -links.TreeGrid.Grid=function(a,b){this.setData(a);this.dom={};this.options={items:{defaultHeight:24,minHeight:24}};b&&links.TreeGrid.extend(this.options,b);this.columns=[];this.itemsHeight=0;this.items=[];this.itemCount=void 0;this.visibleItems=[];this.expandedItems=[];this.headerHeight=this.iconsWidth=0;this.header=new links.TreeGrid.Header({options:this.options});this.header.setParent(this);this.errorHeight=this.emptyHeight=this.loadingHeight=0;this.height=this.options.items.defaultHeight;this.dropAreas= -[];this.dropAreaHeight=this.options.dropAreaHeight;this.limit=this.offset=0};links.TreeGrid.Grid.prototype=new links.TreeGrid.Node; -links.TreeGrid.Grid.prototype.update=function(){var a={offset:this.offset,limit:this.limit},a=this._getRangeFromWindow(this.getVisibleWindow(),a);this.offset=a.offset;this.limit=a.limit;for(var b=this,c=this.offset,d=this.limit,a=links.TreeGrid.mergeArray(this.visibleItems,this.expandedItems),f=0,e=a.length;f0&&(f.select(c.items[i]),accepted.length>1)){var e=c.items[i+accepted.length-1];e&&f.select(e,!1,!0)}a.dataTransfer.getData("srcFrame").onDragEnd(a)},f=0;fe.width)e.width=i,a=!0}c= -0;for(f=b.length;ce.width))e.width=i,a=!0;if(this.isVisible()){c=h=0;for(f=b.length;c0,i=d.totalItems!==f.itemCount;i&&f.setItemCount(d.totalItems);for(var d=a,j=a+b;d0&&(e.loading||!e.dirty&&e.data);)a++,b--,e=this.getItem(a);for(e=this.getItem(a+b-1);b>0&&(e.loading||!e.dirty&&e.data);)b--,e=this.getItem(a+b-1);for(var g=a,h=a+b;gl.length&&(l=h);f.setColumns(l);e==0&&f._updateHeader(f.columns);if(m)h=f.getItem(a+e),h.data=m,h.setFields(m,f.columns),h.error=void 0}f.onResize();c&&c()};g=function(c){for(var e=a,g=a+b;e0||this.totalItems===void 0?(this.repaint(),this.dataConnector.getItems(a,b,e,g)):c&&c()}; -links.TreeGrid.Grid.prototype._repaintHeader=function(){this.header.setVisible(this.showHeader&&this.itemCount!=void 0&&this.itemCount>0);this.header.repaint()}; -links.TreeGrid.Grid.prototype._repaintItems=function(){for(var a=this.isVisible(),b=this.visibleItems,c=0;c=this.offset+this.limit||!a)d.hide(),b.splice(c,1),c--;c++}c=this.offset;a=Math.min(this.offset+this.limit,this.itemCount||0);if(this.isVisible())for(;c0;)h=c.shift(),h.hide()};links.TreeGrid.Grid.prototype.expand=function(a){links.TreeGrid.isArray(a)||(a=[a]);for(var b=0;b0&&(this.itemsHeight+=(b+this.dropAreaHeight)*c);if(c<0){for(var c=this.itemCount,d=a;d=0;e--)if((f=b[e])&&f.top){d+=f.top+f.height;break}else d+=c;return f!=void 0?d+this.dropAreaHeight:this.headerHeight+c*a+this.dropAreaHeight*(a+1)}; -links.TreeGrid.Item=function(a){if(a)this.options=a.options,this.index=a.index||0,this.top=a.top||0;this.height=this.options.items.defaultHeight;this.fields=this.data=void 0;this.fieldsHeight=0;this.grid=void 0;this.gridHeight=0;this.loading=this.dirty=!1;this.loadingHeight=0;this.error=void 0;this.errorheight=0;this.dataTransfer={};this.dom={}};links.TreeGrid.Item.prototype=new links.TreeGrid.Node; -links.TreeGrid.Item.prototype.findItem=function(a){return this.data===a?this:this.grid?this.grid.findItem(a):null};links.TreeGrid.eval=function(a,b){var c=typeof a;if(c=="function")return a.call(b);else if(c=="string"){c=links.TreeGrid.evalHistory;if(!c)c={},links.TreeGrid.evalHistory=c;var d=c[a];d||(d=eval("f=("+a+");"),c[a]=d);return d.call(b)}else throw Error("Function must be of type function or string");}; -links.TreeGrid.Item.prototype.setFields=function(a,b){if(a&&b){for(var c=[],d=0,f=b.length;d