]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | /**\r |
2 | * Demonstrates how to use Ext.chart.series.Line with a renderer function\r | |
3 | */\r | |
4 | Ext.define('KitchenSink.view.chart.LineWithRenderer', {\r | |
5 | extend: 'Ext.Panel',\r | |
6 | requires: [\r | |
7 | 'Ext.chart.CartesianChart', \r | |
8 | 'Ext.chart.series.Line', \r | |
9 | 'Ext.chart.axis.Numeric', \r | |
10 | 'Ext.draw.modifier.Highlight',\r | |
11 | 'Ext.chart.axis.Time', \r | |
12 | 'Ext.chart.interactions.ItemHighlight'\r | |
13 | ],\r | |
14 | \r | |
15 | layout: 'fit',\r | |
16 | items: [{\r | |
17 | xtype: 'toolbar',\r | |
18 | docked: 'top',\r | |
19 | cls: 'charttoolbar',\r | |
20 | items: [{\r | |
21 | xtype: 'spacer'\r | |
22 | }, {\r | |
23 | iconCls: 'x-fa fa-refresh',\r | |
24 | text: 'Refresh',\r | |
25 | handler: function(a, b, c, d, e) {\r | |
26 | Ext.getStore('Pie').generateData(10);\r | |
27 | }\r | |
28 | }]\r | |
29 | }, {\r | |
30 | xtype: 'cartesian',\r | |
31 | store: 'Pie',\r | |
32 | background: 'white',\r | |
33 | series: [{\r | |
34 | type: 'line',\r | |
35 | xField: 'name',\r | |
36 | yField: 'g1',\r | |
37 | style: {\r | |
38 | strokeStyle: 'powderblue',\r | |
39 | fillStyle: 'aliceblue',\r | |
40 | lineWidth: 4\r | |
41 | },\r | |
42 | marker: {\r | |
43 | type: 'circle',\r | |
44 | fillStyle: 'yellow',\r | |
45 | radius: 10\r | |
46 | },\r | |
47 | renderer: function(sprite, config, rendererData, index) {\r | |
48 | var store = rendererData.store,\r | |
49 | storeItems = store.getData().items,\r | |
50 | currentRecord = storeItems[index],\r | |
51 | previousRecord = (index > 0 ? storeItems[index - 1] : currentRecord),\r | |
52 | current = currentRecord && currentRecord.data['g1'],\r | |
53 | previous = previousRecord && previousRecord.data['g1'],\r | |
54 | changes = {};\r | |
55 | \r | |
56 | switch (config.type) {\r | |
57 | case 'marker':\r | |
58 | if (index == 0) {\r | |
59 | return null; // keep the default style for the first marker\r | |
60 | }\r | |
61 | changes.strokeStyle = (current >= previous ? 'green' : 'red');\r | |
62 | changes.fillStyle = (current >= previous ? 'palegreen' : 'lightpink');\r | |
63 | changes.lineWidth = 2;\r | |
64 | break;\r | |
65 | case 'line':\r | |
66 | changes.strokeStyle = (current >= previous ? 'green' : 'red');\r | |
67 | changes.fillStyle = (current >= previous ? 'palegreen' : 'tomato');\r | |
68 | changes.fillOpacity = .1;\r | |
69 | break;\r | |
70 | }\r | |
71 | return changes;\r | |
72 | }\r | |
73 | \r | |
74 | \r | |
75 | \r | |
76 | }],\r | |
77 | axes: [{\r | |
78 | type: 'numeric',\r | |
79 | position: 'left',\r | |
80 | fields: ['g1'],\r | |
81 | minimum: 0\r | |
82 | }, {\r | |
83 | type: 'category',\r | |
84 | position: 'bottom',\r | |
85 | fields: 'name'\r | |
86 | }]\r | |
87 | }],\r | |
88 | \r | |
89 | initialize: function() {\r | |
90 | this.callParent();\r | |
91 | Ext.getStore('Pie').generateData(10);\r | |
92 | }\r | |
93 | }); |