UNPKG

ignite-ui

Version:

Ignite UI for jQuery by Infragistics

1 lines 165 kB
(function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else{return factory(jQuery)}})(function($){$.ig=$.ig||{};$.ig.locale=$.ig.locale||{};$.ig.locale.en=$.ig.locale.en||{};$.ig.DataSourceLocale=$.ig.DataSourceLocale||{};$.ig.locale.en.DataSourceLocale={invalidDataSource:"The supplied data source is invalid. It happens to be a scalar.",unknownDataSource:"Cannot determine the data source type. Please specify if it is JSON or XML data.",errorParsingArrays:"There was an error parsing the array data and applying the defined data schema: ",errorParsingJson:"There was an error parsing the JSON data and applying the defined data schema: ",errorParsingXml:"There was an error parsing the XML data and applying the defined data schema: ",errorParsingHtmlTable:"There was an error extracting the data from the HTML Table and applying the schema : ",errorExpectedTbodyParameter:"Expected a tbody or a table as a parameter.",errorTableWithIdNotFound:"The HTML Table with the following ID was not found: ",errorParsingHtmlTableNoSchema:"There was an error parsing the Table DOM: ",errorParsingJsonNoSchema:"There was an error parsing/evaluating the JSON string: ",errorParsingXmlNoSchema:"There was an error parsing the XML string: ",errorXmlSourceWithoutSchema:"The supplied data source is an xml document, but there is no defined data schema ($.IgDataSchema) ",errorUnrecognizedFilterCondition:" The filter condition that was passed was not recognized: ",errorRemoteRequest:"The remote request to fetch data has failed: ",errorSchemaMismatch:"The input data doesn't match the schema, the following field couldn't be mapped: ",errorSchemaFieldCountMismatch:"The input data doesn't match the schema in terms of number of fields. ",errorUnrecognizedResponseType:"The response type was either not set correctly, or it was not possible to detect it automatically. Please set settings.responseDataType and/or settings.responseContentType.",hierarchicalTablesNotSupported:"Tables are not supported for HierarchicalSchema",cannotBuildTemplate:"The jQuery template could not be built. There are no records present in the data source, and no columns defined.",unrecognizedCondition:"Unrecognized filtering condition in the following expression: ",fieldMismatch:"The following expression contains an invalid field or filtering condition: ",noSortingFields:"There are no fields specified. You need to specify at least one field to sort by, when calling sort().",filteringNoSchema:"There is no schema / fields specified. You need to specify a schema with field definitions and types to be able to filter the data source.",noSaveChanges:"Saving changes was not successful. Server did not return Success object or returned Success:false.",errorUnexpectedCustomFilterFunction:"An unexpected value was provided for a custom filtering function. A function or string is expected."};$.ig.DataSourceLocale.locale=$.ig.DataSourceLocale.locale||$.ig.locale.en.DataSourceLocale;return $.ig.locale.en.DataSourceLocale});"use strict";(function(factory){if(typeof define==="function"&&define.amd){define(["jquery","./infragistics.util","./infragistics.util.jquery"],factory)}else{return factory(jQuery)}})(function($){$.ig=$.ig||{};if(!window.Infragistics){window.Infragistics=$.ig}$.ig.DataSource=$.ig.DataSource||Class.extend({settings:{id:"ds",outputResultsName:null,callback:null,callee:null,data:[],dataSource:null,dataBinding:null,dataBound:null,requestType:"GET",type:"unknown",schema:null,primaryKey:null,responseTotalRecCountKey:null,responseDataKey:null,responseDataType:null,responseContentType:null,localSchemaTransform:true,urlParamsEncoding:null,urlParamsEncoded:null,paging:{enabled:false,type:"remote",pageSize:5,pageSizeUrlKey:null,pageIndexUrlKey:null,pageIndex:0,appendPage:false},filtering:{type:"remote",caseSensitive:false,applyToAllData:true,customFunc:null,filterExprUrlKey:null,filterLogicUrlKey:"filterLogic",defaultFields:[],expressions:[],exprString:"",customConditions:null},sorting:{defaultDirection:"none",defaultFields:[],applyToAllData:true,customFunc:null,compareFunc:null,customConvertFunc:null,type:"remote",caseSensitive:false,sortUrlKey:null,sortUrlAscValueKey:null,sortUrlDescValueKey:null,expressions:[],exprString:""},groupby:{defaultCollapseState:false,groupRecordKey:"__gbRecord",groupSummaryRecordKey:"__gbSummaryRecord",summaries:[],summariesPosition:"bottom",pagingMode:"allRecords"},summaries:{type:"remote",summaryExprUrlKey:"summaries",summariesResponseKey:"summaries",summaryExecution:"afterfilteringandpaging",columnSettings:[]},fields:[],serializeTransactionLog:true,aggregateTransactions:false,autoCommit:false,updateUrl:null,rowAdded:null,rowUpdated:null,rowInserted:null,rowDeleted:null},init:function(options){var tempSource,tempCallee,arrayAlready=false,metadata;if(options){tempSource=options.dataSource;if(tempSource&&($.ig.util.getType(tempSource)==="array"||$.ig.util.getType(tempSource)==="object")){if($.ig.util.getType(tempSource)==="object"&&options.responseDataKey&&options.type!=="json"){metadata=tempSource.Metadata;options.dataSource=$.ig.findPath(tempSource,options.responseDataKey);if(metadata&&options.dataSource.Metadata===undefined){options.dataSource.Metadata=metadata}arrayAlready=true}else{options.dataSource=null}}if(options.callee){tempCallee=options.callee;options.callee=null}this.settings=$.extend(true,{},$.ig.DataSource.prototype.settings,options);if(arrayAlready){this.settings.type="array"}else if(tempSource&&($.ig.util.getType(tempSource)==="array"||$.ig.util.getType(tempSource)==="object")){options.dataSource=tempSource;this.settings.dataSource=tempSource}if(tempCallee){this.settings.callee=tempCallee;tempCallee=null}}this.settings.paging.pageIndex=0;this._isBound=false;this._url=null;this._dsCallback=null;this._data=[];this._dataView=[];if(this.settings.type==="unknown"){this._runtimeType=this.analyzeDataSource()}else{this._runtimeType=this.settings.type}this._parser=new $.ig.TypeParser;this._schema=null;this._isSortingReq=false;this._isFilteringReq=false;this._isPagingReq=false;this._isSummariesReq=false;this._dataSummaries=[];this._recCount=0;this._hasCount=false;this._initSchema();this._transactionLog=[];this._accumulatedTransactionLog=[];return this},_initSchema:function(){var i;if(this.settings.schema){if(this.settings.schema instanceof $.ig.DataSchema){this._schema=this.settings.schema}else{if(this.settings.type!=="unknown"){this._schema=new $.ig.DataSchema(this.settings.type,this.settings.schema)}else{this._schema=new $.ig.DataSchema(this._runtimeType,this.settings.schema)}this._schema._pk=this.settings.primaryKey}this._fields={};for(i=0;i<this._schema.fields().length;i++){if(typeof this._schema.fields()[i].mapper==="string"&&typeof window[this._schema.fields()[i].mapper]==="function"){this._schema.fields()[i].mapper=window[this._schema.fields()[i].mapper]}if(typeof this._schema.fields()[i].mapper==="function"){this._hasMapper=true}this._fields[this._schema.fields()[i].name]=this._schema.fields()[i]}}},fields:function(fields){if(fields===undefined||fields===null){return this.settings.fields}this.settings.fields=fields;return this},analyzeDataSource:function(){var ds=this.dataSource(),dc,$dsObj;if(ds===undefined||ds===null){return"empty"}if($.ig.util.getType(ds)==="function"){return"function"}if($.ig.util.getType(ds)==="array"){return"array"}if($.ig.util.getType(ds)==="number"||$.ig.util.getType(ds)==="boolean"||$.ig.util.getType(ds)==="date"){return"invalid"}if($.ig.util.getType(ds)==="string"){ds=$.trim(ds);if(ds.startsWith("/")){return"remoteUrl"}if($("#"+this.settings.id).length>0&&ds.toLowerCase().startsWith("<table")){return"htmlTableString"}if(ds.toLowerCase().startsWith("<table")){dc="<div id='"+this.settings.id+"' style='display:none;visibility:hidden;'>"+ds+"</div>";$(dc).appendTo($("body"));return"htmlTableString"}if(!ds.startsWith("[")&&!ds.startsWith("{")&&!ds.startsWith("<")){if(!ds.startsWith("http://")&&!ds.startsWith("https://")){try{$dsObj=$("#"+ds);if($dsObj.length>0&&$dsObj[0].nodeName.toLowerCase()==="table"){return"htmlTableId"}}catch(e){}}this._url=ds;return"remoteUrl"}return"unknown"}if(ds.nodeName&&ds.nodeName.toLowerCase()==="table"){return"htmlTableDom"}if(ds.nodeName&&(ds.nodeName.toLowerCase()==="ul"||ds.nodeName.toLowerCase()==="ol")){return"htmlListDom"}if(ds.nodeName&&ds.nodeName.toLowerCase()==="select"){return"htmlSelectDom"}return"unknown"},dataView:function(){return this._dataView},data:function(){return this._data},transformedData:function(transformedExecution){var data;switch(transformedExecution){case"priortofilteringandpaging":data=this._data;break;case"afterfilteringbeforepaging":if(this._transformedData!==undefined){data=this._transformedData}else{data=this._data}break;case"afterfilteringandpaging":data=this.dataView();break;default:data=this._dataView;break}return data},dataSummaries:function(){var s=this.settings.summaries,type=s.type;if(type==="local"){this._dataSummaries=this.transformedData(s.summaryExecution)}return this._dataSummaries},schema:function(s,t){if(s===undefined||s===null){return this._schema}if(s instanceof $.ig.DataSchema){this._schema=s}else{if(t===null||t===undefined){this._schema=new $.ig.DataSchema(s.type,s)}else{this._schema=new $.ig.DataSchema(t,s)}this._schema._pk=this.settings.primaryKey}return this},pagingSettings:function(p){if(p===undefined||p===null){return this.settings.paging}this.settings.paging=p;return this},filterSettings:function(f){if(f===undefined||f===null){return this.settings.filtering}this.settings.filtering=f;return this},sortSettings:function(s){if(s===undefined||s===null){return this.settings.sorting}this.settings.sorting=s;return this},summariesSettings:function(s){if(s===undefined||s===null){return this.settings.summaries}this.settings.summaries=s;return this},dataSource:function(ds){if(ds===undefined||ds===null){return this.settings.dataSource}this.settings.dataSource=ds;this.analyzeDataSource();return this},type:function(t){if(t===undefined||t===null){return this._runtimeType}this.settings.type=t;return this},findRecordByKey:function(key,ds,objPath){var i,data=ds||this._data,len=data?data.length:0,search=len>0&&Array.isArray(data[0])?this._lookupPkIndex():this.settings.primaryKey;for(i=0;i<len;i++){if(data[i][search]===key){return data[i]}}return null},removeRecordByKey:function(key,origDs){var i,len,data,count=0,all=[this._data],prime=this.settings.primaryKey,primeIdx=this._lookupPkIndex(),search;this._addOnlyUniqueToCollection(all,this._dataView);this._addOnlyUniqueToCollection(all,this._filteredData);this._addOnlyUniqueToCollection(all,origDs);while(count<all.length){data=all[count++];len=data?data.length:0;search=len>0&&Array.isArray(data[0])?primeIdx:prime;for(i=0;i<len;i++){if(data[i]&&data[i][search]===key){$.ig.removeFromArray(data,i);break}}}},removeRecordByIndex:function(index,origDs){var i,len,record,data=this._data,view=this._dataView,filter=this._filteredData;if(!data||isNaN(index)||index<0||index>=data.length){return}record=data[index];$.ig.removeFromArray(data,index);if(origDs){$.ig.removeFromArray(origDs,index)}data=data===view?filter:view;while(record){len=data?data.length:0;for(i=0;i<len;i++){if(data[i]===record){$.ig.removeFromArray(data,i);break}}if(data===filter){return}data=filter}},setCellValue:function(rowId,colId,val,autoCommit){var t=this._createCellTransaction(rowId,colId,val);this._addTransaction(t);if(autoCommit===true){this.commit(rowId)}return t},updateRow:function(rowId,rowObject,autoCommit){var t=this._createRowTransaction(rowId,rowObject),oldRow=this.settings.primaryKey===null?this._data[parseInt(rowId,10)]:this.findRecordByKey(rowId),rowIndex=this.settings.primaryKey===null?rowId:$.ig.indexInArray(this._data,oldRow);this._addTransaction(t);if(autoCommit===true){this.commit(rowId)}if($.ig.util.getType(this.settings.rowUpdated)==="function"){if(this.settings.callee){this.settings.rowUpdated.apply(this.settings.callee,[{rowIndex:rowIndex,newRow:rowObject,oldRow:oldRow},this])}else{this.settings.rowUpdated({rowIndex:rowIndex,newRow:rowObject,oldRow:oldRow},this)}}return t},addRow:function(rowId,rowObject,autoCommit){var t=this._createNewRowTransaction(rowId,rowObject);this._addTransaction(t);if(autoCommit===true){this.commit(rowId)}if($.ig.util.getType(this.settings.rowAdded)==="function"){if(this.settings.callee){this.settings.rowAdded.apply(this.settings.callee,[{rowId:rowId,row:rowObject},this])}else{this.settings.rowAdded({rowId:rowId,row:rowObject},this)}}return t},insertRow:function(rowId,rowObject,rowIndex,autoCommit,parentRowId){var t=this._createInsertRowTransaction(rowId,rowObject,rowIndex);this._addTransaction(t);if(autoCommit===true){this.commit(rowId)}if($.ig.util.getType(this.settings.rowInserted)==="function"){if(this.settings.callee){this.settings.rowInserted.apply(this.settings.callee,[{rowId:rowId,row:rowObject,rowIndex:rowIndex},this])}else{this.settings.rowInserted({rowId:rowId,row:rowObject,rowIndex:rowIndex},this)}}return t},deleteRow:function(rowId,autoCommit){var t=this._createDeleteRowTransaction(rowId),row=this.settings.primaryKey===null?this._data[parseInt(rowId,10)]:this.findRecordByKey(rowId),rowIndex=this.settings.primaryKey===null?rowId:$.ig.indexInArray(this._data,row),isNewRow=false,i,j;for(i=0;this.settings.aggregateTransactions&&i<this._transactionLog.length;i++){if(this._transactionLog[i].type==="newrow"&&this._transactionLog[i].rowId===rowId){isNewRow=true;rowId=this._transactionLog[i].rowId;this._removeTransactionByTransactionId(this._transactionLog[i].tid);for(j=0;j<this._accumulatedTransactionLog.length;j++){if(this._accumulatedTransactionLog[j].rowId===rowId){$.ig.removeFromArray(this._accumulatedTransactionLog,j)}}break}}if(!(this.settings.aggregateTransactions&&isNewRow)){this._addTransaction(t);if(autoCommit===true){this.commit(rowId)}if($.ig.util.getType(this.settings.rowDeleted)==="function"){if(this.settings.callee){this.settings.rowDeleted.apply(this.settings.callee,[{rowId:rowId,row:row,rowIndex:rowIndex},this])}else{this.settings.rowDeleted({rowId:rowId,row:row,rowIndex:rowIndex},this)}}}return t},addNode:function(data){var t=this._createAddNodeTransaction(data);this._addTransaction(t)},removeNode:function(data){var t=this._createRemoveNodeTransaction(data);this._addTransaction(t)},getDetachedRecord:function(t){var o=$.ig.util.getType(this._data[0])==="array"?[]:{},i,originalRec;if(this.settings.primaryKey===null){originalRec=this._data[parseInt(t.rowId,10)]}else{originalRec=this.findRecordByKey(t.rowId)}if($.ig.util.getType(this._data[0])!=="array"){for(i in originalRec){if(originalRec.hasOwnProperty(i)){o[i]=originalRec[i]}}}else{for(i=0;i<originalRec.length;i++){o[i]=originalRec[i]}}if(t.type==="cell"){o[t.col]=t.value;return o}if($.ig.util.getType(o)!=="array"){for(i in t.row){if(t.row.hasOwnProperty(i)){o[i]=t.row[i]}}}else{for(i=0;i<t.row.length;i++){o[i]=t.row[i]}}return o},commit:function(id){if(id!==null&&id!==undefined){this._commitTransactionsByRowId(id)}else{this._transactionLog.reverse();while(this._transactionLog.length>0){this._commitTransaction(this._transactionLog.pop())}}if(this._getFieldsWithFormatter().length){this._generateFormattedRecords()}},rollback:function(id){var i,trans;if(id!==null&&id!==undefined){trans=this._rollbackTransactionsByRowId(id)}else{i=this._transactionLog.length;while(i-- >0){this._rollbackTransaction(this._transactionLog[i])}}return trans},pendingTransactions:function(){return this._transactionLog},allTransactions:function(){return this._accumulatedTransactionLog},_createCellTransaction:function(rowId,colId,val){return{type:"cell",rowId:rowId,tid:this._generateTransactionId(),col:colId,value:val}},_createRowTransaction:function(rowId,rowObject){return{type:"row",tid:this._generateTransactionId(),row:rowObject,rowId:rowId}},_createNewRowTransaction:function(rowId,rowObject){return{type:"newrow",tid:this._generateTransactionId(),row:rowObject,rowId:rowId}},_createInsertRowTransaction:function(rowId,rowObject,rowIndex){return{type:"insertrow",tid:this._generateTransactionId(),row:rowObject,rowId:rowId,rowIndex:rowIndex}},_createDeleteRowTransaction:function(rowId){return{type:"deleterow",tid:this._generateTransactionId(),rowId:rowId}},_createAddNodeTransaction:function(data){return{type:"addnode",tid:this._generateTransactionId(),tdata:data}},_createRemoveNodeTransaction:function(data){return{type:"removenode",tid:this._generateTransactionId(),tdata:data}},_addTransaction:function(t){var exists=false,i=0,prop,globalt,j,dirty=true,k,shouldAggregateTransactions=this.settings.autoCommit===false&&this.settings.aggregateTransactions===true,isSameAsOrigValue=false,rec=shouldAggregateTransactions?this.findRecordByKey(t.rowId):null;if(t.type==="cell"){for(i=0;i<this._transactionLog.length;i++){if(this._transactionLog[i].rowId===t.rowId&&this._transactionLog[i].col===t.col){exists=true;if(shouldAggregateTransactions){if(rec&&rec[t.col]===t.value){for(k=0;k<this._accumulatedTransactionLog.length;k++){if(this._accumulatedTransactionLog[k].rowId===this._transactionLog[i].rowId){$.ig.removeFromArray(this._accumulatedTransactionLog,k)}}this._removeTransactionByTransactionId(this._transactionLog[i].tid);dirty=false}}if(dirty){this._transactionLog[i].value=t.value;this._syncGlobalTransaction(this._transactionLog[i])}}if(shouldAggregateTransactions&&rec&&rec[t.col]===t.value){isSameAsOrigValue=true}}for(j=0;j<this._transactionLog.length;j++){if(this._transactionLog[j].type==="newrow"&&this._transactionLog[j].rowId===t.rowId){if(t.type==="row"){this._transactionLog[j].value=t.value}else{this._transactionLog[j].row[t.col]=t.value}this._syncGlobalTransaction(this._transactionLog[j]);return}}}else if(t.type==="row"){for(i=0;i<this._transactionLog.length;i++){if(this._transactionLog[i].rowId===t.rowId&&this._transactionLog[i].type!=="cell"){exists=true;if(shouldAggregateTransactions){dirty=false;for(prop in t.row){if(rec&&t.row.hasOwnProperty(prop)&&t.row[prop]!==rec[prop]){dirty=true;break}}for(j=0,!dirty;j<this._transactionLog.length;j++){if(this._transactionLog[j].type==="newrow"&&this._transactionLog[j].rowId===t.rowId){this._transactionLog[j].row=t.row;this._syncGlobalTransaction(this._transactionLog[j]);return}}}if(dirty){this._transactionLog[i].row=t.row;this._syncGlobalTransaction(this._transactionLog[i])}else{for(k=0;k<this._accumulatedTransactionLog.length;k++){if(this._accumulatedTransactionLog[k].rowId===this._transactionLog[i].rowId){$.ig.removeFromArray(this._accumulatedTransactionLog,k)}}this._removeTransactionByTransactionId(this._transactionLog[i].tid)}}}if(shouldAggregateTransactions){for(prop in t.row){isSameAsOrigValue=true;if(!(t.row.hasOwnProperty(prop)&&rec&&t.row[prop]===rec[prop])){isSameAsOrigValue=false;break}}}}else if(t.type==="addnode"||t.type==="removenode"){this._transactionLog.push(t);this._accumulatedTransactionLog.push(t);return}if(!exists&&!isSameAsOrigValue){this._transactionLog.push(t);globalt=$.extend(true,{},t);this._accumulatedTransactionLog.push(globalt)}},_syncGlobalTransaction:function(t){var i,prop;if(!t){return}if(t.type==="cell"){for(i=0;i<this._accumulatedTransactionLog.length;i++){if(this._accumulatedTransactionLog[i].rowId===t.rowId&&this._accumulatedTransactionLog[i].col===t.col){this._accumulatedTransactionLog[i].value=t.value;break}}}else if(t.type==="row"||t.type==="insertrow"||t.type==="newrow"){for(i=0;i<this._accumulatedTransactionLog.length;i++){if(this._accumulatedTransactionLog[i].rowId===t.rowId&&this._accumulatedTransactionLog[i].type!=="cell"){for(prop in t.row){if(t.row.hasOwnProperty(prop)){this._accumulatedTransactionLog[i].row[prop]=t.row[prop]}}}}}},_serializeDate:function(date){if($.ig.util.getType(date)!=="date"){return date}if(this.settings.enableUTCDates){date=date.toISOString()}else{date=$.ig.toLocalISOString(date)}return date},_removeTransactionByTransactionId:function(tid,removeFromAll){var i;for(i=0;i<this._transactionLog.length;i++){if(this._transactionLog[i].tid===tid){$.ig.removeFromArray(this._transactionLog,i);break}}if(removeFromAll===true){for(i=0;i<this._accumulatedTransactionLog.length;i++){if(this._accumulatedTransactionLog[i].tid===tid){$.ig.removeFromArray(this._accumulatedTransactionLog,i);break}}}},_removeTransactionsByRecordId:function(id){var i;for(i=0;i<this._transactionLog.length;i++){if(this._transactionLog[i].rowId===id){$.ig.removeFromArray(this._transactionLog,i);break}}},_addRow:function(row,index,origDs){var data,key,i,count=0,schema=this.settings.schema,layouts=schema?schema.layouts:null,lo,pdata,all=[this._data],newRow,collectionProcessedData=[];this._addOnlyUniqueToCollection(all,this._dataView);this._addOnlyUniqueToCollection(all,origDs);if(this._filter&&this._filteredData&&this.settings.paging.enabled&&this.settings.paging.type==="local"){this._addOnlyUniqueToCollection(all,this._filteredData)}if(this._vgbData&&this.isGroupByApplied(this.settings.sorting.expressions)){this._addOnlyUniqueToCollection(all,this._vgbData)}if(layouts){for(key in layouts){if(layouts.hasOwnProperty(key)){if((key.match(/\//g)||[]).length!==1){continue}if(layouts[key].key&&!row.hasOwnProperty(layouts[key].key)){if(layouts[key].responseDataKey){lo={};lo[layouts[key].responseDataKey]=[]}else{lo=[]}row[layouts[key].key]=lo}}}}while(count<all.length){data=all[count++];if(this._preprocessAddRow){pdata=this._preprocessAddRow.apply(this,Array.prototype.slice.call(arguments).concat([data]));data=(pdata||{}).layoutData;if(data){for(i=0;i<collectionProcessedData.length;i++){if(collectionProcessedData[i]===data){data=null;break}}if(data){collectionProcessedData.push(data)}}}if(data){newRow=row;if(origDs&&data!==origDs&&$.ig.util.getType(row)==="object"){newRow=$.extend(true,{},row)}if(index>=0&&index<data.length){data.splice(index,0,newRow)}else{data.push(newRow)}if(this._postprocessAddRow&&pdata){pdata.newData=data;this._postprocessAddRow.apply(this,Array.prototype.slice.call(arguments).concat(pdata));data=pdata.cashedData}}}},_updateRecOnCommit:function(t,records){var i,j,rec,prop;if(t.type==="cell"){for(j=0;j<records.length;j++){rec=records[j];if(rec){rec[t.col]=t.value}}}else if(t.type==="row"){if($.ig.util.getType(t.row)==="array"){for(j=0;j<records.length;j++){rec=records[j];if(rec){for(i=0;i<t.row.length;i++){rec[i]=t.row[i]}}}}else{for(j=0;j<records.length;j++){rec=records[j];if(rec){for(prop in t.row){if(t.row.hasOwnProperty(prop)){rec[prop]=t.row[prop]}}}}}}},_commitTransaction:function(t){var rec,origRec,origDs=this.settings.localSchemaTransform?this._origDs:null;if(origDs===this._data){origDs=null}if(this.settings.primaryKey===null){rec=this._data[parseInt(t.rowId,10)];if(origDs){origRec=origDs[parseInt(t.rowId,10)]}}else{rec=this.findRecordByKey(t.rowId);if(origDs){origRec=this.findRecordByKey(t.rowId,origDs)}}if(t.type==="cell"||t.type==="row"){this._updateRecOnCommit(t,[rec,origRec])}else if(t.type==="deleterow"){if(this.settings.primaryKey===null){this.removeRecordByIndex(parseInt(t.rowId,10),origDs)}else{this.removeRecordByKey(t.rowId,origDs)}if(this.isGroupByApplied(this.settings.sorting.expressions)){this._generateGroupByData(this._filter?this._filteredData:this._data,this.settings.sorting.expressions)}}else if(t.type==="newrow"){this._addRow(t.row,-1,origDs)}else if(t.type==="insertrow"){this._addRow(t.row,t.rowIndex,origDs)}this._removeTransactionByTransactionId(t.tid)},_rollbackTransaction:function(t){this._removeTransactionByTransactionId(t.tid,true)},_commitTransactionsByRowId:function(id){var i;for(i=0;i<this._transactionLog.length;i++){if(this._transactionLog[i].rowId===id){this._commitTransaction(this._transactionLog[i])}}},_rollbackTransactionsByRowId:function(id){var i,trans=[];i=this._transactionLog.length;while(i-- >0){if(this._transactionLog[i].rowId===id){trans.push(this._transactionLog[i]);this._rollbackTransaction(this._transactionLog[i])}}return trans},_addOnlyUniqueToCollection:function(collection,item){var i;for(i=0;i<collection.length;i++){if(collection[i]===item){return}}collection.push(item)},transactionsAsString:function(){return JSON.stringify(this._accumulatedTransactionLog)},_generateTransactionId:function(){return((1+Math.random())*parseInt("10000",16)).toString(16).substring(1,5)},_lookupPkIndex:function(){var i;if(this._pkIndex!==undefined){return this._pkIndex}if(typeof this.settings.primaryKey==="string"){if(this.schema()&&this.schema().fields()&&this.schema().fields().length>0){for(i=0;i<this.schema().fields().length;i++){if(this.schema().fields()[i].name===this.settings.primaryKey){this._pkIndex=i;return i}}}}this._pkIndex=this.settings.primaryKey;return this.settings.primaryKey},saveChanges:function(success,error){if(this.settings.updateUrl!==null){var me=this,opts,i,prop,t,serializedTransactionLog=[];for(i=0;i<this._accumulatedTransactionLog.length;i++){t=$.extend(true,{},this._accumulatedTransactionLog[i]);if(t.type==="cell"){t.value=this._serializeDate(t.value)}else if(t.type==="row"||t.type==="insertrow"||t.type==="newrow"){for(prop in t.row){if(t.row.hasOwnProperty(prop)){if($.ig.util.getType(t.row[prop])==="date"){t.row[prop]=this._serializeDate(t.row[prop])}else{t.row[prop]=t.row[prop]}}}}serializedTransactionLog.push(t)}opts={type:"POST",url:this.settings.updateUrl,data:{ig_transactions:JSON.stringify(serializedTransactionLog)},success:function(data,textStatus,jqXHR){if(data.Success){me._saveChangesSuccess(data,textStatus,jqXHR);if(success){success(data,textStatus,jqXHR)}}else{me._saveChangesError(jqXHR,textStatus,$.ig.util.getLocaleValue("DataSourceLocale","noSaveChanges"));if(error){error(jqXHR,textStatus,$.ig.util.getLocaleValue("DataSourceLocale","noSaveChanges"))}}},error:function(jqXHR,textStatus,errorThrown){me._saveChangesError(jqXHR,textStatus,errorThrown);if(error){error(jqXHR,textStatus,errorThrown)}}};this._ajaxRequest=$.ajax(opts)}},_saveChangesSuccess:function(data,textStatus,jqXHR){var schs,sche,i;if(data.Success){this.commit();this._transactionLog=[];this._accumulatedTransactionLog=[];schs=this._saveChangesHandlers;i=schs?schs.length:0;while(i-- >0){schs[i](data,textStatus,jqXHR)}}else{sche=this._saveChangesErrorHandlers;i=sche?sche.length:0;while(i-- >0){sche[i](jqXHR,textStatus,$.ig.util.getLocaleValue("DataSourceLocale","noSaveChanges"))}}},_saveChangesError:function(jqXHR,textStatus,errorThrown){var sche=this._saveChangesErrorHandlers,i=sche?sche.length:0;while(i-- >0){sche[i](jqXHR,textStatus,errorThrown)}},_addChangesSuccessHandler:function(functionDelegate){if(this._saveChangesHandlers===undefined){this._saveChangesHandlers=[]}this._saveChangesHandlers[this._saveChangesHandlers.length]=functionDelegate},_removeChangesSuccessHandler:function(functionDelegate){if(this._saveChangesHandlers!==undefined){var index=$.ig.indexInArray(this._saveChangesHandlers,functionDelegate);if(index>-1){this._saveChangesHandlers=this._saveChangesHandlers.slice(0,index).concat(this._saveChangesHandlers.slice(index+1,this._saveChangesHandlers.length))}}},_addChangesErrorHandler:function(functionDelegate){if(this._saveChangesErrorHandlers===undefined){this._saveChangesErrorHandlers=[]}this._saveChangesErrorHandlers[this._saveChangesErrorHandlers.length]=functionDelegate},_removeChangesErrorHandler:function(functionDelegate){if(this._saveChangesErrorHandlers!==undefined){var index=$.ig.indexInArray(this._saveChangesErrorHandlers,functionDelegate);if(index>-1){this._saveChangesErrorHandlers=this._saveChangesErrorHandlers.slice(0,index).concat(this._saveChangesErrorHandlers.slice(index+1,this._saveChangesErrorHandlers.length))}}},dataBind:function(callback,callee){var table,tableObj,dsObj,ds,s,p=this.settings,args,resKey,noCancel=true,callDataBound=true,f,fApplied;this._transactionLog=[];this._accumulatedTransactionLog=[];if(!callback){callback=p.callback}args={cancel:false};if($.ig.util.getType(p.dataBinding)==="function"){noCancel=p.dataBinding(this,args);if(noCancel===undefined){noCancel=true}}if(noCancel){if(this.settings.type==="unknown"&&(this._runtimeType===null||this._runtimeType===undefined)){this._runtimeType=this.analyzeDataSource()}else if(this._runtimeType==="json"){ds=this.dataSource();if($.ig.util.getType(ds)==="string"){ds=$.trim(ds);if(ds.startsWith("/")||ds.startsWith("http://")||ds.startsWith("https://")){this._runtimeType="remoteUrl"}}}switch(this._runtimeType){case"function":this._data=p.dataSource();if(this.schema()&&this.settings.localSchemaTransform){this._data=this.schema().transform(this._data)}break;case"array":if(this.schema()&&this.settings.localSchemaTransform){this._data=this.schema().transform(this.dataSource());if(this.dataSource().Metadata){this._metadata=this.dataSource().Metadata;this.summariesResponse(this.settings.summaries.summariesResponseKey,this.dataSource())}this._origDs=this.dataSource()}else{this._data=this.dataSource()}break;case"htmlTableDom":case"htmlTableId":case"htmlTableString":if(this._tableBound){break}this._runtimeType=this.analyzeDataSource();if(this._runtimeType==="htmlTableId"){tableObj=$("#"+this.dataSource());table=this._validateTable(tableObj)}else if(this._runtimeType==="htmlTableString"){tableObj=$("#"+this.settings.id+" > table");table=this._validateTable(tableObj)}else{table=this.dataSource()}if(this.schema()&&this.settings.localSchemaTransform){this._data=this.schema().transform(table)}else{this._data=this.tableToObject(table)}this._tableBound=true;break;case"htmlListDom":this._data=this.schema().transform(this.dataSource());break;case"htmlSelectDom":this._data=this.schema().transform(this.dataSource());break;case"invalid":throw new Error($.ig.util.getLocaleValue("DataSourceLocale","invalidDataSource"));case"unknown":case"json":case"xml":if(this.settings.type!=="json"&&p.type!=="xml"){throw new Error($.ig.util.getLocaleValue("DataSourceLocale","unknownDataSource"))}else{resKey=this.settings.responseDataKey;if($.ig.util.getType(this.dataSource())==="string"){if(p.type==="json"){dsObj=this.stringToJSONObject(this.dataSource())}else{dsObj=this.stringToXmlObject(this.dataSource())}}else{dsObj=this.dataSource()}if(this.schema()&&this.settings.localSchemaTransform===true){this._data=this.schema().transform(dsObj);if(resKey!==null&&resKey!==undefined){this._origDs=$.ig.findPath(dsObj,resKey)}else{this._origDs=dsObj}}else if((!this.schema()||this.settings.localSchemaTransform===false)&&p.type==="json"){if(resKey!==null&&resKey!==undefined){this._data=this._origDs=$.ig.findPath(dsObj,resKey)}else{this._data=dsObj}this._origDs=dsObj}else if(!this.schema()&&p.type==="xml"){throw new Error($.ig.util.getLocaleValue("DataSourceLocale","errorXmlSourceWithoutSchema"))}this.totalRecordsCount(null,this.settings.responseTotalRecCountKey,dsObj,this);if(dsObj&&dsObj.Metadata){this._metadata=dsObj.Metadata}this.summariesResponse(this.settings.summaries.summariesResponseKey,dsObj)}break;case"remoteUrl":callDataBound=false;this._remoteData(callback,callee);break;case"empty":this._data=[];this._dataView=[];this._dataSummaries=[];break;default:break}this._dataView=this._data;this._filter=false;f=p.filtering;s=p.sorting;fApplied=false;if(f.type==="local"&&this._runtimeType!=="remoteUrl"&&f.defaultFields.length>0){this.filter(f.defaultFields);fApplied=true}if(s.type==="local"&&this._runtimeType!=="remoteUrl"&&s.defaultFields.length>0&&(!fApplied||s.defaultFields!==s.expressions)){this.sort(s.defaultFields,s.defaultDirection)}if(!this._gbDataView&&this.isGroupByApplied(this.settings.sorting.expressions)){this._generateGroupByData(this._filter?this._filteredData:this._data,this.settings.sorting.expressions)}if(p.paging.enabled&&p.paging.type==="local"&&this._runtimeType!=="remoteUrl"){this._page()}if(!this._filter||!this._transformedData){this._populateTransformedData()}if(this._runtimeType!=="remoteUrl"){this._invokeCallback(callee,callback)}this._internalDataBound(!args.cancel&&callDataBound)}return this},getCellValue:function(fieldName,record){var field,result;if(!this._hasMapper||!this._fields||this._fields[fieldName]===undefined||this._fields[fieldName].type!=="object"||!record[fieldName]){return record[fieldName]}field=this._fields[fieldName];if(field&&typeof field.mapper==="function"){result=field.mapper(record)}else{result=record[fieldName]}return result},_getFieldTypeFromSchema:function(fieldName){var field,type,ds=this.dataSource();field=this._fields?this._fields[fieldName]:null;if(!field){return undefined}if(this.type()==="remoteUrl"){ds=this.data()}else if(this.type()==="json"&&ds!==null&&ds!==undefined&&this.settings.responseDataKey!==null){ds=$.ig.findPath(ds,this.settings.responseDataKey)}if(typeof field.mapper==="function"&&$.ig.util.getType(ds)==="array"&&ds.length>0){type=$.ig.util.getType(field.mapper(ds[0]))}else{type=field.type}return type},_internalDataBound:function(callDatabound){if(callDatabound&&$.ig.util.getType(this.settings.dataBound)==="function"){this.settings.dataBound(this)}},summariesResponse:function(key,dsObj){if(!dsObj||!key){this._dataSummaries=this._dataSummaries||[];return this.dataSummaries()}var rec,resPath,i,schema,func,offsets,offset,obj;if(key.length>0){rec=dsObj;resPath=key.split(".");for(i=0;i<resPath.length;i++){if(rec===null||rec===undefined){break}rec=rec[resPath[i]]}this._dataSummaries=rec}else{this._dataSummaries=dsObj}this._dataSummaries=this._dataSummaries||[];if(this.settings.localSchemaTransform===true&&this.schema()&&dsObj&&dsObj.Metadata&&dsObj.Metadata.timezoneOffsetsSummaries){offsets=dsObj.Metadata.timezoneOffsetsSummaries;this._dataSummaries._serverOffsetsSummaries=offsets;schema=this.schema().schema;if(schema&&schema.fields){for(i=0;i<schema.fields.length;i++){if((schema.fields[i].type==="date"||schema.fields[i].type==="time")&&offsets[schema.fields[i].name]!==undefined){key=schema.fields[i].name;for(func in offsets[key]){if(offsets[key].hasOwnProperty(func)){offset=offsets[key][func];obj=this._dataSummaries[key][func];if($.ig.util.getType(obj)==="string"){this._dataSummaries[key][func]=new Date(obj)}}}}}}}return this._dataSummaries},_applySchema:function(forceApply){var schema=this.schema(),ds,s=this.settings.sorting,p=this.settings.paging,filtering=this.settings.filtering;if(schema&&schema.fields&&schema.fields().length>0&&(this.settings.localSchemaTransform||forceApply)){this._origDs=this._data;schema._type=$.ig.util.getType(this._data);ds=schema.transform(this._data);this._data=ds;this._dataView=this._data;if(s.type==="local"&&s.defaultFields.length>0){this.sort(s.defaultFields,s.defaultDirection)}else if(this.isGroupByApplied(s.expressions)){this._generateGroupByData(this._filter?this._filteredData:this._data,s.expressions)}if(filtering.type==="local"&&filtering.defaultFields.length>0){this.filter(filtering.defaultFields)}if(p.enabled&&p.type==="local"){this._page()}}},_populateTransformedData:function(data){if(data!==null&&data!==undefined){this._transformedData=data}else{this._transformedData=this._data}},_invokeCallback:function(callee,callback){var cbResolved,calleeResolved;cbResolved=callback||this.settings.callback;calleeResolved=callee||this.settings.callee;if(cbResolved){if(calleeResolved){cbResolved.apply(calleeResolved,[true,"",this])}else{cbResolved(true,"",this)}}},_remoteData:function(callback,callee){var params,url=this.settings.dataSource,dataType=this.settings.responseDataType,contentType=this.settings.responseContentType,options,verb=this.settings.requestType;params=this._encodeUrl();if(callback){this._customCallback=callback}else{this._customCallback=null}this._callee=callee;options={url:url,data:verb==="GET"?params:JSON.stringify(params),type:verb,dataType:dataType,async:true,context:this,contentType:contentType,cache:false,dataFilter:this._dataFilter,success:this._successCallback,complete:this._completeCallback,converters:{"text json":function(value){return value}},error:this._errorCallback};this._processRequest(options)},_dataFilter:function(data,type){var ds,schema=this.context.schema(),rawData,t=this.context.settings.type,ver,returnString=false;if(type===undefined||type===null){if(typeof data==="object"&&data&&typeof data.charAt!=="function"){if($.isXMLDoc(data)){type="xml"}else{type="json"}}else{type="text"}}if(type==="xml"){schema._type="xml";ds=this.context._processXmlResponse(data,true,this.context)}else if(type==="json"){if(schema){schema._type="json"}if($.ig.util.getType(data)==="string"){rawData=JSON.parse(data)}else{rawData=data}returnString=true;ds=this.context._processJsonResponse(rawData,this.context)}else{if($.fn.jquery){ver=$.fn.jquery.split(".")}if(ver&&ver.length>=2){if(parseInt(ver[1],10)>4||parseInt(ver[0],10)>1){this.dataTypes=[];this.dataTypes.push("text");returnString=true}}data=$.ig.util.getType(data)==="string"?$.trim(data):data;if(data&&$.ig.util.getType(data)==="string"&&(data.startsWith("<?xml")||data.startsWith("<"))||t==="xml"){if(schema){schema._type="xml"}ds=this.context._processXmlResponse(this.context.stringToXmlObject(data),false,this.context)}else if(data&&$.ig.util.getType(data)==="string"&&data.startsWith("[")||(t==="json"||t==="array")){if(schema){schema._type="json"}ds=this.context._processJsonResponse(JSON.parse(data),this.context)}else if(data&&$.ig.util.getType(data)==="string"&&data.startsWith("{")||t==="json"){if(schema){schema._type="json"}ds=this.context._processJsonResponse(JSON.parse(data),this.context)}else if($.isXMLDoc(data)){if(schema){schema._type="xml"}ds=this.context._processXmlResponse(data,true,this.context)}else if(data!==""&&data!==null){throw new Error($.ig.util.getLocaleValue("DataSourceLocale","errorUnrecognizedResponseType"))}}if(returnString){if(!(this.context.settings.paging&&this.context.settings.paging.enabled&&this.context.settings.paging.appendPage)){this.context._data=ds}this.context._alreadySet=true}return ds},_successCallback:function(data){var x,len=data?data.length:0;if((data===undefined||data===null)&&!this._alreadySet){this._data=[];this._dataView=[]}else{if(this._data.length>=0&&this.settings.paging&&this.settings.paging.enabled&&this.settings.paging.appendPage){for(x=0;x<len;++x){this._data[this._data.length]=data[x]}}else{if(this._alreadySet){this._dataView=this._data}else{this._data=data;this._dataView=data}}}this._alreadySet=false;this._populateTransformedData();this._isPagingReq=false;this._isFilteringReq=false;this._isSortingReq=false;this._isSummariesReq=false},_errorCallback:function(req,status,error){var f=this._customCallback||this.settings.callback,errmsg,statusMsg;this._isPagingReq=false;this._isFilteringReq=false;this._isSortingReq=false;this._isSummariesReq=false;if(req&&req.status&&req.statusText){statusMsg=" ( "+req.status+" "+req.statusText+" ) ";if(req.status===200&&error!==undefined){statusMsg=" ( "+(error.message||error)+" ) "}}else if(status!==null){statusMsg=" ( "+status+" ) "}else if(error!==undefined){statusMsg=" ( "+(error.message||error)+" ) "}errmsg=$.ig.util.getLocaleValue("DataSourceLocale","errorRemoteRequest")+statusMsg;if(f&&this._callee){f.apply(this._callee,[false,errmsg,req,this])}else if(f){f(false,errmsg,req,this)}},_completeCallback:function(){var f,callee,s=this.settings.sorting,p=this.settings.paging,filtering=this.settings.filtering;if(filtering.type==="local"&&filtering.defaultFields.length>0){this.filter(filtering.defaultFields)}if(s.type==="local"&&s.defaultFields.length>0){this.sort(s.defaultFields,s.defaultDirection)}else if(this.isGroupByApplied(s.expressions)){this._generateGroupByData(this._filter?this._filteredData:this._data,s.expressions)}if(p.enabled&&p.type==="local"){this._page()}this._internalDataBound(true);f=this._customCallback||this.settings.callback;callee=this._callee||this.settings.callee;if(f&&callee){f.apply(callee,[true,"",this])}else if(f){f(true,"",this)}},_processRequest:function(options){var o,s;if(this.settings.responseDataType==="jsonp"){o={dataType:"jsonp",type:"GET",url:options.url,data:options.data,success:this._jsonpFilter.bind(this),error:this._errorCallback.bind(this)};s=this.settings;if(s.jsonp!==undefined&&s.jsonp!==null){o.jsonp=this.settings.jsonp}if(s.jsonpCallback!==undefined){o.jsonpCallback=this.settings.jsonpCallback}this._ajaxRequest=$.ajax(o)}else{this._ajaxRequest=$.ajax(options)}},_jsonpFilter:function(data){var resp,x;this.context=this;resp=this._dataFilter(data,"json");if(!resp.length&&$.ig.util.getType(resp)==="object"){resp=[resp]}if(this._data.length>=0&&this.settings.paging&&this.settings.paging.enabled&&this.settings.paging.appendPage){for(x=0;x<resp.length;++x){this._data[this._data.length]=resp[x]}}else{this._data=resp;this._dataView=resp}this._populateTransformedData();this._completeCallback()},_processJsonResponse:function(data,context){var ds,schema=context.schema(),resKey,resPath,i;if(this._responseData){this._responseData(data)}if(data.Metadata){this._metadata=data.Metadata}if(schema&&schema.fields&&schema.fields().length>0&&this.settings.localSchemaTransform){ds=schema.transform(data)}else{resKey=context.settings.responseDataKey;if(resKey!==null&&resKey!==undefined){resPath=resKey.split(".");if(resPath.length>0){ds=data;for(i=0;i<resPath.length;i++){ds=ds[resPath[i]]}if(typeof ds==="string"){ds=JSON.parse(ds)}}else{ds=data}}else{ds=data}}if(context._isPagingReq||context._isFilteringReq){this.totalRecordsCount(null,this.settings.responseTotalRecCountKey,data,context)}this.summariesResponse(this.settings.summaries.summariesResponseKey,data);return ds},_processXmlResponse:function(data,isParsed,context){var ds,schema=context.schema(),tmpSchema,resKey;if(schema&&schema.fields&&schema.fields().length>0){ds=this.settings.localSchemaTransform?schema.transform(data):data}else{resKey=context.settings.responseDataKey;if(resKey&&resKey!==""){tmpSchema=new $.ig.DataSchema;ds=context._xmlToArray(tmpSchema._findXmlRecordsRoot(data,resKey))}else{ds=context._xmlToArray(data)}}return ds},_xmlToArray:function(data){var ds=[],root=data,i,r,j,name,val,o;o=window.ActiveXObject;if(data&&data.childNodes&&data.childNodes.length===1){root=data.childNodes[0]}for(i=0;i<root.childNodes.length;i++){r=root.childNodes[i];ds[i]=[];for(j=0;j<r.childNodes.length;j++){name=o===undefined?r.childNodes[j].localName:r.childNodes[j].baseName;val=o===undefined?r.childNodes[j].textContent:r.childNodes[j].text;ds[i][name]=val}}return ds},_encodeUrl:function(){var props=this.settings,sParams={},fParams={},pParams={},params,selParams={},sumParams={},extraParams={},pkParams={},noCancel=true;params={sortingParams:sParams,filteringParams:fParams,pagingParams:pParams,selectParams:selParams,summariesParams:sumParams,extraParams:extraParams,pkParams:pkParams};if($.ig.util.getType(props.urlParamsEncoding)==="function"){noCancel=props.urlParamsEncoding(this,params)}if(noCancel){this._encodeSelectParams(params);this._encodeSortingParams(params);this._encodeFilteringParams(params);this._encodePagingParams(params);this._encodeSummariesParams(params);this._encodePkParams(params);if(typeof this.settings.encodeExtraParams==="function"){this.settings.encodeExtraParams(this,params)}if($.ig.util.getType(props.urlParamsEncoded)==="function"){props.urlParamsEncoded(this,params)}}return $.extend(true,{},params.sortingParams,params.filteringParams,params.pagingParams,params.selectParams,params.summariesParams,params.extraParams,params.pkParams)},_encodePkParams:function(params){var p=this.settings.paging,s=this.settings.sorting,f=this.settings.filtering,sm=this.settings.summaries,pk=this._schema?this._schema._pk:null;if(pk&&(p.enabled&&p.type==="remote"||(s.type==="remote"||f.type==="remote"||sm.type==="remote"))){params.pkParams.pk=pk}},_encodeSelectParams:function(params){var selParams=params.selectParams,i;if(!this.settings.localSchemaTransform&&this.schema()&&this.schema().fields().length>0){selParams.$select="";for(i=0;i<this.schema().fields().length;i++){if(i!==0){selParams.$select+=","}selParams.$select+=this.schema().fields()[i].name}}else if(!this.settings.localSchemaTransform&&this.schema()&&this.schema().fields().length===0){selParams.$select="*"}},_encodePagingParams:function(params){var p=this.settings.paging;if(p.enabled&&p.type==="remote"){this._isPagingReq=true;if(p.pageIndexUrlKey!==null&&p.pageSizeUrlKey!==null){params.pagingParams[p.pageIndexUrlKey]=this.pageIndex();params.pagingParams[p.pageSizeUrlKey]=this.pageSize()}else{params.pagingParams.$skip=this.pageIndex()*this.pageSize();params.pagingParams.$top=this.pageSize();params.pagingParams.$inlinecount="allpages";if(this.settings.responseTotalRecCountKey===null){this.settings.responseTotalRecCountKey="d.__count"}}}},_encodeSortingParams:function(params){var s=this.settings.sorting,tmpdir,i,sfields,fieldName,field,url,urlQS,key,hlayout=null;if(s.type==="remote"){if(s.exprString){sfields=this._parseSortExpressions(s.exprString)}else{sfields=s.expressions}this._isSortingReq=true;for(i=0;i<sfields.length;i++){if(sfields[i].layout){hlayout=sfields[i].layout}fieldName=sfields[i].fieldName;if(s.sortUrlAscValueKey!==null&&s.sortUrlDescValueKey!==null&&s.sortUrlKey!==null){tmpdir=sfields[i].dir&&sfields[i].dir.toLowerCase().startsWith("asc")?s.sortUrlAscValueKey:s.sortUrlDescValueKey;field=this._getSchemaField(fieldName);if(field&&field.type){key=s.sortUrlKey+"("+fieldName+":"+field.type+")"}else{key=s.sortUrlKey+"("+fieldName+")"}params.sortingParams[key]=tmpdir}else{if(params.sortingParams.$orderby===undefined){params.sortingParams.$orderby=""}params.sortingParams.$orderby=params.sortingParams.$orderby+fieldName+" "+sfields[i].dir.toLowerCase();if(i<sfields.length-1){params.sortingParams.$orderby+=","}}}if(hlayout){url=this.settings.dataSource;if(url&&$.ig.util.getType(url)==="string"&&url.indexOf("layout="+hlayout)>=0){url=url.substr(url.indexOf("?")+1);urlQS=url.split("&");for(i=0;i<urlQS.length;i++){if(urlQS[i].indexOf("layout=")>=0){if(urlQS[i].replace("layout=","")===hlayout){hlayout=null}break}}}if(hlayout){params.sortingParams.layout=hlayout}}}},_encodeFilteringParams:function(params){var f=this.settings.filtering,ffields,i,key,exprNotReq,cond,d,day,month,year,curDate,expr,fieldName,field,logic="and";if(f.type==="remote"){if(f.exprString){ffields=this._parseFilterExprString(f.exprString)}else{ffields=f.expressions}for(i=0;i<ffields.length;i++){this._isFilteringReq=true;cond=ffields[i].cond;fieldName=ffields[i].fieldName;exprNotReq=this._isFilteringExprNotReq(cond);if(f.filterExprUrlKey!==null){field=this._getSchemaField(fieldName);if(field&&field.type){key=f.filterExprUrlKey+"("+fieldName+":"+field.type+")"}else{key=f.filterExprUrlKey+"("+fieldName+")"}if($.ig.util.getType(ffields[i].expr)==="date"){d=Date.UTC(ffields[i].expr.getFullYear(),ffields[i].expr.getMonth(),ffields[i].expr.getDate(),ffields[i].expr.getHours(),ffields[i].expr.getMinutes())}else{d=encodeURIComponent(ffields[i].expr)}if(params.filteringParams[key]===undefined){params.filteringParams[key]=ffields[i].cond+"("+(exprNotReq?"":d)+")"}else{params.filteringParams[key]=params.filteringParams[key]+","+ffields[i].cond+"("+(exprNotReq?"":d)+")"}}else{if(params.filteringParams.$filter===undefined){params.filteringParams.$filter=""}expr=ffields[i].expr;if($.ig.util.getType(expr)==="string"){if(!f.caseSensitive){fieldName="tolower("+fieldName+")";expr=expr.toLowerCase()}expr=expr.replace(/\'/g,"''")}if(ffields[i].cond==="startsWith"){params.filteringParams.$filter+="startswith("+fieldName+","+"'"+expr+"') eq true"}else if(ffields[i].cond==="endsWith"){params.filteringParams.$filter+="endswith("+fieldName+","+"'"+expr+"') eq true"}else if(ffields[i].cond==="contains"){params.filteringParams.$filter+="indexof("+fieldName+","+"'"+expr+"') ge 0"}else if(ffields[i].cond==="doesNotContain"){params.filteringParams.$filter+="indexof("+fieldName+","+"'"+expr+"') eq -1"}else if(ffields[i].cond==="equals"){if($.ig.util.getType(ffields[i].expr)==="string"){params.filteringParams.$filter+=fieldName+" eq "+"'"+expr+"'"}else{params.filteringParams.$filter+=ffields[i].fieldName+" eq "+ffields[i].expr}}else if(ffields[i].cond==="true"){params.filteringParams.$filter+=ffields[i].fieldName+" eq true"}else if(ffields[i].cond==="false"){params.filteringParams.$filter+=ffields[i].fieldName+" eq false"}else if(ffields[i].cond==="doesNotEqual"){if($.ig.util.getType(ffields[i].expr)==="string"){params.filteringParams.$filter+=fieldName+" ne "+"'"+expr+"'"}else{params.filteringParams.$filter+=ffields[i].fieldName+" ne "+ffields[i].expr}}else if(ffields[i].cond==="greaterThan"){params.filteringParams.$filter+=ffields[i].fieldName+" gt "+ffields[i].expr}else if(ffields[i].cond==="lessThan"){params.filteringParams.$filter+=ffields[i].fieldName+" lt "+ffields[i].expr}else if(ffields[i].cond==="greaterThanOrEqualTo"){params.filteringParams.$filter+=ffields[i].fieldName+" ge "+ffields[i].expr}else if(ffields[i].cond==="lessThanOrEqualTo"){params.filteringParams.$filter+=ffields[i].fieldName+" le "+ffields[i].expr}else if(ffields[i].cond==="null"){params.filteringParams.$filter+=ffields[i].fieldName+" eq null"}else if(ffields[i].cond==="notNull"){params.filteringParams.$filter+=ffields[i].fieldName+" ne null"}else if(ffields[i].cond==="empty"){params.filteringParams.$filter+="length("+ffields[i].fieldName+") eq 0"}else if(ffields[i].cond==="notEmpty"){params.filteringParams.$filter+="length("+ffields[i].fieldName+") gt 0"}else if(ffields[i].cond==="on"){expr=this._parser.toDate(ffields[i].expr);year=expr.getFullYear();month=expr.getMonth()+1;day=expr.getDate();params.filteringParams.$filter+="day("+ffields[i].fieldName+") eq "+day+" and ";params.filteringParams.$filter+="month("+ffields[i].fieldName+") eq "+month+" and ";params.filteringParams.$filter+="year("+ffields[i].fieldName+") eq "+year}else if(ffields[i].cond==="notOn"){expr=this._parser.toDate(ffields[i].expr);year=expr.getFullYear();month=expr.getMonth()+1;day=expr.getDate();params.filteringParams.$filter+="day("+ffields[i].fieldName+") ne "+day+" or ";params.filteringParams.$filter+="month("+ffields[i].fieldName+") ne "+month+" or ";params.filteringParams.$filter+="year("+ffields[i].fieldName+") ne "+year}else if(ffields