UNPKG

angular-sunburst-radar-chart

Version:
44 lines 6.3 kB
import { getCurrentPointFromEvent } from './utils'; import { calculateAngleRadian } from './trignometry'; export function createSvgHandlerWithSelector(selectorName, center) { const svg = document.querySelector(selectorName); const pt = svg.createSVGPoint(); const maxRad = 6.283185307179586; const maxDeg = 360; return { initPoint: 0, cursorPoint(evt) { const { x, y } = getCurrentPointFromEvent(evt); pt.x = x; pt.y = y; return pt.matrixTransform(svg.getScreenCTM().inverse()); }, startDrag(evt, initialPoint) { this.previousPoint = this.angleFromCenter(evt); this.initPoint = initialPoint; }, updateInitPointFromCurrentPoint(currentPoint) { const difference = Math.abs(this.previousPoint - currentPoint); if (currentPoint < this.previousPoint) { this.initPoint += difference; } else { this.initPoint -= difference; } }, getRotationAngle(evt) { const currentPoint = this.angleFromCenter(evt); this.updateInitPointFromCurrentPoint(currentPoint); this.previousPoint = currentPoint; return this.initPoint; }, angleFromCenter(evt) { const [centerX, centerY] = [center.x, center.y]; const { x, y } = this.cursorPoint(evt); const angleInRadian = calculateAngleRadian({ x, y, centerX, centerY, maxRad }); const currentDegree = maxDeg * angleInRadian / (2 * Math.PI); return currentDegree; } }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLXJvdGF0b3IuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLXN1bmJ1cnN0LXJhZGFyLWNoYXJ0LyIsInNvdXJjZXMiOlsibGliL3V0aWxzL3N2Zy1yb3RhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUNqRCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLFlBQVksRUFBRSxNQUFNO0lBQy9ELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakQsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBR2hDLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDO0lBQ2pDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUduQixPQUFPO1FBRUwsU0FBUyxFQUFFLENBQUM7UUFHWixXQUFXLENBQUMsR0FBRztZQUNiLE1BQU0sRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFDLEdBQUcsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0MsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDVCxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNULE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUUxRCxDQUFDO1FBQ0QsU0FBUyxDQUFDLEdBQUcsRUFBRSxZQUFZO1lBQ3pCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUNoQyxDQUFDO1FBQ0QsK0JBQStCLENBQUMsWUFBWTtZQUUxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDLENBQUM7WUFDL0QsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDckMsSUFBSSxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUM7YUFDOUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFNBQVMsSUFBSSxVQUFVLENBQUM7YUFDOUI7UUFFSCxDQUFDO1FBQ0QsZ0JBQWdCLENBQUMsR0FBRztZQUNsQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRS9DLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztZQUVsQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFFeEIsQ0FBQztRQUVELGVBQWUsQ0FBQyxHQUFHO1lBRWpCLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRCxNQUFNLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFckMsTUFBTSxhQUFhLEdBQUcsb0JBQW9CLENBQUMsRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztZQUM3RSxNQUFNLGFBQWEsR0FBRyxNQUFNLEdBQUcsYUFBYSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3RCxPQUFPLGFBQWEsQ0FBQztRQUV2QixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2dldEN1cnJlbnRQb2ludEZyb21FdmVudH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7Y2FsY3VsYXRlQW5nbGVSYWRpYW59IGZyb20gJy4vdHJpZ25vbWV0cnknO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN2Z0hhbmRsZXJXaXRoU2VsZWN0b3Ioc2VsZWN0b3JOYW1lLCBjZW50ZXIpIHtcclxuICBjb25zdCBzdmcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yTmFtZSk7XHJcbiAgY29uc3QgcHQgPSBzdmcuY3JlYXRlU1ZHUG9pbnQoKTtcclxuXHJcblxyXG4gIGNvbnN0IG1heFJhZCA9IDYuMjgzMTg1MzA3MTc5NTg2O1xyXG4gIGNvbnN0IG1heERlZyA9IDM2MDtcclxuXHJcblxyXG4gIHJldHVybiB7XHJcblxyXG4gICAgaW5pdFBvaW50OiAwLFxyXG5cclxuXHJcbiAgICBjdXJzb3JQb2ludChldnQpIHtcclxuICAgICAgY29uc3Qge3gsIHl9ID0gZ2V0Q3VycmVudFBvaW50RnJvbUV2ZW50KGV2dCk7XHJcbiAgICAgIHB0LnggPSB4O1xyXG4gICAgICBwdC55ID0geTtcclxuICAgICAgcmV0dXJuIHB0Lm1hdHJpeFRyYW5zZm9ybShzdmcuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpKTtcclxuXHJcbiAgICB9LFxyXG4gICAgc3RhcnREcmFnKGV2dCwgaW5pdGlhbFBvaW50KSB7XHJcbiAgICAgIHRoaXMucHJldmlvdXNQb2ludCA9IHRoaXMuYW5nbGVGcm9tQ2VudGVyKGV2dCk7XHJcbiAgICAgIHRoaXMuaW5pdFBvaW50ID0gaW5pdGlhbFBvaW50O1xyXG4gICAgfSxcclxuICAgIHVwZGF0ZUluaXRQb2ludEZyb21DdXJyZW50UG9pbnQoY3VycmVudFBvaW50KSB7XHJcblxyXG4gICAgICBjb25zdCBkaWZmZXJlbmNlID0gTWF0aC5hYnModGhpcy5wcmV2aW91c1BvaW50IC0gY3VycmVudFBvaW50KTtcclxuICAgICAgaWYgKGN1cnJlbnRQb2ludCA8IHRoaXMucHJldmlvdXNQb2ludCkge1xyXG4gICAgICAgIHRoaXMuaW5pdFBvaW50ICs9IGRpZmZlcmVuY2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pbml0UG9pbnQgLT0gZGlmZmVyZW5jZTtcclxuICAgICAgfVxyXG5cclxuICAgIH0sXHJcbiAgICBnZXRSb3RhdGlvbkFuZ2xlKGV2dCkge1xyXG4gICAgICBjb25zdCBjdXJyZW50UG9pbnQgPSB0aGlzLmFuZ2xlRnJvbUNlbnRlcihldnQpO1xyXG5cclxuICAgICAgdGhpcy51cGRhdGVJbml0UG9pbnRGcm9tQ3VycmVudFBvaW50KGN1cnJlbnRQb2ludCk7XHJcbiAgICAgIHRoaXMucHJldmlvdXNQb2ludCA9IGN1cnJlbnRQb2ludDtcclxuXHJcbiAgICAgIHJldHVybiB0aGlzLmluaXRQb2ludDtcclxuXHJcbiAgICB9LFxyXG5cclxuICAgIGFuZ2xlRnJvbUNlbnRlcihldnQpIHtcclxuXHJcbiAgICAgIGNvbnN0IFtjZW50ZXJYLCBjZW50ZXJZXSA9IFtjZW50ZXIueCwgY2VudGVyLnldO1xyXG4gICAgICBjb25zdCB7eCwgeX0gPSB0aGlzLmN1cnNvclBvaW50KGV2dCk7XHJcblxyXG4gICAgICBjb25zdCBhbmdsZUluUmFkaWFuID0gY2FsY3VsYXRlQW5nbGVSYWRpYW4oe3gsIHksIGNlbnRlclgsIGNlbnRlclksIG1heFJhZH0pO1xyXG4gICAgICBjb25zdCBjdXJyZW50RGVncmVlID0gbWF4RGVnICogYW5nbGVJblJhZGlhbiAvICgyICogTWF0aC5QSSk7XHJcbiAgICAgIHJldHVybiBjdXJyZW50RGVncmVlO1xyXG5cclxuICAgIH1cclxuICB9O1xyXG59XHJcbiJdfQ==