/** * ParamQuery Grid a.k.a. pqGrid v1.1.3 * * Copyright (c) 2012-2013 Paramvir Dhindsa * Released under GPL v3 license * http://paramquery.com/license * */ (function($){ "use strict"; $.paramquery=($.paramquery==null)?{}:$.paramquery; $.paramquery.xmlToArray=function(data,obj){ var itemParent=obj.itemParent; var itemNames=obj.itemNames; var arr=[]; var $items=$(data).find(itemParent); $items.each(function(i,item){ var $item=$(item); var arr2=[]; $(itemNames).each(function(j,itemName){ arr2.push($item.find(itemName).text()); }); arr.push(arr2); }); return arr; }; $.paramquery.tableToArray=function(tbl){ var $tbl=$(tbl); var colModel=[]; var data=[]; var cols=[]; var widths=[]; var $trfirst=$tbl.find("tr:first"); var $trsecond=$tbl.find("tr:eq(1)"); $trfirst.find("th,td").each(function(i,td){ var $td=$(td); var title=$td.html(); var width=$td.width(); var dataType="string"; var $tdsec=$trsecond.find("td:eq("+i+")"); var val=$tdsec.text(); var align=$tdsec.attr("align"); val=val.replace(/,/g,""); if(parseInt(val)==val && (parseInt(val)+"").length == val.length){ dataType="integer"; } else if(parseFloat(val)==val ){ dataType="float"; } var obj={title:title,width:width,dataType:dataType,align:align,dataIndx:i}; colModel.push(obj); }); $tbl.find("tr").each(function(i,tr){ if(i==0)return; var $tr=$(tr); var arr2=[]; $tr.find("td").each(function(j,td){ arr2.push($.trim($(td).html())); }); data.push(arr2); }); return {data:data,colModel:colModel}; }; $.paramquery.formatCurrency=function(val) { val = Math.round(val * 10) / 10; val = val + ""; if (val.indexOf(".") == -1) { val = val + ".0"; } var len = val.length; var fp=val.substring(0,len-2), lp=val.substring(len-2,len), arr=fp.match(/\d/g).reverse(), arr2=[]; for(var i=0;i0 && i%3==0){ arr2.push(","); } arr2.push(arr[i]); } arr2=arr2.reverse(); fp=arr2.join(""); return fp+lp; }; })(jQuery); /** * ParamQuery Pager a.k.a. pqPager */ (function($){ "use strict"; var fnPG={}; fnPG.options={ currentPage:0, totalPages:0, totalRecords:0, msg:"", rPPOptions:[10,20,30,40,50,100], rPP:20 }; fnPG._regional={ strPage:"Page {0} of {1}", strFirstPage:"First Page", strPrevPage:"Previous Page", strNextPage:"Next Page", strLastPage:"Last Page", strRefresh:"Refresh", strRpp:"Records per page:", strDisplay:"Displaying {0} to {1} of {2} items." }; $.extend(fnPG.options,fnPG._regional); fnPG._create=function(){ var that=this, thisOptions=this.options; this.element.addClass("pq-pager").css({}); this.first = $( "", { }) .appendTo( this.element ) .button({ icons: { primary:"pq-page-first" },text:false }).bind("click.paramquery",function(evt){ if(that.options.currentPage>1){ if ( that._trigger( "change", evt, { curPage: 1 } ) !== false ) { that.option( {currentPage:1} ); } } }); this.prev=$( "") .appendTo( this.element ) .button({icons:{primary:"pq-page-prev"},text:false}).bind("click",function(evt){ if(that.options.currentPage>1){ var currentPage=that.options.currentPage-1; if ( that._trigger( "change", evt,{ curPage: currentPage } ) !== false ) { that.option( {currentPage:currentPage} ); } } }); $("").appendTo(this.element); this.pagePlaceHolder=$("") .appendTo(this.element); $("").appendTo(this.element); this.next=$( "") .appendTo( this.element ) .button({icons:{primary:"pq-page-next"},text:false}).bind("click",function(evt){ var val=that.options.currentPage+1; if ( that._trigger( "change", evt, {curPage: val} ) !== false ) { that.option( {currentPage:val} ); } }); this.last=$( "") .appendTo( this.element ) .button({icons:{primary:"pq-page-last"},text:false}).bind("click",function(evt){ var val=that.options.totalPages; if ( that._trigger( "change", evt, {curPage: val} ) !== false ) { that.option( {currentPage:val} ); } }); $("").appendTo(this.element); this.$strRpp = $(""+this.options.strRpp+" ") .appendTo(this.element); this.$rPP=$("") .appendTo(this.element) .change(function(evt){ var val=$(this).val(); if (that._trigger("change", evt,{rPP: val}) !== false) { that.options.rPP=val; } }); $("").appendTo(this.element); this.$refresh=$("") .appendTo(this.element) .button({icons:{primary:"pq-refresh"},text:false}).bind("click",function(evt){ if ( that._trigger( "refresh", evt ) !== false ) { } }); $("").appendTo(this.element); this.$msg=$("") .appendTo( this.element ); this._refresh(); }; fnPG._refreshPage=function(){ var that=this; this.pagePlaceHolder.empty(); var strPage=this.options.strPage; var arr=strPage.split(" "); var str=""; $(arr).each(function(i,ele){ str+=""+ele+""; }); strPage=str.replace("{0}",""); strPage=strPage.replace("{1}", ""); var $temp=$( strPage ).appendTo(this.pagePlaceHolder); this.page=$( "") .replaceAll("span.textbox", $temp) .bind("change",function(evt){ var $this=$(this); var val=$this.val(); if(isNaN(val)||val<1){ $this.val(that.options.currentPage); return false; } val=parseInt(val); if(val>that.options.totalPages){ $this.val(that.options.currentPage); return false; } if ( that._trigger( "change", evt, { curPage: val }) !== false ) { that.option( {currentPage:val} ); } else{ $this.val(that.options.currentPage); return false; } }); this.$total=$temp.filter("span.total"); }; fnPG._refresh=function(){ this._refreshPage(); var sel=(this.$rPP); var thisOptions=this.options; this.$strRpp.text(thisOptions.strRpp); this.first.attr("title",thisOptions.strFirstPage); this.prev.attr("title",thisOptions.strPrevPage); this.next.attr("title",thisOptions.strNextPage); this.last.attr("title",thisOptions.strLastPage); this.$refresh.attr("title",thisOptions.strRefresh); sel.empty(); var opts = this.options.rPPOptions; for(var i=0;i=this.options.totalPages){ this.next.button({disabled:true}); this.last.button({disabled:true}); } else{ this.next.button({disabled:false}); this.last.button({disabled:false}); } if(this.options.currentPage<=1){ this.first.button({disabled:true}); this.prev.button({disabled:true}); } else{ this.first.button({disabled:false}); this.prev.button({disabled:false}); } this.page.val(this.options.currentPage); this.$total.text(this.options.totalPages); if(this.options.totalRecords>0){ var rPP = this.options.rPP; var currentPage = this.options.currentPage; var totalRecords = this.options.totalRecords; var begIndx = (currentPage-1)*rPP; var endIndx = currentPage*rPP; if(endIndx>totalRecords){ endIndx = totalRecords; } var strDisplay=this.options.strDisplay; strDisplay=strDisplay.replace("{0}",begIndx+1); strDisplay=strDisplay.replace("{1}",endIndx); strDisplay=strDisplay.replace("{2}",totalRecords); this.$msg.html(strDisplay); } else{ this.$msg.html(""); } }; fnPG._destroy=function(){ this.element.empty().removeClass("pq-pager").enableSelection(); }; fnPG._setOption=function(key,value){ if(key=="currentPage"||key=="totalPages")value=parseInt(value); $.Widget.prototype._setOption.call( this, key, value ); }; fnPG._setOptions=function(){ $.Widget.prototype._setOptions.apply( this, arguments ); this._refresh(); }; $.widget("paramquery.pqPager",fnPG); $.paramquery.pqPager.regional={}; $.paramquery.pqPager.regional['en']=fnPG._regional; $.paramquery.pqPager.setDefaults=function(obj){ for(var key in obj){ fnPG.options[key]=obj[key]; } $.widget("paramquery.pqPager",fnPG); $(".pq-pager").each(function(i,pager){ $(pager).pqPager("option",obj); }); }; })(jQuery); /** * ParamQuery Scrollbar a.k.a. pqScrollBar */ (function($){ "use strict"; var fnSB={}; fnSB.options={ length:200, num_eles:3, cur_pos:0, timeout:350, pace:'optimum', direction:'vertical' }; fnSB._destroy=function(){ this.element.removeClass("pq-scrollbar-vert").enableSelection().removeClass("pq-scrollbar-horiz").unbind('click.pq-scrollbar').empty(); this.element.removeData(); }; fnSB._create=function(){ this.length=this.options.length; this.direction=this.options.direction; this.num_eles=this.options.num_eles; var that=this; var ele=this.element.empty(); if(this.direction=="vertical"){ ele.addClass("pq-scrollbar-vert"); ele.html("
\
\
\
\
\
\
\
\
"); } else{ ele.addClass("pq-scrollbar-horiz"); ele.width(this.width); ele.html("
\
\ \
\
"); } this.element.disableSelection().bind('click.pq-scrollbar',function(evt){ if(that.options.disabled)return; if(that.$slider.is(":hidden"))return; if(that.direction=="vertical"){ var clickY=evt.pageY; var top_this=that.element.offset().top; var bottom_this=top_this+that.length; var topSlider= that.$slider.offset().top; var botSlider=topSlider+ that.$slider.height(); if(clickYtop_this+17 ){ var new_top = clickY-top_this; that.$slider.css("top",new_top); that._updateCurPosAndTrigger(evt); } else if(clickY>botSlider && clickYbotSlider){ that.$slider.css("left",top-that.element.offset().left-that.$slider.width()); that._updateCurPosAndTrigger(evt); } } }); var axis='x'; if(this.direction=="vertical")axis='y'; this.$slider = $("div.pq-sb-slider",this.element).draggable({axis:axis, helper: function(evt, ui){ that._setDragLimits(); return this; }, start:function(evt){ that.topWhileDrag=null; }, drag:function(evt){ that.dragging=true; var pace=that.options.pace; if(pace=="optimum") that._setNormalPace(evt); else if(pace=="fast") that._updateCurPosAndTrigger(evt); }, stop:function(evt){ that._updateCurPosAndTrigger(evt); that.dragging=false; that._refresh(); } }); function decr_cur_pos(evt){ if (that.options.cur_pos > 0) { that.options.cur_pos--; that.updateSliderPos(); that.scroll(evt); } } this.$top_btn = $("div.top-btn,div.left-btn",this.element).click(function(evt){ if(that.options.disabled)return; decr_cur_pos(evt); evt.preventDefault(); return false; }).mousedown(function(evt){ if(that.options.disabled)return; that.mousedownTimeout=window.setTimeout(function(){ that.mousedownInterval = window.setInterval(function(){ decr_cur_pos(evt) },50); },that.options.timeout) }).bind('mouseup mouseout',function(evt){ if(that.options.disabled)return; that._mouseup(evt); }); function incr_cur_pos(evt){ if (that.options.cur_pos < that.num_eles - 1) { that.options.cur_pos++; } that.updateSliderPos(); that.scroll(evt); } this.$bottom_btn = $("div.bottom-btn,div.right-btn",this.element).click(function(evt){ if(that.options.disabled)return; incr_cur_pos(evt); evt.preventDefault(); return false; }).mousedown(function(evt){ if(that.options.disabled)return; that.mousedownTimeout=window.setTimeout(function(){ that.mousedownInterval = window.setInterval(function(){ incr_cur_pos(evt) },50); },that.options.timeout) }).bind('mouseup mouseout',function(evt){ if(that.options.disabled)return; that._mouseup(evt); }); this._refresh(); } fnSB._mouseup=function(evt){ if(this.options.disabled)return; var that=this; window.clearTimeout(that.mousedownTimeout); that.mousedownTimeout=null; window.clearInterval(that.mousedownInterval); that.mousedownInterval=null; } fnSB._setDragLimits=function(){ if (this.direction == "vertical") { var top = this.element.offset().top+17; var bot = (top + this.length - 34 - this.slider_length); this.$slider.draggable("option","containment",[0,top,0,bot]); } else{ var top = this.element.offset().left+17; var bot = (top + this.length - 34 - this.slider_length); this.$slider.draggable("option","containment",[top,0,bot,0]); } } fnSB._refresh=function(){ if(this.options.num_eles<=1){ this.element.css("display","none"); } else{ this.element.css("display",""); } this.num_eles=this.options.num_eles; this.length=this.options.length; this._validateCurPos(); this.$slider.css("display",""); if(this.direction=="vertical"){ this.element.height(this.length); this._setSliderBgLength(); this.scroll_space =this.length-34-this.slider_length; if(this.scroll_space<4 ||this.num_eles<=1){ this.$slider.css("display","none"); } this.updateSliderPos(this.options.cur_pos); } else{ this.element.width(this.length); this._setSliderBgLength(); this.scroll_space =this.length-34-this.slider_length; if(this.scroll_space<4 ||this.num_eles<=1){ this.$slider.css("display","none"); } this.updateSliderPos(this.options.cur_pos); } } fnSB._setSliderBgLength=function(){ var outerHeight=this.length; var innerHeight=this.num_eles*40+outerHeight; var avail_space = outerHeight-34; var slider_height = avail_space* outerHeight/innerHeight; var slider_bg_ht=Math.round((slider_height-(8+3+3))/2); if(slider_bg_ht<1){ slider_bg_ht=1 } this.slider_length=8+3+3+2*slider_bg_ht; if(this.direction=="vertical"){ $("div.vert-slider-bg",this.element).height(slider_bg_ht); this.$slider.height(this.slider_length); } else{ $(".horiz-slider-bg",this.element).width(slider_bg_ht); this.$slider.width(this.slider_length); } } fnSB._updateCurPosAndTrigger = function(evt,top){ var that=this; var $slider=that.$slider; if(top==null){ top=(that.direction=="vertical")?parseInt($slider[0].style.top):parseInt($slider[0].style.left); } var scroll_space =that.length-34-((that.direction=="vertical")?$slider[0].offsetHeight:$slider[0].offsetWidth); var cur_pos = (top-17)*(that.num_eles-1)/scroll_space; cur_pos=Math.round(cur_pos); if(that.options.cur_pos!=cur_pos){ if(this.dragging){ if(this.topWhileDrag!=null){ if(this.topWhileDrag < top && that.options.cur_pos>cur_pos){ return; } else if(this.topWhileDrag > top && that.options.cur_pos=this.num_eles){ this.options.cur_pos=this.num_eles-1; } if(this.options.cur_pos<0){ this.options.cur_pos=0; } } fnSB.updateSliderPos=function(){ var sT=(this.scroll_space*(this.options.cur_pos))/(this.num_eles-1); if(this.direction=="vertical") this.$slider.css("top",17+sT); else this.$slider.css("left",17+sT); } fnSB.scroll=function(evt){ var thisOptions=this.options; this._trigger("scroll",evt, {cur_pos: thisOptions.cur_pos, num_eles: thisOptions.num_eles}); } fnSB._setOption=function(key,value){ if(key=="disabled"){ if(value==true) this.$slider.draggable("disable"); else this.$slider.draggable("enable"); } $.Widget.prototype._setOption.call( this, key, value ); } fnSB._setOptions=function(){ $.Widget.prototype._setOptions.apply( this, arguments ); this._refresh(); } $.widget("paramquery.pqScrollBar",fnSB); })(jQuery); /** * ParamQuery Grid a.k.a. pqGrid*/ (function($) { "use strict"; var cCreateTable = function(that) { this.that = that; }; var _pG = cCreateTable.prototype; _pG._generateTables = function(objP) { var that = this.that, thisColModel = that.colModel, noColumns = thisColModel.length, thisOptions = that.options, columnBorders = thisOptions.columnBorders, rowBorders = thisOptions.rowBorders, SM = thisOptions.scrollModel, outerWidths = that.outerWidths; that._bufferObj_calcInitFinal(); var row = (objP) ? 0 : that.init, finalRow = (objP) ? objP.data.length - 1 : that["final"], data = (objP && objP.data) ? objP.data : that.data, offset = that.getRowIndxOffset(); if (!objP && (row == null || finalRow == null)) { that.$cont.empty(); that.$tbl = null; return; } if (!objP) { that._trigger("beforeTableView", null, { data: that.data, curPos: row, finalPos: finalRow, curPage: that.dataModel.curPage }); } var const_cls = "pq-grid-cell "; if (!thisOptions.wrap || objP) const_cls += "pq-wrap-text "; var tblClass = 'pq-grid-table '; if (columnBorders) tblClass += "pq-grid-td-border-right "; if (rowBorders) tblClass += "pq-grid-td-border-bottom "; var buffer = [""]; var hidearrHS1 = []; if (1 == 1) { buffer.push(""); if (that.numberCell) { var wd = that.numberCellWidth + 1; buffer.push(""); } for (var col = 0; col < noColumns; col++) { var column = thisColModel[col]; if (column.hidden) { continue; } else if (that.hidearrHS[col]) { hidearrHS1.push(col); continue; } var wd = outerWidths[col]; buffer.push(""); } for (var k = 0; k < hidearrHS1.length; k++) { var col = hidearrHS1[k]; var column = thisColModel[col]; var wd = outerWidths[col]; buffer.push(""); } buffer.push(""); } this.offsetRow = null; do { var rowObj = data[row], rowData = rowObj, rowIndx = row, hidden = rowData.hidden, row_str = ""; if (hidden) { if (row == finalRow) { break; } row++; continue; } if (this.offsetRow == null && rowIndx != null) { this.offsetRow = (row - rowIndx); } this._generateRow(rowData, rowIndx, thisColModel, noColumns, hidearrHS1, offset, const_cls, buffer, objP); if (SM.scrollTillLastRow) { } else { if (row == finalRow) { break; } row++; } } while (1 == 1); that.scrollMode = false; if (!SM.scrollTillLastRow) { $.measureTime(function() { buffer.push("
"); var str = buffer.join(""); if (objP) { objP.$cont.empty(); var $tbl = $(str); objP.$cont.append($tbl); if (!that.tables) that.tables = []; var indx = -1; for (var l = 0; l < that.tables.length; l++) { var cont = that.tables[l].cont; if (cont == objP.$cont[0]) { indx = l; } } if (indx == -1) { that.tables.push({$tbl: $tbl, cont: objP.$cont[0]}); } else { that.tables[indx].$tbl = $tbl; } } else { if (that.$tbl == undefined) { that.$tbl = $(str); that.$cont.append(that.$tbl); } else { if (that.$td_edit != null) { that.quitEditMode(); } that.$cont.empty(); that.$tbl = $(str); that.$cont.append(that.$tbl); } } }, 'append stuff inside _generateTable'); } if (!objP) window.setTimeout(function() { that._fixTableViewPort(); that._trigger("refresh", null, { dataModel: that.dataModel, data: that.data, initV: that.init, initH: that.initH }); }, 0); }; _pG._renderCell = function(objP) { var that = this.that, rowIndxPage = objP.rowIndxPage, rowIndx = objP.rowIndx, rowData = objP.rowData, colIndx = objP.colIndx, $td = objP.$td, column = objP.column, dataIndx = column.dataIndx, wrap = objP.wrap, customData = objP.customData; var dataCell; if (column.render) { dataCell = column.render({ data: that.data, dataModel: that.dataModel, rowData: rowData, rowIndxPage: rowIndxPage, rowIndx: rowIndx, colIndx: colIndx, column: column, dataIndx: dataIndx, customData: customData }); } else { dataCell = rowData[dataIndx]; } if (dataCell === "" || dataCell == undefined) dataCell = " "; var cls = "pq-td-div"; if (wrap == false) cls += " pq-wrap-text"; var str = "
" + dataCell + "
"; if ($td != undefined) { $td.html(str); } return str; } _pG._generateRow = function(rowData, rowIndx, thisColModel, noColumns, hidearrHS1, offset, const_cls, buffer, objP) { var row_cls = "pq-grid-row"; var that = this.that, thisOptions = that.options, columnBorders = thisOptions.columnBorders, wrap = thisOptions.wrap, customData = thisOptions.customData; var objRender = {rowIndx: rowIndx + offset, rowIndxPage: rowIndx, rowData: rowData, wrap: wrap, customData: customData}; if (thisOptions.oddRowsHighlight && (rowIndx / 2 == parseInt(rowIndx / 2))) row_cls += " pq-grid-oddRow"; if (rowData.selectedRow) { row_cls += " pq-row-select ui-state-highlight"; } buffer.push(""); if (that.numberCell) { buffer.push("\
" + ((objP) ? " " : (rowIndx + 1)) + "
"); } for (var col = 0; col < noColumns; col++) { var column = thisColModel[col], dataIndx = column.dataIndx; objRender.column = column; objRender.colIndx = col; var cellSelection = false; { var selectedDataIndices = rowData.selectedDataIndices; if (selectedDataIndices) { cellSelection = selectedDataIndices[dataIndx]; } } if (column.hidden) { continue; } else if (that.hidearrHS[col]) { continue; } var strStyle = ""; var cls = const_cls; if (column.align == "right") { cls += ' pq-align-right'; } else if (column.align == "center") { cls += ' pq-align-center'; } if (col == that.freezeCols - 1 && columnBorders) { cls += " pq-last-freeze-col"; } if (column.className) { cls = cls + " " + column.className; } if (cellSelection) { cls = cls + " pq-cell-select ui-state-highlight"; } var indxStr = "pq-col-indx='" + col + "'"; if (objP) { indxStr += " pq-dataIndx='" + dataIndx + "'"; } var str = "\ " + this._renderCell(objRender) + ""; buffer.push(str) } for (var k = 0; k < hidearrHS1.length; k++) { var col = hidearrHS1[k]; var column = thisColModel[col], dataIndx = column.dataIndx; objRender.column = column; objRender.colIndx = col; var strStyle = ""; strStyle += "visibility:hidden;"; var cls = const_cls; if (column.align == "right") { cls += ' pq-align-right'; } else if (column.align == "center") { cls += ' pq-align-center'; } var indxStr = "pq-col-indx='" + col + "'"; if (objP) { indxStr += " pq-dataIndx='" + dataIndx + "'"; } var str = "\ " + this._renderCell(objRender) + ""; buffer.push(str) } buffer.push(""); return buffer; } var cRows = function(that) { this.that = that; this.options = that.options; this.selectedRows = []; this.isDirty = false; } var _p = cRows.prototype; _p._addToData = function(objP) { var location = this.options.dataModel.location; var data = (location == "remote") ? this.that.data : this.options.dataModel.data, indx = (location == "remote") ? objP.rowIndxPage : objP.rowIndx, rowData = data[indx]; rowData.selectedRow = true; } _p.setDirty = function() { if (this.selectedRows.length > 0) { this.isDirty = true; } } _p.removeAll = function(objP) { if (this.isDirty) { this.refresh(); } var raiseEvent = objP.raiseEvent, that = this.that, offset = (objP.offset == null) ? that.getRowIndxOffset() : obj.offset; var selectedRows = this.selectedRows.slice(0); for (var i = 0; i < selectedRows.length; i++) { var selR = selectedRows[i]; var rowIndx = selR.rowIndx; this.remove({rowIndx: rowIndx, offset: offset}); } } _p.refresh = function() { this.selectedRows = []; var data = this.options.dataModel.data; if (!data) return; for (var i = 0, len = data.length; i < len; i++) { var rowData = data[i]; if (rowData.selectedRow) { this.selectedRows.push({rowIndx: i}); } } this.isDirty = false; } _p.replace = function(obj) { if (this.isDirty) { this.refresh(); } var rowIndx = obj.rowIndx, offset = obj.offset = (obj.offset == null) ? this.that.getRowIndxOffset() : obj.offset, rowIndxPage = obj.rowIndxPage = rowIndx - offset, $tr = obj.$tr, evt = obj.evt; this.removeAll({raiseEvent: true}); this.add(obj); } _p.add = function(objP) { if (this.isDirty) { this.refresh(); } var rowIndx = objP.rowIndx, that = this.that, offset = (objP.offset == null) ? that.getRowIndxOffset() : objP.offset, rowIndxPage = objP.rowIndxPage = rowIndx - offset, $tr = objP.$tr, evt = objP.evt, selectedRows = this.selectedRows, isSelected = this.isSelected(objP); if (isSelected == null) { return false; } else if (this.isSelected(objP) == false) { var ret = this._boundRow(objP), $tr = ret; selectedRows.push({rowIndx: rowIndx}); this._addToData(objP); that._trigger("rowSelect", evt, { rowIndx: rowIndx, rowIndxPage: rowIndxPage, data: that.data, dataModel: that.dataModel, $tr: $tr }); } else { var indx = this.indexOf(objP); var arr2 = this.selectedRows.splice(indx, 1); this.selectedRows = this.selectedRows.concat(arr2); } } _p.remove = function(objP) { if (this.isDirty) { this.refresh(); } var rowIndx = objP.rowIndx, that = this.that, offset = (objP.offset == null) ? that.getRowIndxOffset() : objP.offset, rowIndxPage = objP.rowIndxPage = rowIndx - offset, evt = objP.evt, init = (that.init + offset - that.offsetRow), finall = (that['final'] + offset - that.offsetRow); if (this.isSelected(objP)) { var $tr = that.getRow({rowIndxPage: rowIndxPage}); if ($tr) $tr.removeClass("pq-row-select ui-state-highlight"); that._trigger("rowUnSelect", evt, { rowIndx: rowIndx, dataModel: that.dataModel, $tr: $tr }); this._removeFromData(objP); } var indx = this.indexOf(objP); if (indx != -1) { this.selectedRows.splice(indx, 1); } } _p.indexOf = function(obj) { if (this.isDirty) { this.refresh(); } var rowIndx = obj.rowIndx, selectedRows = this.selectedRows; for (var i = 0; i < selectedRows.length; i++) { if (selectedRows[i].rowIndx == rowIndx) { return i; } } return -1; } _p.isSelected = function(objP) { if (this.isDirty) { this.refresh(); } var location = this.options.dataModel.location; var data = (location == "remote") ? this.that.data : this.options.dataModel.data, indx = (location == "remote") ? objP.rowIndxPage : objP.rowIndx, rowData = data[indx]; return (rowData) ? ((rowData.selectedRow == null) ? false : rowData.selectedRow) : null; } _p.getSelection = function() { if (this.isDirty) { this.refresh(); } return this.selectedRows; } _p._removeFromData = function(objP) { var location = this.options.dataModel.location; var data = (location == "remote") ? this.that.data : this.options.dataModel.data, indx = (location == "remote") ? objP.rowIndxPage : objP.rowIndx, rowData = data[indx]; rowData.selectedRow = false; } _p._boundRow = function(obj) { var rowIndxPage = obj.rowIndxPage, rowIndx = obj.rowIndx, that = this.that, $tr = (obj.$tr == null) ? that.getRow({rowIndxPage: rowIndxPage}) : obj.$tr; if ($tr == null || $tr.length == 0) { return false; } $tr.addClass("pq-row-select ui-state-highlight"); return $tr; } var cCells = function(that) { this.options = that.options, this.that = that, this.selectedCells = []; } var _pC = cCells.prototype; _pC._addToData = function(objP) { var location = this.options.dataModel.location; var data = (location == "remote") ? this.that.data : this.options.dataModel.data, indx = (location == "remote") ? objP.rowIndxPage : objP.rowIndx, rowData = data[indx]; if (!rowData.selectedDataIndices) { rowData.selectedDataIndices = {}; } rowData.selectedDataIndices[objP.dataIndx] = true; } _pC._removeFromData = function(objP) { var location = this.options.dataModel.location; var data = (location == "remote") ? this.that.data : this.options.dataModel.data, indx = (location == "remote") ? objP.rowIndxPage : objP.rowIndx, rowData = data[indx]; if (rowData && rowData.selectedDataIndices) { rowData.selectedDataIndices[objP.dataIndx] = false; } } _pC.setDirty = function() { if (this.selectedCells.length > 0) { this.isDirty = true; } } _pC.removeAll = function(objP) { if (this.isDirty) { this.refresh(); } var raiseEvent = objP.raiseEvent, that = this.that, offset = (objP.offset == null) ? that.getRowIndxOffset() : obj.offset; var selectedCells = this.selectedCells.slice(0); for (var i = 0; i < selectedCells.length; i++) { var selC = selectedCells[i]; var rowIndx = selC.rowIndx, dataIndx = selC.dataIndx; this.remove({rowIndx: rowIndx, offset: offset, dataIndx: dataIndx}); } } _pC.isSelected = function(objP) { if (this.isDirty) { this.refresh(); } var location = this.options.dataModel.location; var that = this.that, data = (location == "remote") ? that.data : this.options.dataModel.data, indx = (location == "remote") ? objP.rowIndxPage : objP.rowIndx, dataIndx = (objP.dataIndx == null) ? that.colModel[objP.colIndx].dataIndx : objP.dataIndx, rowData = data[indx]; if (rowData == null) { return null; } if (rowData.selectedDataIndices) { if (rowData.selectedDataIndices[dataIndx]) { return true; } } return false; } _pC.refresh = function() { this.selectedCells = []; var data = this.options.dataModel.data; if (!data) return; for (var i = 0, len = data.length; i < len; i++) { var rowData = data[i]; if (rowData.selectedIndices && rowData.selectedDataIndices[dataIndx]) { this.selectedCells.push({rowIndx: i, dataIndx: dataIndx}); } } this.isDirty = false; } _pC.replace = function(obj) { if (this.isDirty) { this.refresh(); } var rowIndx = obj.rowIndx, colIndx = obj.colIndx, offset = obj.offset = (obj.offset == null) ? this.that.getRowIndxOffset() : obj.offset, rowIndxPage = obj.rowIndxPage = rowIndx - offset, $td = obj.$td, evt = obj.evt; this.removeAll({raiseEvent: true}); this.add(obj); } _pC.add = function(objP) { if (this.isDirty) { this.refresh(); } var rowIndx = objP.rowIndx, that = this.that, offset = (objP.offset == null) ? that.getRowIndxOffset() : objP.offset, rowIndxPage = objP.rowIndxPage = rowIndx - offset, colIndx = objP.colIndx = (objP.colIndx == null) ? that.getColIndxFromDataIndx(objP.dataIndx) : objP.colIndx, dataIndx = objP.dataIndx = (objP.dataIndx == null) ? that.colModel[colIndx].dataIndx : objP.dataIndx, evt = objP.evt, selectedCells = this.selectedCells, isSelected = this.isSelected(objP); if (isSelected == null) { return false; } else if (isSelected == false) { var $td = that.getCell({rowIndxPage: rowIndxPage, colIndx: colIndx}); if ($td) $td.addClass("pq-cell-select ui-state-highlight"); selectedCells.push({rowIndx: rowIndx, dataIndx: dataIndx}); this._addToData(objP); that._trigger("cellSelect", evt, { rowIndx: rowIndx, rowIndxPage: rowIndxPage, colIndx: colIndx, dataIndx: dataIndx, data: that.data, dataModel: that.dataModel, $td: $td }); } else { var indx = this.indexOf(objP); var arr2 = this.selectedCells.splice(indx, 1); this.selectedCells = this.selectedCells.concat(arr2); } } _pC.remove = function(objP) { if (this.isDirty) { this.refresh(); } var rowIndx = objP.rowIndx, that = this.that, dataIndx = (objP.dataIndx == null) ? that.colModel[objP.colIndx].dataIndx : objP.dataIndx, colIndx = (objP.colIndx == null) ? that.getColIndxFromDataIndx(dataIndx) : objP.colIndx, offset = (objP.offset == null) ? that.getRowIndxOffset() : objP.offset, rowIndxPage = objP.rowIndxPage = rowIndx - offset, evt = objP.evt, init = (that.init + offset), finall = (that['final'] + offset); if (this.isSelected(objP)) { var $td = that.getCell({rowIndxPage: rowIndxPage, colIndx: colIndx}); if ($td) $td.removeClass("pq-cell-select ui-state-highlight"); that._trigger("cellUnSelect", evt, { rowIndx: rowIndx, colIndx: colIndx, dataIndx: dataIndx, dataModel: that.dataModel, $td: $td }); this._removeFromData(objP); } var indx = this.indexOf(objP); if (indx != -1) { this.selectedCells.splice(indx, 1); } } _pC.indexOf = function(obj) { if (this.isDirty) { this.refresh(); } var rowIndx = obj.rowIndx, that = this.that, dataIndx = obj.dataIndx = (obj.dataIndx == null) ? that.colModel[obj.colIndx].dataIndx : obj.dataIndx; var selectedCells = this.selectedCells; for (var i = 0; i < selectedCells.length; i++) { var sCell = selectedCells[i]; if (sCell.rowIndx == rowIndx && sCell.dataIndx == dataIndx) { return i; } } return -1; } _pC.getSelection = function() { if (this.isDirty) { this.refresh(); } return this.selectedCells; } var fn = {}; fn.options = { bottomVisible: true, colModel: null, columnBorders: true, customData: null, dataModel: { cache: false, curPage: 0, totalPages: 0, rPP: 10, location: "local", sorting: "local", sortDir: "up", method: "GET", rPPOptions: [10, 20, 50, 100] }, direction: "", draggable: false, editable: true, editModel: {clicksToEdit: 1, saveKey: ''}, flexHeight: false, flexWidth: false, freezeCols: 0, getDataIndicesFromColIndices: true, height: 400, hoverMode: 'row', minWidth: 50, numberCell: true, numberCellWidth: 50, oddRowsHighlight: true, resizable: false, roundCorners: true, rowBorders: true, scrollModel: {pace: "fast", horizontal: true}, selectionModel: {type: 'row', mode: 'range'}, sortable: true, title: " ", topVisible: true, treeViewModel: null, width: 600, wrap: true } fn._regional = { strLoading: "Loading", strAdd: "Add", strEdit: "Edit", strDelete: "Delete", strSearch: "Search", strNothingFound: "Nothing found", strSelectedmatches: "Selected {0} of {1} match(es)", strPrevResult: "Previous Result", strNextResult: "Next Result" } $.extend(fn.options, fn._regional); fn._destroyResizable = function() { if (this.element.data("resizable")) this.element.resizable('destroy'); } fn._destroyDraggable = function() { if (this.element.data("draggable")) this.element.draggable('destroy'); } fn._disable = function() { if (this.$disable == null) this.$disable = $("
").css("opacity", 0.2).appendTo(this.element); } fn._enable = function() { if (this.$disable) { this.element[0].removeChild(this.$disable[0]); this.$disable = null; } } fn._destroy = function() { this._destroyResizable(); this._destroyDraggable(); this.element.empty(); this.element.css('height', ""); this.element.css('width', ""); this.element.removeClass('pq-grid ui-widget ui-widget-content ui-corner-all').removeData(); } fn._findCellFromEvtCoords = function(evt) { if (this.$tbl == null) { return { $td: null, rowIndxPage: null, colIndx: null }; } var top = evt.pageY - this.$cont.offset().top; var left = evt.pageX - this.$cont.offset().left; var $trs = this.$tbl.find("tr"); var indx = 0, rowIndxPage = 0, colIndx = 0; for (var i = 1; i < $trs.length; i++) { if ($trs[i].offsetTop > top) { break; } else { indx++; } } var $tr = $($trs[indx]); rowIndxPage = parseInt($tr.attr('pq-row-indx')); var $tds = $tr.find("td"); indx = 0; for (var i = 1; i < $tds.length; i++) { if ($tds[i].offsetLeft > left) { break; } else { indx++; } } var $td = $($tds[indx]); if ($td[0].nodeName.toUpperCase() != "TD") { $td = $(evt.target).parent("td"); } colIndx = parseInt($td.attr('pq-col-indx')) return { $td: $td, rowIndxPage: rowIndxPage, colIndx: colIndx }; } fn._rangeSelectRow = function(initRowIndx, finalRowIndx, evt) { var that = this, rowSelection = that.sRows.getSelection(), rowSelection2 = rowSelection.slice(0); for (var i = 0; i < rowSelection2.length; i++) { var rowS = rowSelection2[i], row = rowS.rowIndx; if (row < initRowIndx || row > finalRowIndx) { that.sRows.remove({rowIndx: row}); } } for (var row = initRowIndx; row <= finalRowIndx; row++) { that.sRows.add({rowIndx: rowIndx}); } } fn._rangeSelect = function(initRowIndx, initColIndx, finalRowIndx, finalColIndx, evt) { var that = this, cellSelection = that.sCells.getSelection(), cellSelection2 = cellSelection.slice(0); for (var i = 0; i < cellSelection2.length; i++) { var cellS = cellSelection2[i], row = cellS.rowIndx, dataIndx = cellS.dataIndx, col = this.getColIndxFromDataIndx(dataIndx); if (row < initRowIndx || row > finalRowIndx) { that.sCells.remove({rowIndx: row, colIndx: col, dataIndx: dataIndx}); } else if (row == initRowIndx && col < initColIndx) { that.sCells.remove({rowIndx: row, colIndx: col, dataIndx: dataIndx}); } else if (row == finalRowIndx && col > finalColIndx) { that.sCells.remove({rowIndx: row, colIndx: col, dataIndx: dataIndx}); } } for (var col = 0; col < that.colModel.length; col++) { var column = that.colModel[col]; if (column.hidden) { continue; } var dataIndx = column.dataIndx; var row = initRowIndx; do { if (row == initRowIndx && col < initColIndx) { } else if (row == finalRowIndx && col > finalColIndx) { break; } else { that.sCells.add({rowIndx: row, colIndx: col, dataIndx: dataIndx}); } row++; } while (row <= finalRowIndx); } }; fn._blockSelect = function(initRowIndx, initColIndx, finalRowIndx, finalColIndx, evt) { var that = this, cellSelection = that.sCells.getSelection(), cellSelection2 = cellSelection.slice(0); for (var i = 0; i < cellSelection2.length; i++) { var cellS = cellSelection2[i], row = cellS.rowIndx, dataIndx = cellS.dataIndx, col = this.getColIndxFromDataIndx(dataIndx); if (col < initColIndx || col > finalColIndx) { that.sCells.remove({rowIndx: row, dataIndx: dataIndx, colIndx: col}); } else if (row < initRowIndx || row > finalRowIndx) { that.sCells.remove({rowIndx: row, dataIndx: dataIndx, colIndx: col}); } } for (var col = initColIndx; col <= finalColIndx; col++) { var column = that.colModel[col]; var dataIndx = column.dataIndx; if (column.hidden) { continue; } var row = initRowIndx; do { that.sCells.add({rowIndx: row, colIndx: col, dataIndx: dataIndx}); row++; } while (row <= finalRowIndx); } }; fn._create = function() { this.cTable = new cCreateTable(this); this.minWidth = this.options.minWidth; this.cols = []; this.dataModel = this.options.dataModel; this.widths = []; this.outerWidths = []; this.rowHeight = 22; this.hidearr = []; this.hidearrHS = []; this.numberCell = this.options.numberCell; this.numberCellWidth = this.options.numberCellWidth; this.freezeCols = this.options.freezeCols; this.tables = []; var that = this; this.$tbl = null; this._refreshHeader(); this._refreshWidths(); this._computeOuterWidths(); this.element.empty().addClass('pq-grid ui-widget ui-widget-content' + (this.options.roundCorners ? ' ui-corner-all' : '')) .append("
\
 
\
\
\ \
\
\
\
\
\
\ \
"); if (this.options.direction == "rtl") { this.element.addClass("pq-rtl"); } this._trigger("render", null, { dataModel: this.options.dataModel, colModel: this.colModel }); this.$top = $("div.pq-grid-top", this.element); this.$title = $("div.pq-grid-title", this.element); this.$toolbar = $("div.pq-grid-toolbar", this.element); this.$grid_inner = $("div.pq-grid-inner", this.element); this.$grid_right = $(".pq-grid-right", this.element); this.$header_o = $("div.pq-header-outer", this.$grid_right); if (!this.options.topVisible) { this.$top.css("display", "none"); } this.$header = $(".pq-grid-header", this.$grid_right); this.$header_left = $(this.$header[0]); this.$header_right = $(this.$header[1]); this.$bottom = $("div.pq-grid-bottom", this.element); if (!this.options.bottomVisible) { this.$bottom.css("display", "none"); } this.$footer = $("div.pq-grid-footer", this.element); this.$cont_o = $("div.pq-cont-right", this.$grid_right); this.$cont_fixed = $("div.pq-cont-fixed", this.$grid_right); this.$cont = $("div.pq-cont", this.$grid_right); this.$cont.on("click", function(evt) { return that._onClickCont(evt); }); this.$cont.on("click", ".pq-tree-expand-icon", function(evt) { return that.cTreeView._onClickTreeExpandIcon(evt); }); this.$cont.on("click", "td.pq-grid-cell", function(evt) { return that._onClickCell(evt); }); this.$cont.on("click", "tr.pq-grid-row", function(evt) { return that._onClickRow(evt); }); this.$cont.on("dblclick", "td.pq-grid-cell", function(evt) { return that._onDblClickCell(evt); }); this.$cont.on("dblclick", "tr.pq-grid-row", function(evt) { return that._onDblClickRow(evt); }); this.$cont.on("mouseenter", "td.pq-grid-cell", function(evt) { var $td = $(this); if (that._trigger("cellMouseEnter", evt, { $td: $td, dataModel: that.options.dataModel }) == false) { return false; } ; if (that.options.hoverMode == 'cell') { that.highlightCell($td); } }); this.$cont.on("mouseenter", "tr.pq-grid-row", function(evt) { var $tr = $(this); if (that._trigger("rowMouseEnter", evt, { $tr: $tr, dataModel: that.options.dataModel }) == false) { return false; } ; if (that.options.hoverMode == 'row') { that.highlightRow($tr); } }); this.$cont.on("mouseleave", "td.pq-grid-cell", function(evt) { var $td = $(this); if (that._trigger("cellMouseLeave", evt, { $td: $td, dataModel: that.options.dataModel }) == false) { return false; } ; if (that.options.hoverMode == 'cell') { that.unHighlightCell($td); } }); this.$cont.on("mouseleave", "tr.pq-grid-row", function(evt) { var $tr = $(this); if (that._trigger("rowMouseLeave", evt, { $tr: $tr, dataModel: that.options.dataModel }) == false) { return false; } ; if (that.options.hoverMode == 'row') { that.unHighlightRow($tr); } }); this.$cont.bind('mousewheel DOMMouseScroll', function(evt) { return that._onMouseWheel(evt); }) var prevVScroll = 0; this.$hvscroll = $("
").appendTo(this.$grid_inner); this.$vscroll = $("
").appendTo(this.$grid_inner); this.prevVScroll = 0; this.$vscroll.pqScrollBar({ pace: that.options.scrollModel.pace, direction: "vertical", cur_pos: 0, scroll: function(evt, obj) { that.scrollMode = true; that.selectCellRowCallback(function() { that.cTable._generateTables(); }); $.measureTime(function() { var num_eles; if (evt.originalEvent && evt.originalEvent.type == "drag") { num_eles = that._setScrollVNumEles(); } else { num_eles = that._setScrollVNumEles(true); } if (num_eles <= 1) that._setScrollHLength(); }, 'scrollBar setNumEles stuff') } }); var prevHScroll = 0; this.$hscroll = $("
").appendTo(this.$grid_inner); this.$hscroll.pqScrollBar({ direction: "horizontal", pace: that.options.scrollModel.pace, cur_pos: 0, scroll: function(evt, obj) { that._bufferObj_calcInitFinalH(); that._refreshHideArrHS(); that.scrollMode = true; that.selectCellRowCallback(function() { that._createHeader(); that._refreshHeaderSortIcons(); that.cTable._generateTables(); that._refreshOtherTables(); }); } }) this.element.width(this.options.width).height(this.options.height); this.element.width(this.element.width()); this.disableSelection(); if (window.opera) { this.$grid_inner.bind("keypress.pq-grid", { that: this }, function(evt) { that.keyPressDown(evt); }) } else { this.$grid_inner.bind("keydown.pq-grid", { that: this }, function(evt) { that.keyPressDown(evt); }) } this._refreshOptions(); this._refreshTitle(); var DM = this.options.dataModel; if (DM.sortIndx != null && DM.sorting == "local" && DM.location == "local") { this._refreshDataIndices(); var colIndx = this.getColIndxFromDataIndx(DM.sortIndx); this._sortLocalData(DM.sortIndx, DM.sortDir, this.colModel[colIndx].dataType, DM.data); } this._initData(); this._createSelectedRowsObject(); this._createSelectedCellsObject(); this._refresh(); }; fn._onMouseWheel = function(evt) { var that = this; var num = 0; var evt = evt.originalEvent; if (evt.wheelDelta) { num = evt.wheelDelta / 120; } else if (evt.detail) { num = evt.detail * -1 / 3; } var cur_pos = parseInt(that.$vscroll.pqScrollBar('option', 'cur_pos')); var new_pos = cur_pos - num; if (new_pos >= 0) { that.$vscroll.pqScrollBar('option', 'cur_pos', cur_pos - num).pqScrollBar('scroll'); } return false; }; fn._onDblClickCell = function(evt) { var that = this; var $td = $(evt.currentTarget); var obj = that.getCellIndices($td); var rowIndxPage = obj.rowIndxPage, offset = that.getRowIndxOffset(), rowIndx = rowIndxPage + offset, colIndx = obj.colIndx; if (that._trigger("cellDblClick", evt, { $td: $td, dataModel: that.options.dataModel, rowIndxPage: rowIndxPage, rowIndx: rowIndx, colIndx: colIndx }) == false) { return false; } if (this.isEditableCell({colIndx: colIndx}) && that.options.editModel.clicksToEdit > 1) { that._setSelection(null); if (that.options.selectionModel.type == 'cell') { that._setSelection({rowIndx: rowIndx, colIndx: colIndx}); } else if (that.options.selectionModel.type == 'row') { that._setSelection({rowIndx: rowIndx}); } that._editCell($td); } }; fn._onClickCont = function(evt) { var that = this; if (that.$td_edit) { if (!that._isEditCell(evt)) { that.quitEditMode(evt); } } } fn._onClickRow = function(evt) { var that = this; var $tr = $(evt.currentTarget); var rowIndxPage = parseInt($tr.attr("pq-row-indx")), offset = that.getRowIndxOffset(), rowIndx = rowIndxPage + offset; var objP = {rowIndx: rowIndx, evt: evt}; if (that._trigger("rowClick", evt, { $tr: $tr, rowIndxPage: rowIndxPage, rowIndx: rowIndx, dataModel: that.options.dataModel }) == false) { return false; } ; var selectionModel = that.options.selectionModel; if (selectionModel.type == 'row') { var rowSelection = that.sRows.getSelection(); if (rowSelection.length > 0) { if (evt.ctrlKey && selectionModel.mode != 'single') { if (that.sRows.indexOf(objP) != -1) { that.sRows.remove(objP); } else { that._setSelection(objP); } } else if (evt.shiftKey && selectionModel.mode != 'single') { var rowS = rowSelection[rowSelection.length - 1], rowIndx1 = rowS.rowIndx, initRowIndx = rowIndx1, finalRowIndx = rowIndx; if (rowIndx1 > rowIndx) { initRowIndx = rowIndx; finalRowIndx = rowIndx1; } var rowSelection2 = rowSelection.slice(0); for (var i = 0; i < rowSelection2.length; i++) { var rSel = rowSelection2[i], row = rSel.rowIndx; if (row < initRowIndx || row > finalRowIndx) { that.sRows.remove({rowIndx: row, evt: evt}); } } for (var row = initRowIndx; row <= finalRowIndx; row++) { that.sRows.add({rowIndx: row, evt: evt}); } that._setSelection(objP); } else { that.sRows.removeAll({raiseEvent: true}); that._setSelection(objP); } } else { that._setSelection(objP); } } } fn._onDblClickRow = function(evt) { var that = this; var $tr = $(evt.currentTarget); var rowIndxPage = parseInt($tr.attr("pq-row-indx")), offset = that.getRowIndxOffset(), rowIndx = rowIndxPage + offset; var objP = {rowIndx: rowIndx, evt: evt}; if (that._trigger("rowDblClick", evt, { $tr: $tr, rowIndxPage: rowIndxPage, rowIndx: rowIndx, dataModel: that.options.dataModel }) == false) { return false; } ; } fn.isEditableCell = function(obj) { var colIndx = obj.colIndx, column = (obj.column == null) ? (this.colModel[colIndx]) : obj.column, editable = true; if (this.options.editable == false) { editable = false; } if (column.editable == false) { editable = false; } return editable; } fn._getRowPQData = function(rowIndxPage, key, rowData) { var rowData = (rowData == null) ? this.data[rowIndxPage] : rowData; return rowData ? rowData[key] : null; } fn._setRowPQData = function(rowIndxPage, objP, rowData) { var rowData = (rowData == null) ? this.data[rowIndxPage] : rowData; if (!rowData) return; for (var key in objP) { rowData[key] = objP[key]; } } fn._onClickCell = function(evt) { var that = this, thisOptions = this.options, selectionModel = thisOptions.selectionModel; ; var $td = $(evt.currentTarget); var objP = that.getCellIndices($td); var rowIndxPage = objP.rowIndxPage, offset = that.getRowIndxOffset(), rowIndx = objP.rowIndx = rowIndxPage + offset, colIndx = objP.colIndx, dataIndx = objP.dataIndx = this.colModel[colIndx].dataIndx, column = that.colModel[colIndx]; objP.evt = evt; if (that._trigger("cellClick", evt, { $td: $td, rowIndxPage: rowIndxPage, rowIndx: rowIndx, colIndx: colIndx, dataIndx: dataIndx, column: column, dataModel: that.options.dataModel }) == false) { return false; } ; if (that.$td_edit) { that.quitEditMode(evt); } if (this.isEditableCell({column: column}) && thisOptions.editModel.clicksToEdit == '1') { that._setSelection(null); if (selectionModel.type == 'cell') { that._setSelection(objP); } else { that.bringRowIntoView({rowIndxPage: rowIndxPage}); $td = that._bringCellIntoView({rowIndxPage: rowIndxPage, colIndx: colIndx}); } window.setTimeout(function() { that.editCell(objP); }, 0) return; } if (selectionModel.type == 'cell') { var cellSelection = that.sCells.getSelection(); if (cellSelection.length > 0) { if (evt.ctrlKey && selectionModel.mode != 'single') { if (that.sCells.isSelected(objP)) { that.sCells.remove(objP); } else { that._setSelection(objP); } } else if (evt.shiftKey && selectionModel.mode != 'single') { var cellS = cellSelection[cellSelection.length - 1], rowIndx1 = cellS.rowIndx, colIndx1 = that.getColIndxFromDataIndx(cellS.dataIndx), initRowIndx = rowIndx1, finalRowIndx = rowIndx, initColIndx = colIndx1, finalColIndx = colIndx; if (rowIndx1 > rowIndx) { initRowIndx = rowIndx; finalRowIndx = rowIndx1; } if (that.options.selectionModel.mode == 'range') { if (rowIndx1 > rowIndx) { initColIndx = colIndx; finalColIndx = colIndx1; } if (rowIndx == rowIndx1 && colIndx < colIndx1) { initColIndx = colIndx; finalColIndx = colIndx1; } that._rangeSelect(initRowIndx, initColIndx, finalRowIndx, finalColIndx, evt); } else if (that.options.selectionModel.mode == 'block') { if (colIndx1 > colIndx) { initColIndx = colIndx; finalColIndx = colIndx1; } that._blockSelect(initRowIndx, initColIndx, finalRowIndx, finalColIndx, evt); } that._setSelection(objP); } else { that.sCells.removeAll({raiseEvent: true}); that._setSelection(objP); } } else { that._setSelection(objP); } } } fn.highlightCell = function($td) { $td.addClass("pq-grid-cell-hover ui-state-hover"); } fn.unHighlightCell = function($td) { $td.removeClass("pq-grid-cell-hover ui-state-hover"); } fn.highlightRow = function($tr) { $tr.addClass("pq-grid-row-hover ui-state-hover"); } fn.unHighlightRow = function($tr) { $tr.removeClass("pq-grid-row-hover ui-state-hover"); } fn._createSelectedRowsObject = function() { this.sRows = new cRows(this); } fn._createSelectedCellsObject = function() { this.sCells = new cCells(this); } fn._getCreateEventData = function() { return { dataModel: this.options.dataModel, data: this.data, colModel: this.options.colModel }; } fn._refreshOptions = function() { this._refreshDataOptions(); } fn._refreshDataOptions = function() { } fn.enableSelection = function() { this.$grid_inner.enableSelection(); } fn.disableSelection = function() { this.$grid_inner.disableSelection(); } fn._isEditCell = function(evt) { var $targ = $(evt.target); var $div = $targ.closest("div.pq-cell-selected-border-edit"); if ($div && $div.length > 0) { return true; } return false; } fn._findCellFromEvt = function(evt) { var $targ = $(evt.target); var $td = $targ.closest(".pq-grid-cell"); if ($td == null || $td.length == 0) { return {rowIndxPage: null, colIndx: null, $td: null}; } else { var obj = this.getCellIndices($td); obj.$td = $td; return obj; } } fn._initPager = function() { var DM = this.options.dataModel; var that = this; var obj2 = { rPP: DM.rPP, rPPOptions: DM.rPPOptions, change: function(evt, obj) { var DM = that.options.dataModel; if (obj.curPage != undefined) { DM.prevPage = DM.curPage; DM.curPage = obj.curPage; } if (obj.rPP != undefined) DM.rPP = obj.rPP; if (DM.paging == "remote") that.remoteRequest(); else { that.$td_edit = null; that._refreshDataFromDataModel(); that._refresh(); } }, refresh: function(evt) { that.refreshDataAndView(); } }; if (DM.paging) { this.$footer.pqPager(obj2); } else { } } fn._initData = function() { var that = this; var dataModel = this.options.dataModel; if (dataModel == undefined) { throw ("dataModel not found."); } this._initPager(); if (dataModel.location == "remote") { var that = this; this.generateLoading(); this.remoteRequest(); } else { this._refreshDataFromDataModel(); } } fn._refreshHideArrHS = function() { var that = this; for (var i = 0; i < that.colModel.length; i++) { that.hidearrHS[i] = false; } if (that.initH > 0) { var indx = that.freezeCols - 1 + that.initH; for (var i = that.freezeCols; i <= indx; i++) { if (that.colModel[i].hidden) { continue; } that.hidearrHS[i] = true; } } else { } } fn.generateLoading = function() { if (this.$loading) this.$loading.remove(); this.$loading = $("
").appendTo(this.element) $("
" + this.options.strLoading + "...
").appendTo(this.$loading); this.$loading.find("div.pq-loading-bg").css("opacity", 0.2); } fn.showLoading = function() { this.element.find("div.pq-loading").show(); } fn.hideLoading = function() { this.element.find("div.pq-loading").hide(); } fn._refreshDataFromDataModel = function() { var thisOptions = this.options, DM = thisOptions.dataModel; if (DM.data == null || DM.data.length == 0) { if (DM.paging) { DM.curPage = 0; DM.totalPages = 0; DM.totalRecords = 0; } return; } if (DM.paging && DM.paging == 'local') { DM.totalRecords = DM.data.length; DM.totalPages = Math.ceil(DM.data.length / DM.rPP); if (DM.curPage > DM.totalPages) { DM.curPage = DM.totalPages; } if (DM.curPage < 1 && DM.totalPages > 0) { DM.curPage = 1; } var begIndx = (DM.curPage - 1) * DM.rPP; var endIndx = DM.curPage * DM.rPP; if (endIndx > DM.data.length) { endIndx = DM.data.length; } this.data = DM.data.slice(begIndx, endIndx); } else { this.data = DM.data; } } fn.remoteRequest = function(callback_fn) { if (this.loading) { this.xhr.abort(); } var that = this; var url = ""; var dataURL = ""; var DM = this.options.dataModel; if (typeof DM.getUrl == "function") { var objURL = DM.getUrl(); if (objURL && objURL.url) url = objURL.url; if (objURL && objURL.data) dataURL = objURL.data; } if (!url) { return; } this.loading = true; this.showLoading(); this.xhr = $.ajax({ url: url, dataType: DM.dataType, async: true, cache: DM.cache, type: DM.method, data: dataURL, beforeSend: function(jqXHR, settings) { if (typeof DM.beforeSend == "function") { return DM.beforeSend(jqXHR, settings); } }, success: function(responseObj, textStatus, jqXHR) { var dataLoaded = false; if (typeof DM.getData == "function") { var retObj = DM.getData(responseObj, textStatus, jqXHR); DM.data = retObj.data; if (DM.paging) { if (DM.paging == "remote") { if (retObj.curPage) DM.curPage = retObj.curPage; if (retObj.totalRecords) { DM.totalRecords = retObj.totalRecords; DM.totalPages = Math.ceil(DM.totalRecords / DM.rPP); } } } that._refreshDataFromDataModel(); if (DM.sorting == "local" && DM.sortIndx != undefined) { that._refreshSortingDataAndView({sorting: true}); } else { that._refreshViewAfterDataSort(); } } else { throw ("getData callback not found!"); } that.hideLoading(); that.loading = false; that._trigger("load", null, { dataModel: that.options.dataModel, data: that.data }); if (typeof callback_fn == "function") callback_fn(); }, error: function(jqXHR, textStatus, errorThrown) { that.hideLoading(); that.loading = false; if (typeof DM.error == "function") { DM.error(jqXHR, textStatus, errorThrown); } } }); } fn._fixFireFoxContentEditableIssue = function() { if (window.postMessage) { this.$grid_inner.focus(); } } fn.selectCellRowCallback = function(fn) { var rowIndx, colIndx; if (this.$td_edit) { this.quitEditMode(); } var that = this; $.measureTime(function() { fn.call(that); }, '_generateTables'); if (this.options.flexHeight) { this.setGridHeightFromTable(); } if (this.options.flexWidth) { this._setGridWidthFromTable(); } } fn._refreshTitle = function() { this.$title.html(this.options.title); } fn._refreshDraggable = function() { if (this.options.draggable) { this.$title.addClass('draggable'); this.element.draggable({ handle: this.$title, start: function(evt, ui) { } }); } else { this._destroyDraggable(); } } fn._refreshResizable = function() { var that = this; if (this.options.resizable) { this.element.resizable({ helper: "ui-state-highlight", delay: 0, start: function(evt, ui) { $(ui.helper).css({ opacity: 0.5, background: "#ccc", border: "1px solid steelblue" }); }, resize: function(evt, ui) { }, stop: function(evt, ui) { that.options.height = that.element.height(); that.options.width = that.element.width(); that._refresh(); that.element.css("position", "relative"); } }); } else { this._destroyResizable(); } } fn.refresh = function() { this._refresh(); } fn._refreshDataIndices = function() { if (this.options.getDataIndicesFromColIndices == false) { return; } var thisColModel = this.colModel; for (var i = 0; i < thisColModel.length; i++) { var column = thisColModel[i]; if (column.dataIndx == null) { column.dataIndx = i; } } } fn._refresh = function() { var that = this; this._refreshDataIndices(); this._refreshResizable(); this._refreshDraggable(); this._setScrollHNumEles(); this._bufferObj_calcInitFinalH(); this._refreshHideArrHS(); this._computeOuterWidths(true); this._createHeader(); this._refreshHeaderSortIcons(); this._setInnerGridHeight(); this._setRightGridHeight(); this.selectCellRowCallback(function() { that.cTable._generateTables(); that._computeOuterWidths(); }); this._setScrollHLength(); this._setScrollVLength(); this._setScrollVNumEles(true); this._setScrollHLength(); this._refreshPager(); } fn._refreshPager = function() { var DM = this.options.dataModel; if (DM.paging) { this.$footer.pqPager("option", { currentPage: DM.curPage, totalPages: DM.totalPages, totalRecords: DM.totalRecords, rPP: DM.rPP, rPPOptions: DM.rPPOptions }); } } fn._refreshViewAfterDataSort = function() { this.selectCellRowCallback(function() { this.cTable._generateTables(); this._computeOuterWidths(); }) this._refreshHeaderSortIcons(); this._setRightGridHeight(); this._setScrollVLength(); this._setScrollVNumEles(true); this._setScrollHLength(); this._refreshPager(); } fn.refreshSortingDataAndView = function() { this._refreshSortingDataAndView({ sorting: true }); } fn.refreshDataAndView = function(keepSelection) { this.data = null; this.sRows.setDirty(); this.sCells.setDirty(); var DM = this.options.dataModel; if (DM.location == "remote") { DM.data = null; this.remoteRequest(); } else { this._refreshSortingDataAndView({keepSelection: keepSelection, sorting: true}); } } fn.getColIndxFromDataIndx = function(dataIndx) { var thisColModel = this.colModel; for (var i = 0; i < thisColModel.length; i++) { if (thisColModel[i].dataIndx == dataIndx) { return i; } } } fn._refreshSortingDataAndView = function(obj) { var sorting = obj.sorting, fn = obj.fn, keepSelection = obj.keepSelection; if (!keepSelection) { this.sRows.removeAll({ raiseEvent: true }); this.sCells.removeAll({raiseEvent: true}); } var DM = this.options.dataModel, thisColModel = this.colModel, indx = DM.sortIndx, colIndx = this.getColIndxFromDataIndx(indx); if (indx == null || colIndx == null) { sorting = false; } var dir = DM.sortDir; var that = this; if (sorting == true) { if (DM.sorting == "remote") { this.remoteRequest(fn); } else { var column = thisColModel[colIndx]; var dataType = column.dataType; this._sortLocalData(indx, dir, dataType, DM.data); this.sRows.setDirty(); this.sCells.setDirty(); this._refreshDataFromDataModel(); that._refreshViewAfterDataSort(); if (typeof fn == "function") fn(); } } else if (DM.location == "remote") { this.remoteRequest(fn); } else { if (this.data == null) { this._refreshDataFromDataModel(); } that._refreshViewAfterDataSort(); if (typeof fn == "function") fn(); } } fn._computeOuterWidths = function(basedOnWidthsOnly) { var options = this.options, columnBorders = options.columnBorders, thisColModel = this.colModel, thisColModelLength = thisColModel.length; for (var i = 0; i < thisColModelLength; i++) { var column = thisColModel[i]; this.outerWidths[i] = parseInt(column.width) + ((columnBorders) ? 1 : 0); } this.numberCell_outerWidth = this.numberCellWidth + 1; return; } fn._setOption = function(key, value) { this.refreshRequired = true; if (key == "height") { this.element.height(value); $.Widget.prototype._setOption.call(this, key, value); } else if (key == "width") { this.element.width(value); $.Widget.prototype._setOption.call(this, key, value); } else if (key == "title") { $.Widget.prototype._setOption.call(this, key, value); this._refreshTitle(); } else if (key == "roundCorners") { if (value) { this.element.addClass("ui-corner-all"); this.$top.addClass("ui-corner-top"); this.$bottom.addClass("ui-corner-bottom"); } else { this.element.removeClass("ui-corner-all"); this.$top.removeClass("ui-corner-top"); this.$bottom.removeClass("ui-corner-bottom"); } this.refreshRequired = false; } else if (key == "freezeCols") { if (!isNaN(value) && value >= 0 && parseInt(value) <= this.colModel.length - 2) { this.options.freezeCols = this.freezeCols = parseInt(value); this._setScrollHLength(); $.Widget.prototype._setOption.call(this, key, value); } } else if (key == "resizable") { $.Widget.prototype._setOption.call(this, key, value); } else if (key == "scrollModel") { var obj = value; for (var key in obj) { this.options.scrollModel[key] = obj[key]; } } else if (key == "dataModel") { $.Widget.prototype._setOption.call(this, key, value); var paging = value["paging"]; if (this.$footer.hasClass('pq-pager') == false && (paging == "local" || paging == "remote")) { this._initPager(); } else if (this.$footer.hasClass('pq-pager') && (paging != "local" && paging != "remote")) { this.$footer.pqPager('destroy'); this.$footer.html(" "); } this.refreshDataAndView(); } else if (key == "selectionModel") { var obj = value; for (var key in obj) { this.options.selectionModel[key] = obj[key]; } this.refreshRequired = false; } else if (key == "colModel") { $.Widget.prototype._setOption.call(this, key, value); this._refreshHeader(); this._refreshWidths(); this._refreshDataIndices(); } else if (key == "disabled") { if (value == true) { this._disable(); } else { this._enable(); } this.refreshRequired = false; } else if (key == "numberCell") { this.numberCell = value; $.Widget.prototype._setOption.call(this, key, value); } else if (key == "numberCellWidth") { this.numberCellWidth = value; $.Widget.prototype._setOption.call(this, key, value); } else if (key == "customData") { $.Widget.prototype._setOption.call(this, key, value); this.refreshRequired = false; } else if (key == "strLoading") { $.Widget.prototype._setOption.call(this, key, value); this.generateLoading(); this.refreshRequired = false; } else if (key == "topVisible") { if (value == true) this.$top.css("display", ""); else this.$top.css("display", "none"); } else if (key == "bottomVisible") { if (value == true) this.$bottom.css("display", ""); else this.$bottom.css("display", "none"); } else { $.Widget.prototype._setOption.call(this, key, value); } } fn._setOptions = function() { $.Widget.prototype._setOptions.apply(this, arguments); if (this.refreshRequired) { this._refresh(); } this.refreshRequired = true; } fn._generateCellRowOutline = function(obj) { var $td = obj.$td, $tr = obj.$tr, that = this; if ($tr) { var wd = that._calcRightEdgeCol(that.colModel.length - 1); wd -= 4; var ht = $tr[0].offsetHeight - 4; var $table = $($tr[0].offsetParent); var offsetParent = $table[0].offsetParent; var lft = $tr[0].offsetLeft + $table[0].offsetLeft; var top = $tr[0].offsetTop + $table[0].offsetTop; that._generateCellHighlighter(offsetParent, lft, top, wd, ht); } else if ($td) { var $table = $($td[0].offsetParent); var offsetParent = $table[0].offsetParent; var wd = $td[0].offsetWidth - 4; var ht = $td[0].offsetHeight - 4; var lft = $td[0].offsetLeft + $table[0].offsetLeft; var top = $td[0].offsetTop + $table[0].offsetTop; that._generateCellHighlighter(offsetParent, lft, top, wd, ht); } } fn._removeCellRowOutline = function() { if (this.$div_focus) { this._fixFireFoxContentEditableIssue(); this.$div_focus.remove(); this.$div_focus = null; } } fn._generateCellHighlighter = function(offsetParent, lft, top, wd, ht) { if (this.$div_focus && this.$div_focus[0].offsetParent == offsetParent) { if (this.$td_edit != null) { this._fixFireFoxContentEditableIssue(); this.$div_focus.empty().removeClass('pq-cell-selected-border-edit'); this.$td_edit = null; } this.$div_focus.css({ left: lft, top: top, height: ht, width: wd }); } else { if (this.$div_focus) this.$div_focus.remove(); this.$div_focus = $("
") .appendTo(offsetParent); this.$div_focus.css({ left: lft, top: top, height: ht, width: wd }); } } fn._selectRow = function(rowIndx, evt) { this.selectRow(rowIndx, evt) } fn._findfirstUnhiddenColIndx = function() { for (var i = 0; i < this.colModel.length; i++) { if (!this.colModel[i].hidden) { return i } } } fn.selectRow = function(obj) { var rowIndx = obj.rowIndx, evt = obj.evt, offset = obj.offset; if (evt && (evt.type == "keydown" || evt.type == "keypress")) { if (this.sRows.replace(obj) == false) { return false; } } else if (this.sRows.add(obj) == false) { return false; } if (evt != null) this._setGridFocus(); return true; } fn.scrollY = function(rowIndx) { this.$vscroll.pqScrollBar("option", "cur_pos", rowIndx).pqScrollBar("scroll"); } fn.bringRowIntoView = function(obj) { var rowIndxPage = obj.rowIndxPage; var init = this.init - this.offsetRow; var calcCurPos = this._calcCurPosFromRowIndxPage(rowIndxPage); if (calcCurPos < this.scrollCurPos) { this.$vscroll.pqScrollBar("option", "cur_pos", calcCurPos).pqScrollBar("scroll"); } var $tr = this.$tbl.find("tr[pq-row-indx=" + rowIndxPage + "]"); if ($tr[0] == undefined) { this.$vscroll.pqScrollBar("option", "cur_pos", calcCurPos).pqScrollBar("scroll"); } else { var td_bottom = $tr[0].offsetTop + $tr[0].offsetHeight, htCont = this.$cont[0].offsetHeight, htSB = this._getScollBarHorizontalHeight(); if (td_bottom > htCont - htSB) { var diff = td_bottom - (htCont - htSB); var $trs = this.$tbl.children().children("tr"); var ht = 0, indx = 0; $trs.each(function(i, tr) { ht += tr.offsetHeight; if (ht >= diff) { indx = i; return false; } }) var cur_pos = this.scrollCurPos + indx; var num_eles = this.$vscroll.pqScrollBar("option", "num_eles"); if (num_eles < cur_pos + 1) { num_eles = cur_pos + 1; } this.$vscroll.pqScrollBar("option", {num_eles: num_eles, cur_pos: cur_pos}).pqScrollBar("scroll"); } } } fn._bringCellIntoView = function(obj) { var rowIndxPage = obj.rowIndxPage, colIndx = obj.colIndx, tdneedsRefresh = false; var $td; if (this.hidearrHS[colIndx]) { this.hidearrHS[colIndx] = false; var cur_pos = colIndx - this.freezeCols - this._calcNumHiddenUnFrozens(colIndx); this.$hscroll.pqScrollBar("option", "cur_pos", cur_pos).pqScrollBar("scroll"); tdneedsRefresh = true; } else { var $td = this.$tbl.find("tr[pq-row-indx=" + rowIndxPage + "]>td[pq-col-indx=" + colIndx + "]"); if ($td.length == 0) { return false; } var td_right = this._calcRightEdgeCol(colIndx).width; var wd_scrollbar = 17; if (this.$vscroll.css("visibility") == "hidden" || this.$vscroll.css("display") == "none") { wd_scrollbar = 0; } if (td_right > this.$cont[0].offsetWidth - wd_scrollbar) { var diff = this._calcWidthCols(colIndx) - (this.$cont[0].offsetWidth - wd_scrollbar); var $tds = $td.parent("tr").children("td"); var data_length = this.colModel.length; var wd = 0, initH = 0; for (var i = this.freezeCols; i < data_length; i++) { if (!this.colModel[i].hidden) { wd += this.outerWidths[i]; } if (i == colIndx) { initH = i - this.freezeCols - this._calcNumHiddenUnFrozens(i); break; } else if (wd >= diff) { initH = i - this.freezeCols - this._calcNumHiddenUnFrozens(i) + 1; break; } } this.$hscroll.pqScrollBar("option", "cur_pos", initH).pqScrollBar("scroll"); tdneedsRefresh = true; } } if (tdneedsRefresh) { var $td = this.$tbl.find("tr[pq-row-indx=" + rowIndxPage + "]>td[pq-col-indx=" + colIndx + "]"); return $td; } else { return $td; } } fn.selection = function(obj) { var rowIndx = obj.rowIndx, colIndx = obj.colIndx, method = obj.method, type = obj.type; if (type == 'row') { return this['sRows'][method](obj); } else if (type == 'cell') { return this['sCells'][method](obj); } return; } fn.setSelection = function(obj) { if (obj == null || obj.rowIndx == null) { this.sRows.removeAll({raiseEvent: true}); this.sCells.removeAll({raiseEvent: true}); return; } this._bringPageIntoView(obj); return this._setSelection(obj); } fn._bringPageIntoView = function(obj) { var rowIndx = obj.rowIndx, that = this; var DM = this.options.dataModel; if (DM.paging == "local" && rowIndx >= 0) { var curPage = DM.curPage; var rPP = DM.rPP; var begIndx = (curPage - 1) * rPP; var endIndx = curPage * rPP; if (rowIndx >= begIndx && rowIndx < endIndx) { } else { DM.curPage = Math.ceil((rowIndx + 1) / rPP); this._refreshDataFromDataModel(); this._refreshViewAfterDataSort(); } } } fn._setSelection = function(obj) { if (obj == null) { this.sRows.removeAll({raiseEvent: true}); this.sCells.removeAll({raiseEvent: true}); return false; } var offset = obj.offset = (obj.offset == null) ? this.getRowIndxOffset() : obj.offset, rowIndx = obj.rowIndx = (obj.rowIndx == null) ? obj.rowIndxPage + offset : obj.rowIndx, rowIndxPage = obj.rowIndxPage = (obj.rowIndxPage == null) ? obj.rowIndx - offset : obj.rowIndxPage, colIndx = obj.colIndx, evt = obj.evt; if (rowIndxPage < 0 || colIndx < 0) { return false; } if (this.data == null || this.data.length == 0) { return false; } if (rowIndxPage >= this.data.length || colIndx >= this.colModel.length) { return false; } this.bringRowIntoView({rowIndxPage: rowIndxPage}); if (colIndx == null) { return this.selectRow({rowIndx: rowIndx, evt: evt}); } this._bringCellIntoView({rowIndxPage: rowIndxPage, colIndx: colIndx}); return this.selectCell({rowIndx: rowIndx, colIndx: colIndx, evt: evt}); } fn.saveEditCell = function() { if (this.$td_edit == null) return; var $td = this.$td_edit, obj = this.getCellIndices($td), offset = this.getRowIndxOffset(), colIndx = obj.colIndx, rowIndxPage = obj.rowIndxPage, rowIndx = obj.rowIndx = rowIndxPage + offset, thisColModel = this.colModel, column = obj.column = thisColModel[colIndx], dataIndx = obj.dataIndx = column.dataIndx, prevVal = this.data[rowIndxPage][dataIndx]; if (rowIndxPage != null) { var dataCell = this._getEditCellData(obj); if (dataCell != prevVal) { this.data[rowIndxPage][dataIndx] = dataCell; obj.data = this.data; if (this._trigger("cellSave", null, obj) == false) { return; } this.refreshRow(obj); this._fixTableViewPort(); var that = this; if (that.options.flexHeight) { that.setGridHeightFromTable(); that._fixIEFooterIssue(); } else { that.bringRowIntoView({rowIndxPage: rowIndxPage}); } } } } fn._fixTableViewPort = function() { var cont = this.$cont[0]; cont.scrollTop = 0; cont.scrollLeft = 0; } fn._fixIEFooterIssue = function() { $(".pq-grid-footer").css({position: "absolute"}); $(".pq-grid-footer").css({position: "relative"}); } fn.refreshColumn = function(obj) { var customData = this.options.customData, colIndx = obj.colIndx = (obj.colIndx == null) ? this.getColIndxFromDataIndx(obj.dataIndx) : obj.colIndx, offset = this.getRowIndxOffset(); for (var row = this.init; row <= this["final"]; row++) { var rowIndxPage = obj.rowIndxPage = row; obj.rowIndx = rowIndxPage + offset; var column = obj.column = this.colModel[colIndx]; obj.$td = this.getCell(obj); obj.rowData = this.data[rowIndxPage]; obj.customData = customData; this.cTable._renderCell(obj); } } fn.refreshCell = function(obj) { if (!this.data) return; var offset = obj.offset = (obj.offset == null) ? this.getRowIndxOffset() : obj.offset, rowIndx = obj.rowIndx = (obj.rowIndx == null) ? obj.rowIndxPage + offset : obj.rowIndx, rowIndxPage = obj.rowIndxPage = (obj.rowIndxPage == null) ? obj.rowIndx - offset : obj.rowIndxPage, dataIndx = obj.dataIndx, colIndx = obj.colIndx = (obj.colIndx == null) ? this.getColIndxFromDataIndx(dataIndx) : obj.colIndx, $td = obj.$td = (obj.$td == null) ? this.getCell(obj) : obj.$td, column = obj.column = this.colModel[colIndx], rowData = this.data[rowIndxPage]; if (!rowData) return; var objRender = obj; objRender.rowData = rowData; objRender.customData = this.options.customData; if ($td && $td.length > 0) this.cTable._renderCell(objRender); } fn.refreshRow = function(obj) { if (!this.data) return; var thisOptions = this.options, offset = obj.offset = (obj.offset == null) ? this.getRowIndxOffset() : obj.offset, rowIndx = obj.rowIndx = (obj.rowIndx == null) ? obj.rowIndxPage + offset : obj.rowIndx, rowIndxPage = obj.rowIndxPage = (obj.rowIndxPage == null) ? obj.rowIndx - offset : obj.rowIndxPage, $tr = (obj.$tr == null) ? this.getRow(obj) : obj.$tr, thisColModel = this.colModel, rowData = this.data[rowIndxPage]; if (!rowData) return; var objRender = {rowIndx: rowIndx, rowIndxPage: rowIndxPage, rowData: rowData, customData: thisOptions.customData}; for (var colIndx = 0; colIndx < thisColModel.length; colIndx++) { var column = thisColModel[colIndx]; var $td = $tr.find("td[pq-col-indx=" + colIndx + "]"); objRender.$td = $td; objRender.colIndx = colIndx; objRender.column = column; if ($td && $td.length > 0) this.cTable._renderCell(objRender); } } fn.quitEditMode = function(evt) { if (this.$td_edit) { var $td = this.$td_edit; this.disableSelection(); this._setGridFocus(); this._trigger("quitEditMode", evt, { $td: $td, dataModel: this.options.dataModel }); this._removeCellRowOutline(); this.$td_edit = null; } } fn.getData = function() { return this.data; } fn.getViewPortRowsIndx = function() { return {beginIndx: this.init, endIndx: this['final']}; } fn.getRowIndxOffset = function() { var DM = this.options.dataModel, paging = DM.paging, offset = 0; if (paging == "local" || paging == "remote") { var curPage = DM.curPage; var rPP = DM.rPP; offset = (rPP * (curPage - 1)); } return offset; } fn.getRowOffset = function() { return this.offsetRow; } fn._cellblurred = function() { this.$div_focus.remove(); this.$div_focus = null; this.$td_focus = null; this.$tr_focus = null; } fn.selectCell = function(obj) { var rowIndx = obj.rowIndx, colIndx = obj.colIndx, evt = obj.evt; if (evt && (evt.type == "keydown" || evt.type == "keypress")) { if (this.sCells.replace(obj) == false) { return false; } } else { if (this.sCells.add(obj) == false) { return false; } } if (evt != null) this._setGridFocus(); return true; } fn._setGridFocus = function() { var that = this; window.setTimeout(function() { if (that.$td_edit == null) { that.$grid_inner.focus(); } }, 0) } fn.getEditCell = function() { if (this.$td_edit) { return {$td: this.$td_edit, $cell: this.$div_focus}; } else { return null; } } fn.editCell = function(obj) { var $td = this.getCell(obj); if ($td != null && $td.length == 1) { if (this.$td_edit && this.$td_edit[0] != $td[0]) { this.quitEditMode(); } this._editCell($td); return $td; } } fn.getFirstEditableColIndx = function() { if (!this.options.editable) { return -1; } var colModel = this.colModel; for (var i = 0; i < colModel.length; i++) { var column = colModel[i]; if (column.editable == false) { continue; } return i; } return -1; } fn._editFirstCellInRow = function(obj) { var colIndx = this.getFirstEditableColIndx(); if (colIndx != -1) { var rowIndxPage = obj.rowIndxPage; obj.colIndx = colIndx; this.bringRowIntoView(obj); var $td = this._bringCellIntoView(obj); if ($td && $td.length > 0) this._editCell($td); } } fn._editCell = function($td) { var that = this; var obj = that.getCellIndices($td); var rowIndxPage = obj.rowIndxPage, offset = this.getRowIndxOffset(), rowIndx = rowIndxPage + offset, colIndx = obj.colIndx, column = this.colModel[colIndx], dataIndx = column.dataIndx; if (this.$td_edit && this.$td_edit[0] == $td[0]) { return false; } this.$td_edit = $td; this.enableSelection(); this._removeCellRowOutline(); this._generateCellRowOutline({$td: $td}); var $cell = this.$div_focus.addClass('pq-cell-selected-border-edit'); if (column.align == "right") { $cell.css("text-align", "right"); } else if (column.align == "center") { $cell.css("text-align", "center"); } else { $cell.css("text-align", "left"); } if (column.editor) { column.editor({ $cell: $cell, data: this.data, dataModel: this.dataModel, rowIndx: rowIndx, rowIndxPage: rowIndxPage, colIndx: dataIndx }); } else { $cell.html("
"); var that = this; $cell.children().html(that.data[rowIndxPage][dataIndx]); } var that = this; window.setTimeout(function() { if (that.$td_edit != null) { var $cell = that.$div_focus; $cell.children().focus(); } }, 0) } fn.getRow = function(obj) { var rowIndxPage = obj.rowIndxPage; var $tr; if (this.$tbl != undefined) $tr = this.$tbl.find("tr[pq-row-indx=" + rowIndxPage + "]"); return $tr; } fn.getCell = function(obj) { var rowIndxPage = (obj.rowIndxPage == null) ? (obj.rowIndx - this.getRowIndxOffset()) : obj.rowIndxPage, colIndx = obj.colIndx; var $td; if (this.$tbl != undefined) $td = this.$tbl.find("tr[pq-row-indx=" + rowIndxPage + "]>td[pq-col-indx=" + colIndx + "]"); return $td; } fn.getEditCellData = function() { if (this.$td_edit) { var obj = this.getCellIndices(this.$td_edit); return this._getEditCellData(obj); } else { return null; } } fn._getEditCellData = function(obj) { var colIndx = obj.colIndx, rowIndxPage = obj.rowIndxPage, rowIndx = (obj.rowIndx != null) ? obj.rowIndx : rowIndxPage + this.getRowIndxOffset(), column = (obj.column) ? obj.column : this.colModel[colIndx], $cell = (obj.$cell) ? obj.$cell : this.$div_focus; if (column.getEditCellData) { var dataCell = column.getEditCellData({ $cell: $cell, data: this.data, dataIndx: column.dataIndx, dataModel: this.dataModel, rowIndx: rowIndx, rowIndxPage: rowIndxPage, colIndx: colIndx }); } else { var dataCell = $cell.children().html(); } return dataCell; } fn.getCellIndices = function($td) { if ($td == null || $td.length == 0) return { rowIndxPage: null, colIndx: null }; var $tr = $td.parent("tr"); var $tbl = $tr.parent("tbody"); var rowIndxPage = parseInt($tr.attr("pq-row-indx")); var colIndx = parseInt($td.attr("pq-col-indx")); return { rowIndxPage: rowIndxPage, colIndx: colIndx } } fn._incrRowIndx = function(rowIndxPage, noRows) { var newRowIndx = rowIndxPage, noRows = (noRows == null) ? 1 : noRows, counter = 0; for (var i = rowIndxPage + 1, len = this.data.length; i < len; i++) { var hidden = this._getRowPQData(i, "hidden"); if (!hidden) { counter++; newRowIndx = i; if (counter == noRows) { return newRowIndx; } } } return newRowIndx; } fn._decrRowIndx = function(rowIndxPage, noRows) { var newRowIndx = rowIndxPage, noRows = (noRows == null) ? 1 : noRows, counter = 0; for (var i = rowIndxPage - 1; i >= 0; i--) { var hidden = this._getRowPQData(i, "hidden"); if (!hidden) { counter++; newRowIndx = i; if (counter == noRows) { return newRowIndx; } } } return newRowIndx; } fn._incrIndx = function(rowIndxPage, colIndx) { var that = this; if (colIndx == null) { if (rowIndxPage == this._getLastVisibleRowIndxPage(this.data)) { return null; } rowIndxPage = this._incrRowIndx(rowIndxPage); return {rowIndxPage: rowIndxPage}; } var column; do { colIndx++; if (colIndx >= that.colModel.length) { if (rowIndxPage == this._getLastVisibleRowIndxPage(this.data)) { return null; } rowIndxPage = this._incrRowIndx(rowIndxPage); colIndx = 0; } column = that.colModel[colIndx]; } while (column && column.hidden); return {rowIndxPage: rowIndxPage, colIndx: colIndx}; } fn._decrIndx = function(rowIndxPage, colIndx) { var that = this; if (colIndx == null) { if (rowIndxPage == this._getFirstVisibleRowIndxPage(this.data)) { return null; } rowIndxPage = this._decrRowIndx(rowIndxPage); return {rowIndxPage: rowIndxPage}; } var column; do { colIndx--; if (colIndx < 0) { if (rowIndxPage == this._getFirstVisibleRowIndxPage(this.data)) { return null; } rowIndxPage = this._decrRowIndx(rowIndxPage); colIndx = that.colModel.length - 1; } column = that.colModel[colIndx]; } while (column && column.hidden); return {rowIndxPage: rowIndxPage, colIndx: colIndx}; } fn._incrEditIndx = function(rowIndxPage, colIndx) { var that = this; var column; do { colIndx++; if (colIndx >= that.colModel.length) { if (rowIndxPage == this._getLastVisibleRowIndxPage(this.data)) { return null; } rowIndxPage = this._incrRowIndx(rowIndxPage); colIndx = 0; } column = that.colModel[colIndx]; } while (column && (column.hidden || column.editable === false)); return {rowIndxPage: rowIndxPage, colIndx: colIndx}; } fn._decrEditIndx = function(rowIndxPage, colIndx) { var that = this; var column; do { colIndx--; if (colIndx < 0) { if (rowIndxPage == this._getFirstVisibleRowIndxPage(this.data)) { return null; } rowIndxPage = this._decrRowIndx(rowIndxPage); colIndx = that.colModel.length - 1; } column = that.colModel[colIndx]; } while (column && (column.hidden || column.editable === false)); return {rowIndxPage: rowIndxPage, colIndx: colIndx}; } fn.addColumn = function(column, columnData) { var thisOptions = this.options, thisOptionsColModel = thisOptions.colModel, data = thisOptions.dataModel.data; thisOptionsColModel.push(column); this._refreshHeader(); for (var i = 0; i < data.length; i++) { var rowData = data[i]; rowData.push(""); } } fn.keyPressDown = function(evt) { var that = this, selectedCells = this.sCells.getSelection(), selectedRows = this.sRows.getSelection(), offset = that.getRowIndxOffset(), selectionModel = that.options.selectionModel, rowIndx, colIndx; var keyCodes = { left: 37, up: 38, right: 39, down: 40, tab: 9, enter: 13, pageDown: 34, pageUp: 33, spaceBar: 32, esc: 27, home: 36, end: 35 } if (that.$td_edit) { var $td = $(that.$td_edit[0]); var obj = that.getCellIndices($td), rowIndxPage = obj.rowIndxPage, rowIndx = rowIndxPage + offset, colIndx = obj.colIndx, column = this.colModel[colIndx], colSaveKey = (column.editModel) ? column.editModel.saveKey : null; if (that._trigger("cellEditKeyDown", evt, { dataModel: this.dataModel, $cell: this.$div_focus, rowIndx: rowIndx, rowIndxPage: rowIndxPage, colIndx: colIndx, $td: $td, column: that.colModel[colIndx] }) == false) { return false; } ; if (evt.keyCode == keyCodes.tab) { var obj; if (evt.shiftKey) { obj = that._decrEditIndx(rowIndxPage, colIndx); } else { obj = that._incrEditIndx(rowIndxPage, colIndx); } that.saveEditCell(); if (obj == null) { evt.preventDefault(); return false; } that.quitEditMode(evt); if (this.options.selectionModel.type == 'row') { if (obj.rowIndxPage != rowIndxPage) { that._setSelection(null); that._setSelection({ rowIndxPage: obj.rowIndxPage }); } that._bringCellIntoView({rowIndxPage: obj.rowIndxPage, colIndx: obj.colIndx}); } else if ((obj.rowIndxPage != rowIndxPage || obj.colIndx != colIndx) && this.options.selectionModel.type == 'cell') { that._setSelection(null); that._setSelection({ rowIndxPage: obj.rowIndxPage, colIndx: obj.colIndx }); } rowIndxPage = obj.rowIndxPage; colIndx = obj.colIndx; var $td2 = this.getCell({rowIndxPage: obj.rowIndxPage, colIndx: obj.colIndx}); if ($td2 && $td2.length > 0) this._editCell($td2); evt.preventDefault(); return false; } else if (evt.keyCode == colSaveKey) { that.saveEditCell(); that.quitEditMode(evt); } else if (colSaveKey == null && evt.keyCode == this.options.editModel.saveKey) { that.saveEditCell(); that.quitEditMode(evt); } else if (evt.keyCode == keyCodes.esc) { that.quitEditMode(evt); evt.preventDefault(); return false; } else if (evt.keyCode == keyCodes.pageUp || evt.keyCode == keyCodes.pageDown) { evt.preventDefault(); return false; } return; } else if (selectedRows.length > 0 && selectionModel.type == 'row') { var obj = selectedRows[selectedRows.length - 1], rowIndx = obj.rowIndx, rowIndxPage = rowIndx - offset; } else { if (selectedCells.length > 0 && selectionModel.type == 'cell') { var obj = selectedCells[selectedCells.length - 1], rowIndx = obj.rowIndx, rowIndxPage = rowIndx - offset, dataIndx = obj.dataIndx, colIndx = this.getColIndxFromDataIndx(dataIndx); if (rowIndx == null || colIndx == null) return; that._trigger("cellKeyDown", evt, { dataModel: this.dataModel, rowIndx: rowIndx, colIndx: colIndx, $td: obj.$td, column: that.colModel[colIndx] }); if (evt.cancelBubble) { return; } } else { return; } } if (evt.keyCode == keyCodes.left) { var obj = that._decrIndx(rowIndxPage, colIndx); if (obj) that._setSelection({rowIndxPage: obj.rowIndxPage, colIndx: obj.colIndx, evt: evt}); evt.preventDefault(); return; } else if (evt.keyCode == keyCodes.right) { var obj = that._incrIndx(rowIndxPage, colIndx); if (obj) that._setSelection({rowIndxPage: obj.rowIndxPage, colIndx: obj.colIndx, evt: evt}); evt.preventDefault(); return; } else if (evt.keyCode == keyCodes.tab) { var obj; if (evt.shiftKey) { obj = that._decrIndx(rowIndxPage, colIndx); } else { obj = that._incrIndx(rowIndxPage, colIndx); } if (obj) that._setSelection({rowIndxPage: obj.rowIndxPage, colIndx: obj.colIndx, evt: evt}); evt.preventDefault(); return; } else if (evt.keyCode == keyCodes.up) { rowIndxPage = that._decrRowIndx(rowIndxPage); if (obj) that._setSelection({rowIndxPage: rowIndxPage, colIndx: colIndx, evt: evt}); evt.preventDefault(); return; } else if (evt.keyCode == keyCodes.down) { rowIndxPage = that._incrRowIndx(rowIndxPage); if (obj) that._setSelection({rowIndxPage: rowIndxPage, colIndx: colIndx, evt: evt}); evt.preventDefault(); return; } else if (evt.keyCode == keyCodes.pageDown || evt.keyCode == keyCodes.spaceBar) { var rowIndx = this._incrRowIndx(rowIndxPage, this.pageSize + 1) + offset; that._setSelection({rowIndx: rowIndx, colIndx: colIndx, evt: evt}); evt.preventDefault(); return; } else if (evt.keyCode == keyCodes.pageUp) { var rowIndx = this._decrRowIndx(rowIndxPage, this.pageSize + 1) + offset; that._setSelection({rowIndx: rowIndx, colIndx: colIndx, evt: evt}); evt.preventDefault(); return; } else if (evt.keyCode == keyCodes.home) { rowIndx = 0 + offset; that._setSelection({rowIndx: rowIndx, colIndx: colIndx, evt: evt}); evt.preventDefault(); return; } else if (evt.keyCode == keyCodes.end) { rowIndx = that.data.length - 1 + offset; that._setSelection({rowIndx: rowIndx, colIndx: colIndx, evt: evt}); evt.preventDefault(); return; } else if (evt.keyCode == keyCodes.enter) { if (this.options.selectionModel.type == 'row') { var $tr, $td; if (selectedRows.length > 0) { that._editFirstCellInRow({rowIndxPage: rowIndxPage}); } } else { if (selectedCells.length > 0) { var $td = this.getCell({rowIndxPage: rowIndxPage, colIndx: colIndx}); if ($td && $td.length > 0) { if (this.isEditableCell({colIndx: colIndx})) { that._editCell($td); } } } } evt.preventDefault(); return; } else { } } fn._calcNumHiddenFrozens = function() { var num_hidden = 0; for (var i = 0; i < this.freezeCols; i++) { if (this.colModel[i].hidden) { num_hidden++; } } return num_hidden; } fn._calcNumHiddenUnFrozens = function(colIndx) { var num_hidden = 0; var len = (colIndx != null) ? colIndx : this.colModel.length; for (var i = this.freezeCols; i < len; i++) { if (this.colModel[i].hidden) { num_hidden++; } } return num_hidden; } fn._setScrollHLength = function() { if (!this.options.scrollModel.horizontal) { this.$hscroll.css("visibility", "hidden"); this.$hvscroll.css("visibility", "hidden"); return; } else { this.$hscroll.css("visibility", ""); this.$hvscroll.css("visibility", ""); } var wd = this.$cont[0].offsetWidth; if (this.numberCell) { wd -= this.numberCell_outerWidth; } var thisColModel = this.colModel; for (var i = 0; i < this.freezeCols; i++) { var column = thisColModel[i]; if (!column.hidden) { wd -= this.outerWidths[i]; } } var wdSB = this._getScollBarVerticalWidth(); if (wdSB == 0) { this.$hscroll.css("right", 0); } else { this.$hscroll.css("right", ""); } wd -= wdSB; this.$hscroll.pqScrollBar("option", "length", wd); } fn._setScrollHNumEles = function() { var data_length = this.colModel.length - this.freezeCols - this._calcNumHiddenUnFrozens(); this.$hscroll.pqScrollBar("option", "num_eles", (data_length)); } fn._getScollBarHorizontalHeight = function() { var htSB = 17; if (this.$hscroll.css("visibility") == "hidden" || this.options.scrollModel.horizontal == false || this.$hscroll.css("display") == "none") { htSB = 0; } return htSB; } fn._getScollBarVerticalWidth = function() { var wdSB = 17; if (this.$vscroll.css("visibility") == "hidden" || this.options.flexHeight || this.$vscroll.css("display") == "none") { wdSB = 0; } return wdSB; } fn._setScrollVNumEles = function(fullRefresh) { var that = this, $vscroll = this.$vscroll, options = $vscroll.pqScrollBar("option"), num_eles = parseInt(options.num_eles), cur_pos = parseInt(options.cur_pos); var htSB = this._getScollBarHorizontalHeight(); var data = this.data; var totalVisibleRows = data ? this._getTotalVisibleRows(data) : 0; var htCont = this.$cont[0].offsetHeight; var htTbl = (this.$tbl) ? this.$tbl[0].offsetHeight : 0; if (htTbl > 0 && htTbl > htCont - htSB) { var $trs = this.$tbl.children().children("tr"); var ht = 0, visibleRows = 0; $trs.each(function(i, tr) { ht += tr.offsetHeight; if (ht >= htCont - htSB) { visibleRows = (i > 1) ? (i - 1) : 0; return false; } }); num_eles = totalVisibleRows - visibleRows + 1; } else { num_eles = cur_pos + 1; } if (num_eles < cur_pos + 1) { num_eles = cur_pos + 1; } if (fullRefresh) { that.$vscroll.pqScrollBar("option", "num_eles", num_eles); } else { that.$vscroll.pqScrollBar("setNumEles", num_eles); } return num_eles; } fn._getFirstVisibleRowIndxPage = function(data) { for (var i = 0, len = data.length; i < len; i++) { var hidden = this._getRowPQData(i, "hidden"); if (!hidden) { return i; } } } fn._getLastVisibleRowIndxPage = function(data) { for (var i = data.length - 1; i >= 0; i--) { var hidden = this._getRowPQData(i, "hidden"); if (!hidden) { return i; } } } fn._getTotalVisibleRows = function(data) { if (this.options.treeViewModel) { var noRows = 0; for (var i = 0, len = data.length; i < len; i++) { var hidden = this._getRowPQData(i, "hidden"); if (!hidden) { noRows++; } } return noRows; } else { return data.length; } }; fn._setScrollVLength = function() { var cont_ht = this.$cont.height(); var htSB = this._getScollBarHorizontalHeight(); this.$vscroll.css("bottom", htSB); var len = (cont_ht - htSB); this.$vscroll.pqScrollBar("option", "length", len); return; }; fn._setInnerGridHeight = function() { if (this.options.flexHeight) return; var ht = (this.element.height() - ((this.options.topVisible) ? this.$top[0].offsetHeight : 0) - ((this.options.bottomVisible) ? this.$bottom[0].offsetHeight : 0) ); this.$grid_inner.height(ht + "px"); }; fn._setRightGridHeight = function() { this.$header_o.height(this.$header_left.height() - 2); if (this.options.flexHeight) return; this.$vscroll.css("visibility", ""); if (this.$tbl) this.$tbl.css("marginBottom", 0); var ht = (this.element.height() - this.$header_o[0].offsetHeight - ((this.options.topVisible) ? this.$top[0].offsetHeight : 0) - ((this.options.bottomVisible) ? this.$bottom[0].offsetHeight : 0)); var ht_contFixed = 0; this.$cont.height((ht - ht_contFixed) + "px"); }; fn.setGridHeightFromTable = function() { var htTbl = 0; var htSB = this._getScollBarHorizontalHeight(); if (this.$tbl) { htTbl = (this.$tbl[0].offsetHeight - 1); this.$tbl.css("marginBottom", htSB); } else { htTbl = 22; } var htCombined = htTbl + htSB; this.$cont.height(""); this.element.height(""); this.$grid_inner.height(""); this.$vscroll.css("visibility", "hidden"); }; fn._setGridWidthFromTable = function() { var wdSB = 17; if (this.$vscroll.css("visibility") == "hidden" || this.$vscroll.css("display") == "none") { wdSB = 0; } if (this.$tbl) { this.element.width((this.$tbl[0].scrollWidth + wdSB) + "px"); } else { var wd_tbl = this.$header_left.find("table")[0].scrollWidth; this.element.width((wd_tbl) + "px"); } }; fn._setRightGridWidth = function() { }; fn._bufferObj_getInit = function() { return this.init; }; fn._bufferObj_getFinal = function() { return this["final"]; }; fn._bufferObj_minRowsPerGrid = function() { var ht = this.$cont[0].offsetHeight; return Math.ceil(ht / this.rowHeight); }; fn._calcCurPosFromRowIndxPage = function(rowIndxPage) { if (!this.options.treeViewModel) { return rowIndxPage; } var cur_pos = 0; for (var i = 0, len = this.data.length; i < len; i++) { if (i == rowIndxPage) { break; } var hidden = this._getRowPQData(i, "hidden"); if (!hidden) { cur_pos++; } } return cur_pos; }; fn._bufferObj_calcInitFinal = function() { var data = this.data; if (data == null || data.length == 0) { this['final'] = this['init'] = null; } else if (this.options.flexHeight) { this.init = 0; this['final'] = data.length - 1; } else { var cur_pos = parseInt(this.$vscroll.pqScrollBar("option", "cur_pos")); this.scrollCurPos = parseInt(cur_pos); if (isNaN(cur_pos) || cur_pos < 0) { this.init = 0; } else { this.init = cur_pos; } if (this.init + 1 > data.length) { this.init = data.length - 1; } var noRows = this._bufferObj_minRowsPerGrid(); this.pageSize = noRows; this['final'] = this.init + noRows; if (this['final'] + 1 > data.length) { this['final'] = data.length - 1; } } }; fn._bufferObj_calcInitFinalH = function() { var cur_pos = parseInt(this.$hscroll.pqScrollBar("option", "cur_pos")); var initH = 0; var indx = 0, thisColModel = this.colModel; for (var i = this.freezeCols, len = thisColModel.length; i < len; i++) { if (thisColModel[i].hidden) { initH++; } else if (indx == cur_pos) { break; } else { initH++; indx++; } } this.initH = initH; } fn._calcWidthCols = function(colIndx) { var wd = 0; if (this.numberCell) { wd += this.numberCell_outerWidth; } for (var i = 0; i <= colIndx; i++) { if (!this.colModel[i].hidden) wd += this.outerWidths[i]; } return wd; } fn._calcRightEdgeCol = function(colIndx) { var wd = 0, cols = 0; if (this.numberCell) { wd += this.numberCell_outerWidth; cols++; } for (var i = 0; i <= colIndx; i++) { if (!this.colModel[i].hidden && this.hidearrHS[i] == false) { wd += this.outerWidths[i]; cols++; } } return {width: wd, cols: cols}; } fn._getDragHelper = function(evt) { var $target = $(evt.currentTarget); this.$cl = $("
").appendTo(this.$grid_inner); this.$clleft = $("
").appendTo(this.$grid_inner); var indx = parseInt($target.attr("pq-grid-col-indx")); var ht = this.$grid_inner.outerHeight(); this.$cl.height(ht); this.$clleft.height(ht); var ele = $("td[pq-grid-col-indx=" + indx + "]", this.$header)[0]; var lft = ele.offsetLeft + ((indx > this.options.freezeCols) ? parseInt(this.$header[1].style.left) : 0); this.$clleft.css({ left: lft }); lft = lft + ele.offsetWidth; this.$cl.css({ left: lft }); } fn._setDragLimits = function(indx) { var that = this; var $head = that.$header_left; if (indx >= this.options.freezeCols) { $head = that.$header_right; } var $pQuery_drag = $head.find("div.pq-grid-col-resize-handle[pq-grid-col-indx=" + indx + "]"); var $pQuery_col = $head.find("td.pq-grid-col[pq-grid-col-indx=" + indx + "]"); var cont_left = $pQuery_col.offset().left + that.minWidth; var wdSB = 17; if (this.options.flexHeight || this.$vscroll.css("visibility") == "hidden") { wdSB = 0; } var cont_right = that.$cont.offset().left + that.$cont[0].offsetWidth - wdSB + 20; $pQuery_drag.draggable("option", 'containment', [cont_left, 0, cont_right, 0]); } fn._getOrderIndx = function(indx) { var columnOrder = this.options.columnOrder; if (columnOrder != null) { return columnOrder[indx]; } else { return indx; } } fn.nestedCols = function(colMarr, _depth, _hidden) { var len = colMarr.length; var arr = []; if (_depth == null) _depth = 1; var new_depth = _depth, colSpan = 0, width = 0, childCount = 0; for (var i = 0; i < len; i++) { var colM = colMarr[i]; if (_hidden == true) { colM.hidden = _hidden; } if (colM.colModel != null) { var obj = this.nestedCols(colM.colModel, _depth + 1, colM.hidden); arr = arr.concat(obj.colModel); if (obj.colSpan > 0) { if (obj.depth > new_depth) { new_depth = obj.depth; } colM.colSpan = obj.colSpan; colSpan += obj.colSpan; } else { colM.colSpan = 0; colM.hidden = true; } colM.childCount = obj.childCount; childCount += obj.childCount; } else { if (colM.hidden) { colM.colSpan = 0; } else { colM.colSpan = 1; colSpan++; } colM.childCount = 0; childCount++; arr.push(colM); } } return {depth: new_depth, colModel: arr, colSpan: colSpan, width: width, childCount: childCount}; }; fn.getHeadersCells = function() { var optColModel = this.options.colModel, thisColModelLength = this.colModel.length, depth = this.depth; var arr = []; for (var row = 0; row < depth; row++) { arr[row] = []; var k = 0; var colSpanSum = 0, childCountSum = 0; for (var col = 0; col < thisColModelLength; col++) { var colModel; if (row == 0) { colModel = optColModel[k]; } else { var parentColModel = arr[row - 1][col]; var children = parentColModel.colModel; if (children == null) { colModel = parentColModel; } else { var diff = (col - parentColModel.leftPos); var colSpanSum2 = 0, childCountSum2 = 0; var tt = 0; for (var t = 0; t < children.length; t++) { childCountSum2 += (children[t].childCount > 0) ? children[t].childCount : 1; if (diff < childCountSum2) { tt = t; break; } } colModel = children[tt]; } } var childCount = (colModel.childCount) ? colModel.childCount : 1; if (col == childCountSum) { colModel.leftPos = col; arr[row][col] = colModel; childCountSum += childCount; if (optColModel[k + 1]) { k++; } } else { arr[row][col] = arr[row][col - 1]; } } } this.headerCells = arr; return arr; } fn.assignRowSpan = function() { var optColModel = this.options.colModel, thisColModelLength = this.colModel.length, headerCells = this.headerCells, depth = this.depth; for (var col = 0; col < thisColModelLength; col++) { for (var row = 0; row < depth; row++) { var colModel = headerCells[row][col]; if (col > 0 && colModel == headerCells[row][col - 1]) { continue; } else if (row > 0 && colModel == headerCells[row - 1][col]) { continue; } var rowSpan = 1; for (var row2 = row + 1; row2 < depth; row2++) { var colModel2 = headerCells[row2][col]; if (colModel == colModel2) { rowSpan++; } } colModel.rowSpan = rowSpan; } } return headerCells; } fn._refreshHeader = function() { var obj = this.nestedCols(this.options.colModel); this.colModel = obj.colModel; this.depth = obj.depth; this.getHeadersCells(); this.assignRowSpan(); } fn._refreshWidths = function() { var that = this; $(this.colModel).each(function(i, col) { if (col.width != undefined) { var wd = parseInt(col.width) if (wd < that.minWidth) { wd = that.minWidth; col.width = wd; } } else { col.width = that.minWidth; } }); } fn._createHeader = function() { var that = this; var str = ""; var hidearrHS1 = []; var thisOptions = this.options, optColModel = thisOptions.colModel, optColModelLength = optColModel.length, thisColModel = this.colModel, thisColModelLength = thisColModel.length, depth = this.depth, columnBorders = thisOptions.columnBorders, headerCells = this.headerCells; if (depth >= 1) { str += ""; if (this.numberCell) { str += ""; } for (var col = 0; col < thisColModelLength; col++) { var column = thisColModel[col]; if (column.hidden) { continue; } var wd = parseInt(column.width) + ((columnBorders) ? 1 : 0); str += ""; } str += ""; } for (var row = 0; row < depth; row++) { str += ""; if (row == 0 && this.numberCell) { str += ""; } for (var col = 0; col < thisColModelLength; col++) { var column = headerCells[row][col]; var colSpan = column.colSpan; if (row > 0 && column == headerCells[row - 1][col]) { continue; } else if (col > 0 && column == headerCells[row][col - 1]) { continue; } if (column.hidden) { continue; } var cls = "pq-grid-col"; if (column.align == "right") { cls += ' pq-align-right'; } else if (column.align == "center") { cls += ' pq-align-center'; } if (col == that.freezeCols - 1 && depth == 1) { cls += " pq-last-freeze-col"; } var colIndx = "", dataIndx = ""; if (column.colModel == null) { colIndx = "pq-grid-col-indx='" + col + "'"; } str += ""; } str += ""; } str += "
\
 
\
" + column.title + " 
"; this.$header.empty(); this.$header.append(str); var $header_left = $(this.$header[0]); var $header_right = $(this.$header[1]); var freezeCols = parseInt(this.options.freezeCols); var wd = this._calcWidthCols(freezeCols - 1); $header_left.css({width: wd, zIndex: 1}); var lft = 0; for (var i = freezeCols; i < (this.initH + freezeCols); i++) { var column = thisColModel[i]; if (column.hidden) { continue; } var oW = this.outerWidths[i]; if (oW == null) { throw("Assert: unknown width"); } lft += oW; } $header_right.css({left: "-" + lft + "px"}); this.$header.find("td").click(function() { if (!that.options.sortable) { return; } var colIndx = $(this).attr("pq-grid-col-indx"); if (colIndx == null) { return; } var column = that.colModel[colIndx]; if (column.sortable == false) { return; } var dataIndx = column.dataIndx; if (that._trigger("beforeSort", null, { dataModel: that.dataModel, data: that.data, sortIndx: dataIndx }) == false) { return; } var dir = "up"; var DM = that.options.dataModel; if (DM.sortIndx == dataIndx) { dir = (DM.sortDir == "up") ? "down" : "up"; } DM.sortIndx = dataIndx; DM.sortDir = dir; that._refreshSortingDataAndView({ sorting: true, keepSelection: true, fn: function() { that._trigger("sort", null, { dataModel: that.dataModel, data: that.data }); } }); }) var lft = 0; var hd_ht = that.$header[0].offsetHeight; var direction = this.options.direction; for (var i = 0; i < this.colModel.length; i++) { var colModel = that.colModel[i]; if (that.hidearrHS[i]) { continue; } else if (colModel.hidden) { continue; } if (colModel.resizable != undefined && colModel.resizable == false) { continue; } var $head = that.$header_left; if (i >= that.options.freezeCols) { $head = that.$header_right; } var $handle = $("
 
") .appendTo($head); var pq_col = that.$header_right.find("td[pq-grid-col-indx=" + i + "]")[0]; lft = parseInt(pq_col.offsetLeft) + parseInt((direction == "rtl") ? 0 : (pq_col.offsetWidth - 10)); $handle.css({ left: lft, height: hd_ht }); } var drag_left, drag_new_left, cl_left; var $pQuery_handles = that.$header.find(".pq-grid-col-resize-handle").draggable({ axis: 'x', helper: function(evt, ui) { var $target = $(evt.target) var indx = parseInt($target.attr("pq-grid-col-indx")); that._setDragLimits(indx); that._getDragHelper(evt, ui); return $target; }, start: function(evt, ui) { drag_left = ui.position.left; cl_left = parseInt(that.$cl[0].style.left); }, drag: function(evt, ui) { drag_new_left = ui.position.left; var dx = (drag_new_left - drag_left); that.$cl[0].style.left = cl_left + dx + "px"; }, stop: function(evt, ui) { that.$clleft.remove(); that.$cl.remove(); drag_new_left = ui.position.left; var dx = (drag_new_left - drag_left); var $target = $(ui.helper); var colIndx = parseInt($target.attr("pq-grid-col-indx")); var column = that.colModel[colIndx]; column.width = parseInt(column.width) + dx; that._computeOuterWidths(true); that._refresh(); for (var i = 0; i < that.tables.length; i++) { var $tbl = that.tables[i].$tbl; $tbl.find("td[pq-top-col-indx='" + colIndx + "']").width(that.outerWidths[colIndx]); } } }); } fn._refreshHeaderSortIcons = function() { var DM = this.options.dataModel; if (DM.sortIndx == undefined) return; var $pQuery_cols = this.$header.find(".pq-grid-col"); $pQuery_cols.removeClass("pq-col-sort-asc pq-col-sort-desc ui-state-active"); var sortIndx = DM.sortIndx; var colIndx = this.getColIndxFromDataIndx(sortIndx); var addClass = "ui-state-active pq-col-sort-" + (DM.sortDir == "up" ? "asc" : "desc") this.$header.find(".pq-grid-col[pq-grid-col-indx=" + colIndx + "]").addClass(addClass) } fn._generateSummaryRow = function(rowData, rowIndx, thisColModel, noColumns, hidearrHS1, offset, const_cls, buffer) { var row_cls = "pq-summary-row", row_str = "", columnBorders = this.options.columBorders; row_str += "" buffer.push(row_str); if (this.numberCell) { buffer.push("\
") } var objRender = {rowIndx: rowIndx + offset, rowIndxPage: rowIndx, rowData: rowData, summaryCell: true}; for (var col = 0; col < noColumns; col++) { var column = thisColModel[col], dataIndx = column.dataIndx; objRender.column = column; objRender.colIndx = col; { var cellSelection = false; var selectedDataIndices = rowData.selectedDataIndices; if (selectedDataIndices) { cellSelection = selectedDataIndices[dataIndx]; } } if (column.hidden) { continue; } else if (this.hidearrHS[col]) { continue; } var strStyle = ""; var cls = const_cls; if (column.align == "right") { cls += ' pq-align-right'; } else if (column.align == "center") { cls += ' pq-align-center'; } if (col == this.freezeCols - 1 && columnBorders) { cls += " pq-last-freeze-col"; } if (column.className) { cls = cls + " " + column.className; } if (cellSelection) { cls = cls + " pq-cell-select"; } var valCell = (rowData[dataIndx] == null) ? "" : rowData[dataIndx]; var str = "\
" + valCell + "
"; buffer.push(str) } for (var k = 0; k < hidearrHS1.length; k++) { var col = hidearrHS1[k]; var column = thisColModel[col], dataIndx = column.dataIndx; ; objRender.column = column; objRender.colIndx = col; var strStyle = ""; strStyle += "visibility:hidden;"; var cls = const_cls; if (column.align == "right") { cls += ' pq-align-right'; } else if (column.align == "center") { cls += ' pq-align-center'; } var valCell = (rowData[dataIndx] == null) ? "" : rowData[dataIndx]; var str = "\
" + valCell + "
"; buffer.push(str) } buffer.push(""); return buffer; } fn.createTable = function(objP) { this.cTable._generateTables(objP); } fn._refreshOtherTables = function() { return; var thisColModel = this.colModel, noColumns = thisColModel.length, columnBorders = this.options.columBorders; for (var i = 0; i < this.tables.length; i++) { var tblObj = this.tables[i]; var $tbl = tblObj.$tbl, $tr = $tbl.find("tr:first"); for (var col = 0; col < noColumns; col++) { var column = thisColModel[col], dataIndx = column.dataIndx; if (column.hidden) { var $td = $tr.find("td[pq-dataIndx='" + dataIndx + "']"); if ($td.length > 1) { var $tds = $tbl.find("td[pq-dataIndx='" + dataIndx + "']").remove(); tblObj.$tds.add($tds); } } else if (this.hidearrHS[col]) { var $td = $tr.find("td[pq-dataIndx='" + dataIndx + "']"); if ($td.css("visibility") != "hidden") { } } var strStyle = ""; var cls = const_cls; if (column.align == "right") { cls += ' pq-align-right'; } else if (column.align == "center") { cls += ' pq-align-center'; } if (col == this.freezeCols - 1 && columnBorders) { cls += " pq-last-freeze-col"; } if (column.className) { cls = cls + " " + column.className; } if (cellSelection) { cls = cls + " pq-cell-select"; } var str = "\ " + this.cTable._renderCell(objRender) + ""; buffer.push(str) } for (var k = 0; k < hidearrHS1.length; k++) { var col = hidearrHS1[k]; var column = thisColModel[col]; objRender.column = column; objRender.colIndx = col; var strStyle = ""; strStyle += "visibility:hidden;"; var cls = const_cls; if (column.align == "right") { cls += ' pq-align-right'; } else if (column.align == "center") { cls += ' pq-align-center'; } var str = "\ " + this.cTable._renderCell(objRender) + ""; buffer.push(str); } } }; fn._sortLocalData = function(dataIndx, dir, dataType, data) { var m_sort_dir = dir, that = this; if (data == null || data.length == 0) { return; } function innerSort() { function sort_integer(obj1, obj2) { var val1 = obj1[dataIndx]; var val2 = obj2[dataIndx]; val1 = val1 ? parseInt(val1) : 0; val2 = val2 ? parseInt(val2) : 0; return (val1 - val2); } function sort_custom(obj1, obj2) { var val1 = obj1[dataIndx]; var val2 = obj2[dataIndx]; return dataType(val1, val2); } function sort_float(obj1, obj2) { var val1 = (obj1[dataIndx] + "").replace(/,/g, ""); var val2 = (obj2[dataIndx] + "").replace(/,/g, ""); val1 = val1 ? parseFloat(val1) : 0; val2 = val2 ? parseFloat(val2) : 0; return (val1 - val2); } var iter = 0; function sort_string(obj1, obj2) { iter++; var val1 = obj1[dataIndx]; var val2 = obj2[dataIndx]; val1 = val1 ? val1 : ""; val2 = val2 ? val2 : ""; if (val1 > val2) { return 1; } else if (val1 < val2) { return -1; } return 0; } if (dataType == "integer") { data = data.sort(sort_integer) } else if (dataType == "float") { data = data.sort(sort_float) } else if (typeof dataType == "function") { data = data.sort(sort_custom); } else { data = data.sort(sort_string) } if (m_sort_dir == "down") { data = data.reverse(); } } $.measureTime(innerSort, "innerSort"); } $.widget("paramquery.pqGrid", fn); $.paramquery.pqGrid.regional = {}; $.paramquery.pqGrid.regional['en'] = fn._regional; $.paramquery.pqGrid.setDefaults = function(obj) { for (var key in obj) { fn.options[key] = obj[key]; } $.widget("paramquery.pqGrid", fn); $(".pq-grid").each(function(i, grid) { $(grid).pqGrid("option", obj); }) } $.measureTime = function(fn, nameofFunc) { var initTime = (new Date()).getTime(); fn(); var finalTime = (new Date()).getTime(); var cnt = finalTime - initTime; } })(jQuery); function funchkkey() { if(event.keyCode==13) { $('#spntotalpages').focus(); return false; } }video game pipa crash bonus buy games mighty stars slot demo zombie outbreak pg soft slot book of wizardry video game won won catching bonus buy games big bass halloween slot divine empress video game fury stairs live soccer betting lines bonus buy games brew brothers tk999 jackpot games tk999 betting strategy casino live dealer game types video game frost evobingo express scommesse ippiche pagamento rapido bonus buy games oof the goldmine planet video game crash 1917 slot 21 thor lightning ways bonus buy games big bass floats my boat video game firework burst video game space cowboy pokerstars uk oksport betting services slot rich man big bass hold spinner OK sport