@froalacharts/datatable
Version:
In memory tabular data storage
1 lines • 10.5 kB
JavaScript
;exports.__esModule=true;exports.indexColBetween=indexColBetween;exports.between=between;exports.indexColEquals=indexColEquals;exports.equals=equals;exports.indexColLess=indexColLess;exports.less=less;exports.indexColLessEquals=indexColLessEquals;exports.lessEquals=lessEquals;exports.indexColGreater=indexColGreater;exports.greater=greater;exports.indexColGreaterEquals=indexColGreaterEquals;exports.greaterEquals=greaterEquals;var _sortedSearch=require("../utils/sorted-search");var _datatableUtils=require("../utils/datatable-utils");var _typeEnums=require("./type-enums");var _comparators=require("../utils/comparators");function indexColBetween(columnIndex,startVal,endVal,_comparer){var start=startVal,end=endVal,comparer=_comparer;return{ops:"indexColBetween",type:_typeEnums.OperatorTypes.IndexOpsFilter,_updateArgs:function _updateArgs(startLimit,endLimit){start=startLimit;end=endLimit},fn:function fn(_data,schema,config,generatorFn){var data=_data,loIndex,hiIndex,hiComparer;if(generatorFn){data=generatorFn.call()}if(!comparer){comparer=_getIndexColComparer(schema,columnIndex)}if(schema[columnIndex].type==="interval"){hiComparer=function hiComparer(a,b){return(0,_comparators.numberComparator)(a[columnIndex].end,b)}}else{hiComparer=comparer}loIndex=(0,_sortedSearch.leftMostExactOrGreater)(start,data,comparer,0,data.length);hiIndex=(0,_sortedSearch.rightMostExactOrLesser)(end,data,hiComparer,loIndex,data.length);return{data:data,schema:schema,config:config,generatorFn:function generatorFn(){return data.slice(loIndex,hiIndex+1)}}}}}function between(columnName,startVal,endVal){var start=startVal,end=endVal;return{ops:"between",type:_typeEnums.OperatorTypes.GenericFilter,_updateArgs:function _updateArgs(startLimit,endLimit){start=startLimit;end=endLimit},fn:function fn(_data,schema,config,generatorFn){var data=_data,columnIndex,comparer;if(generatorFn){data=generatorFn.call()}columnIndex=(0,_datatableUtils.columnIndexOf)(columnName,schema);if(columnIndex>=0){comparer=_getIndexColComparer(schema,columnIndex);if(config&&config.indexBy===columnName){var indexOps=indexColBetween(columnIndex,start,end,comparer);return indexOps.fn(data,schema,config)}return{data:data,schema:schema,config:config,generatorFn:function generatorFn(){return data.filter((function(row){return comparer(row,start)>=0&&comparer(row,end)<=0}))}}}throw new Error("Column '"+columnName+"' is not found in the schema.")}}}function indexColEquals(columnIndex,val,_comparer){var valToCheck=val,comparer=_comparer;return{ops:"indexColEquals",type:_typeEnums.OperatorTypes.IndexOpsFilter,_updateArgs:function _updateArgs(compareVal){valToCheck=compareVal},fn:function fn(_data,schema,config,generatorFn){var data=_data,loIndex,hiIndex;if(generatorFn){data=generatorFn.call()}if(!comparer){comparer=_getIndexColComparer(schema,columnIndex)}loIndex=(0,_sortedSearch.leftMostExactOrGreater)(valToCheck,data,comparer,0,data.length);if(loIndex>=data.length||comparer(data[loIndex],valToCheck)!==0){return{data:[],schema:schema,config:config}}hiIndex=(0,_sortedSearch.rightMostExactOrLesser)(valToCheck,data,comparer,loIndex,data.length);return{data:data,schema:schema,config:config,generatorFn:function generatorFn(){return data.slice(loIndex,hiIndex+1)}}}}}function equals(columnName,val){var valToCheck=val;return{ops:"equals",type:_typeEnums.OperatorTypes.GenericFilter,_updateArgs:function _updateArgs(compareVal){valToCheck=compareVal},fn:function fn(_data,schema,config,generatorFn){var data=_data,columnIndex,comparer;if(generatorFn){data=generatorFn.call()}columnIndex=(0,_datatableUtils.columnIndexOf)(columnName,schema);if(columnIndex>=0){comparer=_getIndexColComparer(schema,columnIndex);if(config&&config.indexBy===columnName){var indexOps=indexColEquals(columnIndex,valToCheck,comparer);return indexOps.fn(data,schema,config)}return{data:data,schema:schema,config:config,generatorFn:function generatorFn(){return data.filter((function(row){return comparer(row,valToCheck)===0}))}}}throw new Error("Column '"+columnName+"' is not found in the schema.")}}}function indexColLess(columnIndex,val,_comparer){var valToCheck=val,comparer=_comparer;return{ops:"indexColLess",type:_typeEnums.OperatorTypes.IndexOpsFilter,_updateArgs:function _updateArgs(compareVal){valToCheck=compareVal},fn:function fn(_data,schema,config,generatorFn){var data=_data,pos;if(generatorFn){data=generatorFn.call()}if(!comparer){comparer=_getIndexColComparer(schema,columnIndex)}pos=(0,_sortedSearch.leftMostExactOrGreater)(valToCheck,data,comparer,0,data.length);return{data:data,schema:schema,config:config,generatorFn:function generatorFn(){return data.slice(0,pos)}}}}}function less(columnName,val){var valToCheck=val;return{ops:"less",type:_typeEnums.OperatorTypes.GenericFilter,_updateArgs:function _updateArgs(compareVal){valToCheck=compareVal},fn:function fn(_data,schema,config,generatorFn){var data=_data,columnIndex,comparer;if(generatorFn){data=generatorFn.call()}columnIndex=(0,_datatableUtils.columnIndexOf)(columnName,schema);if(columnIndex>=0){comparer=_getIndexColComparer(schema,columnIndex);if(config&&config.indexBy===columnName){var indexOps=indexColLess(columnIndex,valToCheck,comparer);return indexOps.fn(data,schema,config)}return{data:data,schema:schema,config:config,generatorFn:function generatorFn(){return data.filter((function(row){return comparer(row,valToCheck)<0}))}}}throw new Error("Column '"+columnName+"' is not found in the schema.")}}}function indexColLessEquals(columnIndex,val,_comparer){var valToCheck=val,comparer=_comparer;return{ops:"indexColLessEquals",type:_typeEnums.OperatorTypes.IndexOpsFilter,_updateArgs:function _updateArgs(compareVal){valToCheck=compareVal},fn:function fn(_data,schema,config,generatorFn){var data=_data,pos;if(generatorFn){data=generatorFn.call()}if(!comparer){comparer=_getIndexColComparer(schema,columnIndex)}pos=(0,_sortedSearch.rightMostExactOrLesser)(valToCheck,data,comparer,0,data.length);return{data:data,schema:schema,config:config,generatorFn:function generatorFn(){return data.slice(0,pos+1)}}}}}function lessEquals(columnName,val){var valToCheck=val;return{ops:"lessEquals",type:_typeEnums.OperatorTypes.GenericFilter,_updateArgs:function _updateArgs(compareVal){valToCheck=compareVal},fn:function fn(_data,schema,config,generatorFn){var data=_data,columnIndex,comparer;if(generatorFn){data=generatorFn.call()}columnIndex=(0,_datatableUtils.columnIndexOf)(columnName,schema);if(columnIndex>=0){comparer=_getIndexColComparer(schema,columnIndex);if(config&&config.indexBy===columnName){var indexOps=indexColLessEquals(columnIndex,valToCheck,comparer);return indexOps.fn(data,schema,config)}return{data:data,schema:schema,config:config,generatorFn:function generatorFn(){return data.filter((function(row){return comparer(row,valToCheck)<=0}))}}}throw new Error("Column '"+columnName+"' is not found in the schema.")}}}function indexColGreater(columnIndex,val,_comparer){var valToCheck=val,comparer=_comparer;return{ops:"indexColGreater",type:_typeEnums.OperatorTypes.IndexOpsFilter,_updateArgs:function _updateArgs(compareVal){valToCheck=compareVal},fn:function fn(_data,schema,config,generatorFn){var data=_data,pos,nullPos;if(generatorFn){data=generatorFn.call()}if(!comparer){comparer=_getIndexColComparer(schema,columnIndex)}pos=(0,_sortedSearch.rightMostExactOrLesser)(valToCheck,data,comparer,0,data.length);nullPos=(0,_sortedSearch.leftMostExactOrGreater)(null,data,comparer,pos,data.length);return{data:data,schema:schema,config:config,generatorFn:function generatorFn(){return data.slice(pos+1,nullPos)}}}}}function greater(columnName,val){var valToCheck=val;return{ops:"greater",type:_typeEnums.OperatorTypes.GenericFilter,_updateArgs:function _updateArgs(compareVal){valToCheck=compareVal},fn:function fn(_data,schema,config,generatorFn){var data=_data,columnIndex,comparer;if(generatorFn){data=generatorFn.call()}columnIndex=(0,_datatableUtils.columnIndexOf)(columnName,schema);if(columnIndex>=0){comparer=_getIndexColComparer(schema,columnIndex);if(config&&config.indexBy===columnName){var indexOps=indexColGreater(columnIndex,valToCheck,comparer);return indexOps.fn(data,schema,config)}return{data:data,schema:schema,config:config,generatorFn:function generatorFn(){return data.filter((function(row){return row[columnIndex]!==null&&typeof row[columnIndex]!=="undefined"&&comparer(row,valToCheck)>0}))}}}throw new Error("Column '"+columnName+"' is not found in the schema.")}}}function indexColGreaterEquals(columnIndex,val,_comparer){var valToCheck=val,comparer=_comparer;return{ops:"indexColGreaterEquals",type:_typeEnums.OperatorTypes.IndexOpsFilter,_updateArgs:function _updateArgs(compareVal){valToCheck=compareVal},fn:function fn(_data,schema,config,generatorFn){var data=_data,pos,nullPos;if(generatorFn){data=generatorFn.call()}if(!comparer){comparer=_getIndexColComparer(schema,columnIndex)}pos=(0,_sortedSearch.leftMostExactOrGreater)(valToCheck,data,comparer,0,data.length);nullPos=(0,_sortedSearch.leftMostExactOrGreater)(null,data,comparer,pos,data.length);return{data:data,schema:schema,config:config,generatorFn:function generatorFn(){return data.slice(pos,nullPos)}}}}}function greaterEquals(columnName,val){var valToCheck=val;return{ops:"greaterEquals",type:_typeEnums.OperatorTypes.GenericFilter,_updateArgs:function _updateArgs(compareVal){valToCheck=compareVal},fn:function fn(_data,schema,config,generatorFn){var data=_data,columnIndex,comparer;if(generatorFn){data=generatorFn.call()}columnIndex=(0,_datatableUtils.columnIndexOf)(columnName,schema);if(columnIndex>=0){comparer=_getIndexColComparer(schema,columnIndex);if(config&&config.indexBy===columnName){var indexOps=indexColGreaterEquals(columnIndex,valToCheck,comparer);return indexOps.fn(data,schema,config)}return{data:data,schema:schema,config:config,generatorFn:function generatorFn(){return data.filter((function(row){return row[columnIndex]!==null&&typeof row[columnIndex]!=="undefined"&&comparer(row,valToCheck)>=0}))}}}throw new Error("Column '"+columnName+"' is not found in the schema.")}}}var _getIndexColComparer=function _getIndexColComparer(schema,columnIndex){switch(schema[columnIndex].type){case"interval":return function(a,b){return(0,_comparators.numberComparator)(a[columnIndex].start,b)};case"number":case"date":return function(a,b){return(0,_comparators.numberComparator)(a[columnIndex],b)};default:return function(a,b){return(0,_comparators.stringComparator)(String(a[columnIndex]).toLowerCase(),String(b).toLowerCase())}}};