]> git.proxmox.com Git - extjs.git/blame - extjs/packages/charts/src/chart/interactions/RotatePie3D.js
add extjs 6.0.1 sources
[extjs.git] / extjs / packages / charts / src / chart / interactions / RotatePie3D.js
CommitLineData
6527f429
DM
1/**\r
2 * @class Ext.chart.interactions.RotatePie3D\r
3 * @extends Ext.chart.interactions.Rotate\r
4 *\r
5 * A special version of the Rotate interaction used by Pie3D Chart.\r
6 */\r
7Ext.define('Ext.chart.interactions.RotatePie3D', {\r
8\r
9 extend: 'Ext.chart.interactions.Rotate',\r
10\r
11 type: 'rotatePie3d',\r
12\r
13 alias: 'interaction.rotatePie3d',\r
14\r
15 getAngle: function (e) {\r
16 var chart = this.getChart(),\r
17 rtl = chart.getInherited().rtl,\r
18 direction = rtl ? -1 : 1,\r
19 pageXY = e.getXY(),\r
20 xy = chart.element.getXY(),\r
21 rect = chart.getMainRect();\r
22\r
23 return direction * Math.atan2(\r
24 pageXY[1] - xy[1] - rect[3] * 0.5,\r
25 pageXY[0] - xy[0] - rect[2] * 0.5\r
26 );\r
27 },\r
28\r
29 getRadius: function (e) {\r
30 var chart = this.getChart(),\r
31 radius = chart.getRadius(),\r
32 seriesList = chart.getSeries(),\r
33 ln = seriesList.length,\r
34 i = 0,\r
35 series, seriesRadius;\r
36\r
37 // With 3D pie series, series may have a radius that is\r
38 // different from the radius of the chart, because the 'pie3d'\r
39 // series will automatically adjust its radius based on\r
40 // distortion, thickness and other configs.\r
41 // It's not critical to check if the series radius is smaller\r
42 // than the chart radius, since the base Rotate interaction\r
43 // will rotate all series there are anyway.\r
44 // Rotating series individually (i.e. if having multiple concentric\r
45 // pie series) is not possible with neither this nor the base Rotate\r
46 // interaction.\r
47 for (; i < ln; i++) {\r
48 series = seriesList[i];\r
49 if (series.isPie3D) {\r
50 seriesRadius = series.getRadius();\r
51 if (seriesRadius > radius) {\r
52 radius = seriesRadius;\r
53 }\r
54 }\r
55 }\r
56\r
57 return radius;\r
58 }\r
59\r
60});\r