/**
* limits the number of nodes length as many as limitNumber.
* @memberOf Core#
* @function
* @example
* core.limitKeys(10);
* @param {number} limitNumber
* @return {Core}
*/
function limitKeys(limitNumber) {
let _limit = function (target, num, level, maxLevel) {
target = target.slice(0, num);
if (level < maxLevel) target.forEach(d => d.children = _limit(d.children, num, level+1, maxLevel))
return target;
}
if(!arguments.length) {
let num = this.__attrs__.limitKeys;
if (num) {
let munged = this.__execs__.munged;
let nestedLevel = this.dimensions().length;
let result = _limit(this.aggregated() ? munged.children : munged, num, 1 , nestedLevel);
if (this.aggregated()) {
munged.children = result;
result = munged;
}
this.__execs__.munged = result;
}
} else {
this.__attrs__.limitRows = limitNumber;
}
return this;
}
export default limitKeys;