@fusioncharts/datatable
Version:
In memory tabular data storage
1 lines • 2.15 kB
JavaScript
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports.default=void 0;var _typeEnums=require("./type-enums");var _datatableUtils=require("../utils/datatable-utils");var _comparators=require("../utils/comparators");var _sort=_interopRequireDefault(require("../utils/sort"));var UNDEF;function sort(sortConfig){var sortConfigArr=sortConfig;return{ops:"sort",type:_typeEnums.OperatorTypes.Sort,_updateArgs:function _updateArgs(configArr){sortConfigArr=configArr},fn:function fn(_data,schema,config,_generatorFn){var data=_data;return{data:data,schema:schema,config:sortConfigArr.constructor===Array&&sortConfigArr.length?{indexBy:sortConfigArr[0].column}:sortConfigArr.constructor===Object?{indexBy:sortConfigArr.column}:UNDEF,generatorFn:function generatorFn(){if(_generatorFn){data=_generatorFn.call()}var compareFn;if(sortConfigArr.constructor===Function){compareFn=sortConfigArr}else{if(sortConfigArr.constructor!==Array){sortConfigArr=[sortConfigArr]}var comparatorFnArr=[],colIndexArr=[],i,colIndex,result;for(i=0;i<sortConfigArr.length;i++){if(sortConfigArr[i].column){colIndex=(0,_datatableUtils.columnIndexOf)(sortConfigArr[i].column,schema);colIndexArr.push(colIndex);if(colIndex===-1){throw new Error("Sort column is not found in schema - "+sortConfigArr[i].column)}switch(schema[colIndex].type){case"number":case"interval":case"date":comparatorFnArr.push(_comparators.numberComparator);break;default:comparatorFnArr.push(_comparators.stringComparator)}}}compareFn=function compareFn(a,b){for(i=0;i<sortConfigArr.length;i++){if(schema[colIndexArr[i]].type==="interval"){result=sortConfigArr[i].order==="desc"?comparatorFnArr[i](b[colIndexArr[i]].start,a[colIndexArr[i]].start):comparatorFnArr[i](a[colIndexArr[i]].start,b[colIndexArr[i]].start)}else{result=sortConfigArr[i].order==="desc"?comparatorFnArr[i](b[colIndexArr[i]],a[colIndexArr[i]]):comparatorFnArr[i](a[colIndexArr[i]],b[colIndexArr[i]])}if(result===0){if(i===sortConfigArr.length-1){return 0}continue}else{return result}}}}(0,_sort.default)(data,compareFn);return data}}}}}var _default=exports.default=sort;
;