]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | /**\r |
2 | * Demonstrates using YQL to fetch data from remote sources (in this case loading from the Sencha blog)\r | |
3 | */\r | |
4 | \r | |
5 | Ext.require('Ext.data.JsonP', function() {\r | |
6 | Ext.YQL = {\r | |
7 | useAllPublicTables: true,\r | |
8 | yqlUrl: 'http://query.yahooapis.com/v1/public/yql',\r | |
9 | request: function(cfg) {\r | |
10 | var p = cfg.params || {};\r | |
11 | p.q = cfg.query;\r | |
12 | p.format = 'json';\r | |
13 | if (this.useAllPublicTables) {\r | |
14 | p.env = 'store://datatables.org/alltableswithkeys';\r | |
15 | }\r | |
16 | \r | |
17 | Ext.data.JsonP.request({\r | |
18 | url: this.yqlUrl,\r | |
19 | callbackKey: 'callback',\r | |
20 | params: p,\r | |
21 | callback: cfg.callback,\r | |
22 | scope: cfg.scope || window\r | |
23 | });\r | |
24 | }\r | |
25 | };\r | |
26 | \r | |
27 | Ext.define('KitchenSink.view.YQL', {\r | |
28 | extend: 'Ext.Container',\r | |
29 | config: {\r | |
30 | scrollable: true,\r | |
31 | items: [\r | |
32 | {\r | |
33 | xtype: 'panel',\r | |
34 | id : 'YQL',\r | |
35 | styleHtmlContent: true\r | |
36 | },\r | |
37 | {\r | |
38 | docked: 'top',\r | |
39 | xtype: 'toolbar',\r | |
40 | items: [{\r | |
41 | text: 'Load using YQL',\r | |
42 | handler: function() {\r | |
43 | var panel = Ext.getCmp('YQL'),\r | |
44 | tpl = new Ext.XTemplate([\r | |
45 | '<tpl for="item">',\r | |
46 | '<div class="blog-post">',\r | |
47 | '<h3><a href="{link}" target="_blank">{title}</a></h3>',\r | |
48 | '<p>{description}</p>',\r | |
49 | '</div>',\r | |
50 | '</tpl>'\r | |
51 | ]);\r | |
52 | \r | |
53 | panel.getParent().setMasked({\r | |
54 | xtype: 'loadmask',\r | |
55 | message: 'Loading...'\r | |
56 | });\r | |
57 | \r | |
58 | Ext.YQL.request({\r | |
59 | query: "select * from rss where url='http://feeds.feedburner.com/sencha' limit 5",\r | |
60 | callback: function(success, response) {\r | |
61 | if (success && response.query && response.query.results) {\r | |
62 | panel.setHtml(tpl.apply(response.query.results));\r | |
63 | }\r | |
64 | else {\r | |
65 | Ext.Msg.alert('Error', 'There was an error retrieving the YQL request.', Ext.emptyFn);\r | |
66 | }\r | |
67 | \r | |
68 | panel.getParent().unmask();\r | |
69 | }\r | |
70 | });\r | |
71 | }\r | |
72 | }\r | |
73 | ]\r | |
74 | }]\r | |
75 | }\r | |
76 | });\r | |
77 | });\r |