You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.9 KiB
JavaScript
130 lines
3.9 KiB
JavaScript
4 months ago
|
"use strict";
|
||
|
|
||
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.filterNonNumber = filterNonNumber;
|
||
|
exports.deepMerge = deepMerge;
|
||
|
exports.mulAdd = mulAdd;
|
||
|
exports.mergeSameStackData = mergeSameStackData;
|
||
|
exports.getTwoPointDistance = getTwoPointDistance;
|
||
|
exports.getLinearGradientColor = getLinearGradientColor;
|
||
|
exports.getPolylineLength = getPolylineLength;
|
||
|
exports.getPointToLineDistance = getPointToLineDistance;
|
||
|
exports.initNeedSeries = initNeedSeries;
|
||
|
exports.radianToAngle = radianToAngle;
|
||
|
|
||
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
||
|
|
||
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
||
|
|
||
|
var _util = require("@jiaminghi/c-render/lib/plugin/util");
|
||
|
|
||
|
function filterNonNumber(array) {
|
||
|
return array.filter(function (n) {
|
||
|
return typeof n === 'number';
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function deepMerge(target, merged) {
|
||
|
for (var key in merged) {
|
||
|
if (target[key] && (0, _typeof2["default"])(target[key]) === 'object') {
|
||
|
deepMerge(target[key], merged[key]);
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
if ((0, _typeof2["default"])(merged[key]) === 'object') {
|
||
|
target[key] = (0, _util.deepClone)(merged[key], true);
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
target[key] = merged[key];
|
||
|
}
|
||
|
|
||
|
return target;
|
||
|
}
|
||
|
|
||
|
function mulAdd(nums) {
|
||
|
nums = filterNonNumber(nums);
|
||
|
return nums.reduce(function (all, num) {
|
||
|
return all + num;
|
||
|
}, 0);
|
||
|
}
|
||
|
|
||
|
function mergeSameStackData(item, series) {
|
||
|
var stack = item.stack;
|
||
|
if (!stack) return (0, _toConsumableArray2["default"])(item.data);
|
||
|
var stacks = series.filter(function (_ref) {
|
||
|
var s = _ref.stack;
|
||
|
return s === stack;
|
||
|
});
|
||
|
var index = stacks.findIndex(function (_ref2) {
|
||
|
var d = _ref2.data;
|
||
|
return d === item.data;
|
||
|
});
|
||
|
var datas = stacks.splice(0, index + 1).map(function (_ref3) {
|
||
|
var data = _ref3.data;
|
||
|
return data;
|
||
|
});
|
||
|
var dataLength = datas[0].length;
|
||
|
return new Array(dataLength).fill(0).map(function (foo, i) {
|
||
|
return mulAdd(datas.map(function (d) {
|
||
|
return d[i];
|
||
|
}));
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function getTwoPointDistance(pointOne, pointTwo) {
|
||
|
var minusX = Math.abs(pointOne[0] - pointTwo[0]);
|
||
|
var minusY = Math.abs(pointOne[1] - pointTwo[1]);
|
||
|
return Math.sqrt(minusX * minusX + minusY * minusY);
|
||
|
}
|
||
|
|
||
|
function getLinearGradientColor(ctx, begin, end, color) {
|
||
|
if (!ctx || !begin || !end || !color.length) return;
|
||
|
var colors = color;
|
||
|
typeof colors === 'string' && (colors = [color, color]);
|
||
|
var linearGradientColor = ctx.createLinearGradient.apply(ctx, (0, _toConsumableArray2["default"])(begin).concat((0, _toConsumableArray2["default"])(end)));
|
||
|
var colorGap = 1 / (colors.length - 1);
|
||
|
colors.forEach(function (c, i) {
|
||
|
return linearGradientColor.addColorStop(colorGap * i, c);
|
||
|
});
|
||
|
return linearGradientColor;
|
||
|
}
|
||
|
|
||
|
function getPolylineLength(points) {
|
||
|
var lineSegments = new Array(points.length - 1).fill(0).map(function (foo, i) {
|
||
|
return [points[i], points[i + 1]];
|
||
|
});
|
||
|
var lengths = lineSegments.map(function (item) {
|
||
|
return getTwoPointDistance.apply(void 0, (0, _toConsumableArray2["default"])(item));
|
||
|
});
|
||
|
return mulAdd(lengths);
|
||
|
}
|
||
|
|
||
|
function getPointToLineDistance(point, linePointOne, linePointTwo) {
|
||
|
var a = getTwoPointDistance(point, linePointOne);
|
||
|
var b = getTwoPointDistance(point, linePointTwo);
|
||
|
var c = getTwoPointDistance(linePointOne, linePointTwo);
|
||
|
return 0.5 * Math.sqrt((a + b + c) * (a + b - c) * (a + c - b) * (b + c - a)) / c;
|
||
|
}
|
||
|
|
||
|
function initNeedSeries(series, config, type) {
|
||
|
series = series.filter(function (_ref4) {
|
||
|
var st = _ref4.type;
|
||
|
return st === type;
|
||
|
});
|
||
|
series = series.map(function (item) {
|
||
|
return deepMerge((0, _util.deepClone)(config, true), item);
|
||
|
});
|
||
|
return series.filter(function (_ref5) {
|
||
|
var show = _ref5.show;
|
||
|
return show;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function radianToAngle(radian) {
|
||
|
return radian / Math.PI * 180;
|
||
|
}
|