]> git.proxmox.com Git - extjs.git/blame - extjs/build/examples/kitchensink/classic/samples/view/charts/combination/DashboardController.js
add extjs 6.0.1 sources
[extjs.git] / extjs / build / examples / kitchensink / classic / samples / view / charts / combination / DashboardController.js
CommitLineData
6527f429
DM
1Ext.define('KitchenSink.view.charts.combination.DashboardController', {\r
2 extend: 'Ext.app.ViewController',\r
3 alias: 'controller.combination-dashboard',\r
4\r
5 form: null,\r
6 selectedRec: null,\r
7\r
8 onColumnRender: function (v) {\r
9 return v + '%';\r
10 },\r
11\r
12 onItemHighlight: function (chart, item) {\r
13 var gridPanel = this.lookupReference('gridPanel');\r
14 gridPanel.getSelectionModel().select(item.record);\r
15 },\r
16\r
17 onBarChartAxisLabelRender: function (axis, label, layoutContext) {\r
18 return Ext.String.ellipsis(label, 15, false);\r
19 },\r
20\r
21 onSelectionChange: function (model, records) {\r
22 var me = this,\r
23 fields;\r
24\r
25 if (records[0]) {\r
26 me.selectedRec = records[0];\r
27 if (!me.form) {\r
28 me.form = me.lookupReference('form').getForm();\r
29 fields = me.form.getFields();\r
30 fields.each(function(field){\r
31 if (field.name != 'name') {\r
32 field.setDisabled(false);\r
33 }\r
34 });\r
35 } else {\r
36 fields = me.form.getFields();\r
37 }\r
38\r
39 // prevent change events from firing\r
40 me.form.suspendEvents();\r
41 me.form.loadRecord(me.selectedRec);\r
42 me.lookupReference('fieldset').setTitle(me.selectedRec.get('name'));\r
43 me.form.resumeEvents();\r
44 me.highlightCompanyPriceBar(me.selectedRec);\r
45 }\r
46 },\r
47\r
48 // Loads fresh records into the radar store\r
49 // based upon the passed company record.\r
50 updateRadarChart: function (rec) {\r
51 var store = this.lookupReference('radarChart').getStore();;\r
52\r
53 store.loadData([\r
54 { 'Name': 'Price', 'Data': rec.get('price') },\r
55 { 'Name': 'Revenue %', 'Data': rec.get('revenue') },\r
56 { 'Name': 'Growth %', 'Data': rec.get('growth') },\r
57 { 'Name': 'Product %', 'Data': rec.get('product') },\r
58 { 'Name': 'Market %', 'Data': rec.get('market') }\r
59 ]);\r
60 },\r
61\r
62 // Performs the highlight of an item in the bar series.\r
63 highlightCompanyPriceBar: function (record) {\r
64 var barChart = this.lookupReference('barChart'),\r
65 store = barChart.getStore(),\r
66 series = barChart.getSeries()[0],\r
67 name = record.get('name');\r
68\r
69 barChart.setHighlightItem(series.getItemByIndex(store.indexOf(record)));\r
70 },\r
71\r
72 onStoreRefresh: function () {\r
73 if (this.selectedRec) {\r
74 this.highlightCompanyPriceBar(this.selectedRec);\r
75 }\r
76 },\r
77\r
78 onFormChange: function (field, newValue, oldValue, listener) {\r
79 var me = this;\r
80\r
81 if (me.selectedRec && me.form) {\r
82 if (newValue > field.maxValue) {\r
83 field.setValue(field.maxValue);\r
84 } else {\r
85 if (me.form.isValid()) {\r
86 me.form.updateRecord(me.selectedRec);\r
87 me.updateRadarChart(me.selectedRec);\r
88 }\r
89 }\r
90 }\r
91 },\r
92\r
93 onAfterRender: function () {\r
94 var barChart = this.lookupReference('barChart'),\r
95 gridPanel = this.lookupReference('gridPanel');\r
96\r
97 var store = Ext.create('KitchenSink.store.Dashboard', {\r
98 listeners: {\r
99 // Add listener to (re)select bar item\r
100 // after sorting or refreshing the dataset.\r
101 refresh: {\r
102 fn: 'onStoreRefresh',\r
103 scope: this,\r
104 // Jump over the chart's refresh listener.\r
105 delay: 1\r
106 }\r
107 }\r
108 });\r
109\r
110 barChart.setStore(store);\r
111 gridPanel.setStore(store);\r
112 }\r
113\r
114});