Upgrade to ExtJS 4.0.0 - Released 04/26/2011
[extjs.git] / examples / form / custom-form.js
1 Ext.Loader.setConfig({enabled: true});
2 Ext.Loader.setPath('Ext.ux', '../ux');
3 Ext.require([
4     'Ext.data.*',
5     'Ext.panel.Panel',
6     'Ext.view.View',
7     'Ext.layout.container.Fit',
8     'Ext.toolbar.Paging',
9     'Ext.ux.form.SearchField'
10 ]);
11
12 Ext.define('Post', {
13     extend: 'Ext.data.Model',
14     idProperty: 'post_id',
15     fields: [
16         {name: 'postId', mapping: 'post_id'},
17         {name: 'title', mapping: 'topic_title'},
18         {name: 'topicId', mapping: 'topic_id'},
19         {name: 'author', mapping: 'author'},
20         {name: 'lastPost', mapping: 'post_time', type: 'date', dateFormat: 'timestamp'},
21         {name: 'excerpt', mapping: 'post_text'}
22     ]
23 });
24
25 Ext.onReady(function(){
26     
27     var forumId = 4;
28
29     var store = Ext.create('Ext.data.Store', {
30         model: 'Post',
31         proxy: {
32             type: 'jsonp',
33             url: 'http://sencha.com/forum/topics-remote.php',
34             extraParams: {
35                 forumId: forumId
36             },
37             reader: {
38                 type: 'json',
39                 root: 'topics',
40                 totalProperty: 'totalCount'
41             }
42         },
43         listeners: {
44             beforeload: function(){
45                 var params = store.getProxy().extraParams;
46                 if (params.query) {
47                     delete params.forumId;
48                 } else {
49                     params.forumId = forumId;
50                 }
51             }
52         }
53     });
54     store.loadPage(1);
55
56     var resultTpl = Ext.create('Ext.XTemplate',
57         '<tpl for=".">',
58         '<div class="search-item">',
59             '<h3><span>{lastPost:this.formatDate}<br />by {author}</span>',
60             '<a href="http://sencha.com/forum/showthread.php?t={topicId}&p={postId}" target="_blank">{title}</a></h3>',
61             '<p>{excerpt}</p>',
62         '</div></tpl>',
63     {
64         formatDate: function(value){
65             return Ext.Date.format(value, 'M j, Y');
66         }
67     });
68
69     var panel = Ext.create('Ext.panel.Panel', {
70         title: 'Forum Search',
71         height: 300,
72         width: 600,
73         renderTo: 'search-panel',
74         id: 'search-results',
75         layout: 'fit',
76         items: {
77             autoScroll: true,
78             xtype: 'dataview',
79             tpl: resultTpl,
80             store: store,
81             itemSelector: 'div.search-item'
82         },
83         dockedItems: [{
84             dock: 'top',
85             xtype: 'toolbar',
86             items: {
87                 width: 400,
88                 fieldLabel: 'Search',
89                 labelWidth: 50,
90                 xtype: 'searchfield',
91                 store: store
92             }
93         }, {
94             dock: 'bottom',
95             xtype: 'pagingtoolbar',
96             store: store,
97             pageSize: 25,
98             displayInfo: true,
99             displayMsg: 'Topics {0} - {1} of {2}',
100             emptyMsg: 'No topics to display'
101         }]
102     });
103 });