]> git.proxmox.com Git - extjs.git/blame - extjs/examples/kitchensink/modern/src/view/chart/Plot.js
add extjs 6.0.1 sources
[extjs.git] / extjs / examples / kitchensink / modern / src / view / chart / Plot.js
CommitLineData
6527f429
DM
1(function() {\r
2 /**\r
3 * Demonstrates how to use Ext.chart.PlotChart\r
4 */\r
5 var fn = [\r
6 function(x) {\r
7 return Math.sin(5 * x);\r
8 },\r
9 function(x) {\r
10 return x * x * 2 - 1;\r
11 },\r
12 function(x) {\r
13 return Math.sqrt((1 + x) / 2) * 2 - 1;\r
14 },\r
15 function(x) {\r
16 return x * x * x;\r
17 },\r
18 function(x) {\r
19 return Math.cos(10 * x);\r
20 },\r
21 function(x) {\r
22 return 2 * x;\r
23 },\r
24 function(x) {\r
25 return Math.pow(x, -2);\r
26 },\r
27 function(x) {\r
28 return Math.pow(x, -3);\r
29 },\r
30 function(x) {\r
31 return Math.tan(5 * x);\r
32 }\r
33 ];\r
34\r
35 var ct = 0.02,\r
36 i = 0;\r
37\r
38 var createData = function() {\r
39 var delta = arguments[0],\r
40 l = arguments.length,\r
41 data = [],\r
42 cap = 10000,\r
43 i, j, y,\r
44 rec;\r
45 for (i = -2; i <= 2; i += delta) {\r
46 rec = {\r
47 x: i\r
48 };\r
49 for (j = 1; j < l; ++j) {\r
50 y = arguments[j](i);\r
51 if (y > cap) {\r
52 y = cap;\r
53 }\r
54 rec['y' + j] = y;\r
55 }\r
56 data.push(rec);\r
57 }\r
58 return data;\r
59 };\r
60\r
61 Ext.define('KitchenSink.view.chart.Plot', {\r
62 extend: 'Ext.Panel',\r
63 requires: [\r
64 'Ext.chart.CartesianChart', \r
65 'Ext.chart.interactions.PanZoom',\r
66 'Ext.chart.series.Bar', \r
67 'Ext.chart.axis.Numeric', \r
68 'Ext.chart.axis.Category'\r
69 ],\r
70\r
71 controller: {\r
72 type: 'chart',\r
73 defaultVisibleRange: {\r
74 left: [0, 1],\r
75 bottom: [0, 1]\r
76 }\r
77 },\r
78\r
79 layout: 'fit',\r
80 items: [{\r
81 xtype: 'toolbar',\r
82 docked: 'top',\r
83 cls: 'charttoolbar',\r
84 items: [{\r
85 xtype: 'spacer'\r
86 }, {\r
87 iconCls: 'x-fa fa-refresh',\r
88 text: 'Refresh',\r
89 handler: function() {\r
90 Ext.getStore('PlotStore').setData(createData(ct, fn[++i % fn.length]));\r
91 }\r
92 }, {\r
93 text: 'Reset',\r
94 handler: 'onReset'\r
95 }]\r
96 }, {\r
97 xtype: 'cartesian',\r
98 store: {\r
99 storeId: 'PlotStore',\r
100 fields: ['x', 'y1', 'y2', 'y3', 'y4', 'y5']\r
101 },\r
102 background: 'white',\r
103 theme: "Sky",\r
104 interactions: 'panzoom',\r
105 series: [{\r
106 type: 'line',\r
107 xField: 'x',\r
108 yField: 'y1',\r
109 style: {\r
110 lineWidth: 2,\r
111 strokeStyle: 'rgb(0, 119, 204)'\r
112 }\r
113 }],\r
114 axes: [{\r
115 type: 'numeric',\r
116 position: 'left',\r
117 fields: ['y1'],\r
118 titleMargin: 20,\r
119 title: {\r
120 text: 'f(x)',\r
121 fontSize: 16,\r
122 fillStyle: 'rgb(255, 0, 136)'\r
123 },\r
124 minimum: -4,\r
125 maximum: 4,\r
126 floating: {\r
127 value: 0,\r
128 alongAxis: 1\r
129 },\r
130 grid: true\r
131 }, {\r
132 type: 'numeric',\r
133 position: 'bottom',\r
134 fields: ['x'],\r
135 titleMargin: 6,\r
136 title: {\r
137 text: 'x',\r
138 fontSize: 16,\r
139 fillStyle: 'rgb(255, 0, 136)'\r
140 },\r
141 floating: {\r
142 value: 0,\r
143 alongAxis: 0\r
144 },\r
145 grid: true\r
146 }]\r
147 }],\r
148\r
149 initialize: function() {\r
150 this.callParent();\r
151 Ext.getStore('PlotStore').setData(createData(ct, fn[0]));\r
152 var toolbar = Ext.ComponentQuery.query('toolbar', this)[0],\r
153 interaction = Ext.ComponentQuery.query('interaction', this)[0];\r
154 if (toolbar && interaction && !interaction.isMultiTouch()) {\r
155 toolbar.add(interaction.getModeToggleButton());\r
156 }\r
157 }\r
158 });\r
159})();