@fusioncharts/datatable
Version:
In memory tabular data storage
1 lines • 1.6 kB
JavaScript
exports.__esModule=true;exports.default=pipe;var _typeEnums=require("./type-enums");var _sort=require("../utils/sort");function pipe(){var opsLen,currentFunnel=[],markedForDel=[],resultFunnel=[],_optimizeGroupBetweenOps=function _optimizeGroupBetweenOps(current,marked){var result=[],funnelLen=current.length;for(var i=0;i<funnelLen;i++){if(!marked[i]){result.push(current[i])}}if(result&&result.length>0){(0,_sort.binaryInsertionSort)(result,(function(a,b){return a.type-b.type}))}return result},_optimizeEndOps=function _optimizeEndOps(current){var result=[],funnelLen=current.length;(0,_sort.binaryInsertionSort)(current,(function(a,b){return a.type-b.type}));result.push(current[0]);for(var i=1;i<funnelLen;i++){if(current[i].type>=3&¤t[i].type===result[result.length-1].type){result.pop()}result.push(current[i])}return result};for(var _len=arguments.length,operations=new Array(_len),_key=0;_key<_len;_key++){operations[_key]=arguments[_key]}opsLen=operations.length;for(var i=0;i<opsLen;i++){switch(operations[i].type){case _typeEnums.OperatorTypes.IndexOpsFilter:case _typeEnums.OperatorTypes.GenericFilter:currentFunnel.push(operations[i]);markedForDel.push(false);break;case _typeEnums.OperatorTypes.Select:case _typeEnums.OperatorTypes.Sort:currentFunnel.push(operations[i]);markedForDel.push(true);break;case _typeEnums.OperatorTypes.GroupBy:resultFunnel=resultFunnel.concat(_optimizeGroupBetweenOps(currentFunnel,markedForDel),operations[i]);currentFunnel=[];markedForDel=[];break}}resultFunnel=resultFunnel.concat(_optimizeEndOps(currentFunnel));return resultFunnel}
;