commit extjs-2.2.1
[extjs.git] / source / data / JsonStore.js
1 /*\r
2  * Ext JS Library 2.2.1\r
3  * Copyright(c) 2006-2009, Ext JS, LLC.\r
4  * licensing@extjs.com\r
5  * \r
6  * http://extjs.com/license\r
7  */\r
8 \r
9 /**\r
10  * @class Ext.data.JsonStore\r
11  * @extends Ext.data.Store\r
12  * Small helper class to make creating Stores for remotely-loaded JSON data easier. JsonStore is pre-configured\r
13  * with a built-in {@link Ext.data.HttpProxy} and {@link Ext.data.JsonReader}.  If you require some other proxy/reader\r
14  * combination then you'll have to create a basic {@link Ext.data.Store} configured as needed.<br/>\r
15 <pre><code>\r
16 var store = new Ext.data.JsonStore({\r
17     url: 'get-images.php',\r
18     root: 'images',\r
19     fields: ['name', 'url', {name:'size', type: 'float'}, {name:'lastmod', type:'date'}]\r
20 });\r
21 </code></pre>\r
22  * This would consume a returned object of the form:\r
23 <pre><code>\r
24 {\r
25     images: [\r
26         {name: 'Image one', url:'/GetImage.php?id=1', size:46.5, lastmod: new Date(2007, 10, 29)},\r
27         {name: 'Image Two', url:'/GetImage.php?id=2', size:43.2, lastmod: new Date(2007, 10, 30)}\r
28     ]\r
29 }\r
30 </code></pre>\r
31  * An object literal of this form could also be used as the {@link #data} config option.\r
32  * <b>Note: Although they are not listed, this class inherits all of the config options of Store,\r
33  * JsonReader.</b>\r
34  * @cfg {String} url  The URL from which to load data through an HttpProxy. Either this\r
35  * option, or the {@link #data} option must be specified.\r
36  * @cfg {Object} data  A data object readable by this object's JsonReader. Either this\r
37  * option, or the {@link #url} option must be specified.\r
38  * @cfg {Array} fields  Either an Array of field definition objects as passed to\r
39  * {@link Ext.data.Record#create}, or a {@link Ext.data.Record Record} constructor created using {@link Ext.data.Record#create}.<br>\r
40  * <p>This config is used to create the <tt>recordType</tt> parameter to the {@link Ext.data.JsonReader#JsonReader JsonReader}\r
41  * constructor that is implicitly called, and creates the {@link Ext.data.Record Record definition} used by the Store.\r
42  * @constructor\r
43  * @param {Object} config\r
44  */\r
45 Ext.data.JsonStore = function(c){\r
46     /**\r
47      * @cfg {Ext.data.DataReader} reader @hide\r
48      */\r
49     /**\r
50      * @cfg {Ext.data.DataProxy} proxy @hide\r
51      */\r
52     Ext.data.JsonStore.superclass.constructor.call(this, Ext.apply(c, {\r
53         proxy: c.proxy || (!c.data ? new Ext.data.HttpProxy({url: c.url}) : undefined),\r
54         reader: new Ext.data.JsonReader(c, c.fields)\r
55     }));\r
56 };\r
57 Ext.extend(Ext.data.JsonStore, Ext.data.Store);