UNPKG

bytev-charts-beta1.0

Version:

测试版-1.0,版本号为小版本; 基于echarts和JavaScript及ES6封装的一个可以直接调用的图表组件库,内置主题设计,简单快捷,且支持用户自定义配置; npm 安装方式: npm install bytev-charts 若启动提示还需额外install插件,则运行 npm install @babel/runtime-corejs2 即可;

322 lines (271 loc) 10.3 kB
import _classCallCheck from "@babel/runtime-corejs2/helpers/classCallCheck"; import _createClass from "@babel/runtime-corejs2/helpers/createClass"; import _parseInt from "@babel/runtime-corejs2/core-js/parse-int"; import _Object$assign from "@babel/runtime-corejs2/core-js/object/assign"; import _parseFloat from "@babel/runtime-corejs2/core-js/parse-float"; import "core-js/modules/es.regexp.exec.js"; import "core-js/modules/es.string.replace.js"; import "core-js/modules/es.date.to-string.js"; import "core-js/modules/es.object.to-string.js"; import "core-js/modules/es.regexp.to-string.js"; import "core-js/modules/es.array.concat.js"; import "core-js/modules/es.array.slice.js"; import "core-js/modules/es.number.to-fixed.js"; import "core-js/modules/es.array.join.js"; import "core-js/modules/es.string.split.js"; import "core-js/modules/es.array.last-index-of.js"; import "core-js/modules/es.array.for-each.js"; import "core-js/modules/web.dom-collections.for-each.js"; import "core-js/modules/es.number.constructor.js"; var Util = /*#__PURE__*/function () { function Util() {// Util.addMathProperty() _classCallCheck(this, Util); } _createClass(Util, null, [{ key: "guid", value: function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : r & 0x3 | 0x8; return v.toString(16); }); } //十六进制颜色值转换为rgba }, { key: "colorRgba", value: function colorRgba(sHex) { // 十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/; /* 16进制颜色转为RGB格式 */ var sColor = sHex.toLowerCase(); var alpha = 1; if (sColor && reg.test(sColor)) { if (sColor.length === 4 || sColor.length === 5) { var sColorNew = '#'; for (var i = 1; i < sColor.length; i += 1) { sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)); } sColor = sColorNew; } // 如果有透明度再执行 if (sColor.length === 9) { alpha = (_parseInt('0x' + sColor.slice(7, 9)) / 255).toFixed(2); } // 处理六位的颜色值 var sColorChange = []; for (var _i = 1; _i < 7; _i += 2) { sColorChange.push(_parseInt('0x' + sColor.slice(_i, _i + 2))); } return 'rgba(' + sColorChange.join(',') + ',' + alpha + ')'; } else { return sColor; } } //十六进制颜色值转换为rgba数组 }, { key: "colorRgbaArr", value: function colorRgbaArr(sHex) { return this.colorRgba(sHex).replace(/rgba/g, '').replace(/rgb/g, '').replace('(', '').replace(')', '').split(','); } //获取后缀名 }, { key: "getSuffix", value: function getSuffix(filename) { if (filename) { var index = filename.lastIndexOf("."); if (index != -1) { return filename.substring(index + 1); } } } /* * 为Math添加方法 * JS中计算出现无限小数位问题,浮点数计算精度的问题,四则运算封装 * */ }, { key: "addMathProperty", value: function addMathProperty() { _Object$assign(Math, { /* * 加法 - 解决JS中计算出现无限小数位问题,浮点数计算精度的问题 * 方法中主要的部分是乘数和最后return的算法,如果不用封装的话,可以自己写一个比较大的数字,比如100000000,先把两个加数分别乘以这个数,这样也可以计算正确,除非你知道你的数字范围,否则不建议这样做。 * */ add: function add(num1, num2) { /* if (parseFloat(num1).toString() == "NaN" || parseFloat(num2).toString() == "NaN") return false; let r1 = 0, r2 = 0; try { r1 = num1.toString().split(".")[1].length; } catch (e) { } try { r2 = num2.toString().split(".")[1].length; } catch (e) { } let n = Math.pow(10, Math.max(r1, r2)); return (num1 * n + num2 * n) / n; */ var arr = [num1 || 0, num2 || 0]; var fieldArr = []; var m; for (var i = 0; i < arr.length; i++) { var field = void 0; try { field = arr[i].toString().split('.')[1].length; } catch (e) { field = 0; } fieldArr.push(field); } m = Math.pow(10, Math.max.apply(Math, fieldArr)); var add = 0; arr.forEach(function (item) { add = add + item * m; }); var sum = Math.round(add) / m; return sum; }, /* * 减法 - 解决JS中计算出现无限小数位问题,浮点数计算精度的问题 * 减法运算的原理和加法一样,都是先乘以较大的数字,不多介绍! * */ sub: function sub(num1, num2) { if (_parseFloat(num1).toString() == "NaN" || _parseFloat(num2).toString() == "NaN") return; var r1 = 0, r2 = 0; try { r1 = num1.toString().split(".")[1].length; } catch (e) {} try { r2 = num2.toString().split(".")[1].length; } catch (e) {} var m = Math.pow(10, Math.max(r1, r2)); return (num1 * m - num2 * m) / m; }, /* * 乘法 - 解决JS中计算出现无限小数位问题,浮点数计算精度的问题 * 乘法的计算主要是将数字转换为整数相乘再除以10的N次幂 * */ mul: function mul(num1, num2) { if (_parseFloat(num1).toString() == "NaN" || _parseFloat(num2).toString() == "NaN") return; var m = 0, s1 = num1.toString(), s2 = num2.toString(); try { m += s1.split(".")[1].length; } catch (e) {} try { m += s2.split(".")[1].length; } catch (e) {} return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m); }, /* * 除法 - 解决JS中计算出现无限小数位问题,浮点数计算精度的问题 * 乘法的计算主要是将数字转换为整数相乘再除以10的N次幂 * */ div: function div(num1, num2) { if (_parseFloat(num1).toString() == "NaN" || _parseFloat(num2).toString() == "NaN") return; var t1 = 0, t2 = 0, r1, r2; try { t1 = num1.toString().split(".")[1].length; } catch (e) {} try { t2 = num2.toString().split(".")[1].length; } catch (e) {} r1 = Number(num1.toString().replace(".", "")); r2 = Number(num2.toString().replace(".", "")); return r1 / r2 * Math.pow(10, t2 - t1); } }); } /** * 将数字取整为指定10的倍数,并支持向上或者向下取整, 且支持是否返回原包含的小数位 * @param {Number} num 需要取整的值 * @param {Number} prec 需要用0占位的数量(默认除第一位外其余全部使用0占位) * @param {Boolean} ceil 是否向上取整 * @param {Boolean} float 是否包含原小数位 * // formatInt(2345, 2, true) -> 2400 // formatInt(2345, 2. false) -> 2300 // formatInt(2345, 3, true) -> 3000 // formatInt(2345, 3, false) -> 2000 */ // static formatInt (num, prec = 2, ceil = false, float = false) { }, { key: "number2TenMultiples", value: function number2TenMultiples(num) { var prec = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var ceil = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var _float = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; if (!prec) { prec = String(_parseInt(num)).length - 1; } var fot = String(num).split('.'); fot = fot[1] != undefined ? fot[1] : ''; var len = String(_parseInt(num)).length; if (len <= prec) { return num; } var mult = Math.pow(10, prec); if (ceil) { return Number(Math.ceil(num / mult) * mult + f()); } else { return Number(Math.floor(num / mult) * mult + f()); } function f() { if (_float) { var s = '.'; for (var i = 0; i < fot.length; i++) { s += '0'; } return s; } return ''; } } /* * 对象深度合并,将后面的对象深度合并至前面的对象中 * */ // static deepAssign(target, source, source2, source3, source4, source5){ // if(!source){ // console.log("The function deepAssign need at least 1 source") // return target // } // let arr = [source5, source4, source3, source2, source, target] // xx() // return target // function xx(){ // if(arr.length>1){ // assign(arr[0], arr[1]) // arr. // xx() // } // } // // function assign(a, b){ // for(let k in b){ // if(a[k] instanceof Object){ // assign(a[k], b[k]) // }else{ // Object.assign(a, b) // } // } // } // } /* * 对象深度合并,将后面的对象深度合并至前面的对象中 * */ }, { key: "deepAssign", value: function deepAssign(target, source) { return deepObjectMerge(target, source); function deepObjectMerge(FirstOBJ, SecondOBJ) { // 深度合并对象 for (var key in SecondOBJ) { FirstOBJ[key] = FirstOBJ[key] && FirstOBJ[key].toString() === "[object Object]" ? deepObjectMerge(FirstOBJ[key], SecondOBJ[key]) : FirstOBJ[key] = SecondOBJ[key]; } return FirstOBJ; } } }]); return Util; }(); export { Util as default };