recharts
Version:
React charts
210 lines (171 loc) • 5.19 kB
JavaScript
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
Object.defineProperty(exports, "__esModule", {
value: true
});
var numberClass = '[object Number]';
var stringClass = '[object String]';
var arrayClass = '[object Array]';
var idStart = 0x0907;
var isArray = Array.isArray || function (value) {
return Object.prototype.toString.call(value) === arrayClass;
};
var isString = function isString(value) {
return typeof value === 'string' || value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && Object.prototype.toString.call(value) === stringClass || false;
};
var isNumber = function isNumber(value) {
return value === +value;
};
var isFunction = function isFunction(value) {
return typeof value === 'function';
};
var getUniqueId = function getUniqueId(prefix) {
return (prefix || '_') + idStart++;
};
/**
* Generate a array of number which is greater than or equal to from and sma than less than to
* @param {Number} from Start value
* @param {Number} to End value
* @return {Array} An array
*/
var range = function range(from, to) {
var result = [];
var n = from;
while (n < to) {
result.push(n);
n += 1;
}
return result;
};
/**
* Get percent value of a total value
* @param {Number|String} percent A percent
* @param {Number} totalValue Total value
* @param {NUmber} defaultValue The value returned when percent is undefined or invalid
* @return {Number} value
*/
var getPercentValue = function getPercentValue(percent, totalValue) {
var defaultValue = arguments.length <= 2 || arguments[2] === undefined ? 0 : arguments[2];
if (!isNumber(percent) && !isString(percent)) {
return defaultValue;
}
var str = '' + percent;
var index = str.indexOf('%');
var value = undefined;
if (index > 0) {
value = totalValue * parseFloat(str.slice(0, index)) / 100;
} else if (percent === +percent) {
value = percent;
}
if (isNaN(value) || value > totalValue) {
value = totalValue;
}
return value;
};
/**
* Get all values of an object
* @param {Object} obj An object
* @return {Array} Array
*/
var getElementOfObject = function getElementOfObject(obj) {
var keys = Object.keys(obj);
return keys.length ? obj[keys[0]] : null;
};
var maxBy = function maxBy(fn, a, b) {
return fn(a) > fn(b) ? a : b;
};
/**
* Pad symbol
* @param {number} num A number
* @param {string} symbol pad sring
* @return {array} the value after pad
*/
var pad = function pad(num, symbol) {
var total = '';
var temp = num;
while (temp > 0) {
total += symbol;
temp--;
}
return total;
};
/**
* Covert number to a string which has a fixed number of bits
* @param {Object} num A number
* @param {Object} fixed A number of bits
* @return {String} result
*/
var toFixed = function toFixed(num) {
var fixed = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];
var fixedNum = num.toFixed(fixed + 1);
var sNum = fixedNum + '';
var sep = sNum.split('.');
var pint = parseInt(sep[0], 10) || 0;
var dec = '0';
var res = '';
if (sep[1] !== undefined && parseInt(sep[1], 10) !== 0) {
dec = sep[1];
}
if (parseInt(dec, 10) !== 0) {
var fDec = parseFloat('0.' + dec);
var fixedDec = Math.floor(fDec * Math.pow(10, fixed)) + '';
var len = fixedDec.length;
if (fixed !== 0) {
if (len === fixed + 1) {
res = [pint + 1, pad(fixed, '0')].join('.');
} else if (len < fixed) {
res = [pint, pad(fixed - len, '0') + fixedDec].join('.');
} else {
res = [pint, fixedDec.substring(0, fixed)].join('.');
}
} else {
res = pint;
}
} else {
if (fixed !== 0 && pint !== 0) {
res = [pint, pad(fixed, '0')].join('.');
} else {
res = pint;
}
}
return res + '';
};
/**
* convert a number to percentage
* @param {Number} num A float number
* @param {String} unit The unit of percentage
* @param {Number} max The maximum value of percentage
* @return {String} percentage
*/
var toPercentage = function toPercentage(num) {
var unit = arguments.length <= 1 || arguments[1] === undefined ? '%' : arguments[1];
var max = arguments.length <= 2 || arguments[2] === undefined ? 99999 : arguments[2];
if (num !== +num) {
return '-';
}
var res = num || '';
var fixedNum = toFixed(num * 100, 2);
var fNum = parseFloat(fixedNum);
var iNum = parseInt(fixedNum, 10);
// if (fNum > 100000) {
if (fNum > max) {
res = '>' + max;
} else {
if (fNum === iNum) {
res = iNum;
} else {
res = fixedNum;
}
}
res += unit;
return res;
};
exports.default = {
isArray: isArray, isNumber: isNumber, isString: isString, isFunction: isFunction,
maxBy: maxBy,
getUniqueId: getUniqueId,
range: range,
getElementOfObject: getElementOfObject,
getPercentValue: getPercentValue,
toFixed: toFixed, toPercentage: toPercentage
};
;