angular-sunburst-radar-chart
Version:
A Sunburst Radar chart with SVG,No Dependencies
32 lines • 5.58 kB
JavaScript
export function polarToCartesian(centerX, centerY, radius, angleInDegrees) {
var adjustedViewPortAngle = (angleInDegrees - 90);
var angleInRadians = adjustedViewPortAngle * Math.PI / 180.0;
return {
x: centerX + (radius * Math.cos(angleInRadians)),
y: centerY + (radius * Math.sin(angleInRadians))
};
}
export function getLargeArcFlag(startAngle, endAngle) {
return (endAngle - startAngle) <= 180 ? '0' : '1';
}
export function distanceBetweenTwoPoints(centerX, centerY, radius, startAngle, endAngle) {
var startPoint = polarToCartesian(centerX, centerY, radius, startAngle);
var endPoint = polarToCartesian(centerX, centerY, radius, endAngle);
var distFromStartToEnd = Math.sqrt(Math.pow((startPoint.x - endPoint.x), 2) + Math.pow((startPoint.y - endPoint.y), 2));
return Math.abs(distFromStartToEnd);
}
export function calculateAngleRadian(_a) {
var x = _a.x, y = _a.y, centerX = _a.centerX, centerY = _a.centerY, maxRad = _a.maxRad;
var angleInRadian = Math.atan2(x - centerY, y - centerX);
angleInRadian = adjustAngleRadianDifference(angleInRadian, maxRad);
return angleInRadian;
}
export function adjustAngleRadianDifference(input, maxRad) {
var angleInRadian = input;
angleInRadian += maxRad / 4;
if (angleInRadian < 0) {
angleInRadian += maxRad;
}
return angleInRadian;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ25vbWV0cnkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN1bmJ1cnN0LXJhZGFyLWNoYXJ0LyIsInNvdXJjZXMiOlsibGliL3V0aWxzL3RyaWdub21ldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjO0lBRXZFLElBQU0scUJBQXFCLEdBQUcsQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEQsSUFBTSxjQUFjLEdBQUcscUJBQXFCLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFL0QsT0FBTztRQUNMLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoRCxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDakQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFVBQVUsRUFBRSxRQUFRO0lBR2xELE9BQU8sQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNwRCxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRO0lBRXJGLElBQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzFFLElBQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBR3RFLElBQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUgsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFHdEMsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxFQUFnQztRQUEvQixRQUFDLEVBQUUsUUFBQyxFQUFFLG9CQUFPLEVBQUUsb0JBQU8sRUFBRSxrQkFBTTtJQUVsRSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBRXpELGFBQWEsR0FBRywyQkFBMkIsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFbkUsT0FBTyxhQUFhLENBQUM7QUFFdkIsQ0FBQztBQUVELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsTUFBTTtJQUN2RCxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDMUIsYUFBYSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFNUIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFO1FBQ3JCLGFBQWEsSUFBSSxNQUFNLENBQUM7S0FFekI7SUFDRCxPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHBvbGFyVG9DYXJ0ZXNpYW4oY2VudGVyWCwgY2VudGVyWSwgcmFkaXVzLCBhbmdsZUluRGVncmVlcykge1xyXG5cclxuICBjb25zdCBhZGp1c3RlZFZpZXdQb3J0QW5nbGUgPSAoYW5nbGVJbkRlZ3JlZXMgLSA5MCk7XHJcbiAgY29uc3QgYW5nbGVJblJhZGlhbnMgPSBhZGp1c3RlZFZpZXdQb3J0QW5nbGUgKiBNYXRoLlBJIC8gMTgwLjA7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICB4OiBjZW50ZXJYICsgKHJhZGl1cyAqIE1hdGguY29zKGFuZ2xlSW5SYWRpYW5zKSksXHJcbiAgICB5OiBjZW50ZXJZICsgKHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlSW5SYWRpYW5zKSlcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGFyZ2VBcmNGbGFnKHN0YXJ0QW5nbGUsIGVuZEFuZ2xlKSB7XHJcblxyXG5cclxuICByZXR1cm4gKGVuZEFuZ2xlIC0gc3RhcnRBbmdsZSkgPD0gMTgwID8gJzAnIDogJzEnO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VCZXR3ZWVuVHdvUG9pbnRzKGNlbnRlclgsIGNlbnRlclksIHJhZGl1cywgc3RhcnRBbmdsZSwgZW5kQW5nbGUpIHtcclxuXHJcbiAgY29uc3Qgc3RhcnRQb2ludCA9IHBvbGFyVG9DYXJ0ZXNpYW4oY2VudGVyWCwgY2VudGVyWSwgcmFkaXVzLCBzdGFydEFuZ2xlKTtcclxuICBjb25zdCBlbmRQb2ludCA9IHBvbGFyVG9DYXJ0ZXNpYW4oY2VudGVyWCwgY2VudGVyWSwgcmFkaXVzLCBlbmRBbmdsZSk7XHJcblxyXG5cclxuICBjb25zdCBkaXN0RnJvbVN0YXJ0VG9FbmQgPSBNYXRoLnNxcnQoTWF0aC5wb3coKHN0YXJ0UG9pbnQueCAtIGVuZFBvaW50LngpLCAyKSArIE1hdGgucG93KChzdGFydFBvaW50LnkgLSBlbmRQb2ludC55KSwgMikpO1xyXG4gIHJldHVybiBNYXRoLmFicyhkaXN0RnJvbVN0YXJ0VG9FbmQpO1xyXG5cclxuXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVBbmdsZVJhZGlhbih7eCwgeSwgY2VudGVyWCwgY2VudGVyWSwgbWF4UmFkfSkge1xyXG5cclxuICBsZXQgYW5nbGVJblJhZGlhbiA9IE1hdGguYXRhbjIoeCAtIGNlbnRlclksIHkgLSBjZW50ZXJYKTtcclxuXHJcbiAgYW5nbGVJblJhZGlhbiA9IGFkanVzdEFuZ2xlUmFkaWFuRGlmZmVyZW5jZShhbmdsZUluUmFkaWFuLCBtYXhSYWQpO1xyXG5cclxuICByZXR1cm4gYW5nbGVJblJhZGlhbjtcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGp1c3RBbmdsZVJhZGlhbkRpZmZlcmVuY2UoaW5wdXQsIG1heFJhZCkge1xyXG4gIGxldCBhbmdsZUluUmFkaWFuID0gaW5wdXQ7XHJcbiAgYW5nbGVJblJhZGlhbiArPSBtYXhSYWQgLyA0O1xyXG5cclxuICBpZiAoYW5nbGVJblJhZGlhbiA8IDApIHtcclxuICAgIGFuZ2xlSW5SYWRpYW4gKz0gbWF4UmFkO1xyXG5cclxuICB9XHJcbiAgcmV0dXJuIGFuZ2xlSW5SYWRpYW47XHJcbn1cclxuXHJcblxyXG4iXX0=