X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/c930e9176a5a85509c5b0230e2bff5c22a591432..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/examples/grid/paging.js
diff --git a/examples/grid/paging.js b/examples/grid/paging.js
index d4516a5a..7a748a62 100644
--- a/examples/grid/paging.js
+++ b/examples/grid/paging.js
@@ -1,121 +1,142 @@
-/*!
- * Ext JS Library 3.0.0
- * Copyright(c) 2006-2009 Ext JS, LLC
- * licensing@extjs.com
- * http://www.extjs.com/license
- */
-Ext.onReady(function(){
+Ext.Loader.setConfig({enabled: true});
- // create the Data Store
- var store = new Ext.data.JsonStore({
- root: 'topics',
- totalProperty: 'totalCount',
- idProperty: 'threadid',
- remoteSort: true,
+Ext.Loader.setPath('Ext.ux', '../ux/');
+Ext.require([
+ 'Ext.grid.*',
+ 'Ext.data.*',
+ 'Ext.util.*',
+ 'Ext.toolbar.Paging',
+ 'Ext.ux.PreviewPlugin',
+ 'Ext.ModelManager',
+ 'Ext.tip.QuickTipManager'
+]);
+
+
+
+Ext.onReady(function(){
+ Ext.tip.QuickTipManager.init();
+ Ext.define('ForumThread', {
+ extend: 'Ext.data.Model',
fields: [
'title', 'forumtitle', 'forumid', 'author',
{name: 'replycount', type: 'int'},
{name: 'lastpost', mapping: 'lastpost', type: 'date', dateFormat: 'timestamp'},
- 'lastposter', 'excerpt'
+ 'lastposter', 'excerpt', 'threadid'
],
-
- // load using script tags for cross domain, if the data in on the same domain as
- // this page, an HttpProxy would be better
- proxy: new Ext.data.ScriptTagProxy({
- url: 'http://extjs.com/forum/topics-browse-remote.php'
- })
+ idProperty: 'threadid'
});
- store.setDefaultSort('lastpost', 'desc');
+ // create the Data Store
+ var store = Ext.create('Ext.data.Store', {
+ pageSize: 50,
+ model: 'ForumThread',
+ remoteSort: true,
+ proxy: {
+ // load using script tags for cross domain, if the data in on the same domain as
+ // this page, an HttpProxy would be better
+ type: 'jsonp',
+ url: 'http://www.sencha.com/forum/topics-browse-remote.php',
+ reader: {
+ root: 'topics',
+ totalProperty: 'totalCount'
+ },
+ // sends single sort as multi parameter
+ simpleSortMode: true
+ },
+ sorters: [{
+ property: 'lastpost',
+ direction: 'DESC'
+ }]
+ });
// pluggable renders
- function renderTopic(value, p, record){
- return String.format(
- '{0}{1} Forum',
- value, record.data.forumtitle, record.id, record.data.forumid);
+ function renderTopic(value, p, record) {
+ return Ext.String.format(
+ '{0}{1} Forum',
+ value,
+ record.data.forumtitle,
+ record.getId(),
+ record.data.forumid
+ );
}
- function renderLast(value, p, r){
- return String.format('{0}
by {1}', value.dateFormat('M j, Y, g:i a'), r.data['lastposter']);
+
+ function renderLast(value, p, r) {
+ return Ext.String.format('{0}
by {1}', Ext.Date.dateFormat(value, 'M j, Y, g:i a'), r.data['lastposter']);
}
- var grid = new Ext.grid.GridPanel({
- width:700,
- height:500,
- title:'ExtJS.com - Browse Forums',
+
+ var pluginExpanded = true;
+ var grid = Ext.create('Ext.grid.Panel', {
+ width: 700,
+ height: 500,
+ title: 'ExtJS.com - Browse Forums',
store: store,
- trackMouseOver:false,
- disableSelection:true,
+ disableSelection: true,
loadMask: true,
-
+ viewConfig: {
+ id: 'gv',
+ trackOver: false,
+ stripeRows: false,
+ plugins: [{
+ ptype: 'preview',
+ bodyField: 'excerpt',
+ expanded: true,
+ pluginId: 'preview'
+ }]
+ },
// grid columns
columns:[{
- id: 'topic', // id assigned so we can apply custom css (e.g. .x-grid-col-topic b { color:#333 })
- header: "Topic",
+ // id assigned so we can apply custom css (e.g. .x-grid-cell-topic b { color:#333 })
+ // TODO: This poses an issue in subclasses of Grid now because Headers are now Components
+ // therefore the id will be registered in the ComponentManager and conflict. Need a way to
+ // add additional CSS classes to the rendered cells.
+ id: 'topic',
+ text: "Topic",
dataIndex: 'title',
- width: 420,
+ flex: 1,
renderer: renderTopic,
- sortable: true
+ sortable: false
},{
- header: "Author",
+ text: "Author",
dataIndex: 'author',
width: 100,
hidden: true,
sortable: true
},{
- header: "Replies",
+ text: "Replies",
dataIndex: 'replycount',
width: 70,
align: 'right',
sortable: true
},{
id: 'last',
- header: "Last Post",
+ text: "Last Post",
dataIndex: 'lastpost',
width: 150,
renderer: renderLast,
sortable: true
}],
-
- // customize view config
- viewConfig: {
- forceFit:true,
- enableRowBody:true,
- showPreview:true,
- getRowClass : function(record, rowIndex, p, store){
- if(this.showPreview){
- p.body = '
'+record.data.excerpt+'
'; - return 'x-grid3-row-expanded'; - } - return 'x-grid3-row-collapsed'; - } - }, - // paging bar on the bottom - bbar: new Ext.PagingToolbar({ - pageSize: 25, + bbar: Ext.create('Ext.PagingToolbar', { store: store, displayInfo: true, displayMsg: 'Displaying topics {0} - {1} of {2}', emptyMsg: "No topics to display", items:[ '-', { - pressed: true, - enableToggle:true, text: 'Show Preview', - cls: 'x-btn-text-icon details', - toggleHandler: function(btn, pressed){ - var view = grid.getView(); - view.showPreview = pressed; - view.refresh(); + pressed: pluginExpanded, + enableToggle: true, + toggleHandler: function(btn, pressed) { + var preview = Ext.getCmp('gv').getPlugin('preview'); + preview.toggleExpanded(pressed); } }] - }) + }), + renderTo: 'topic-grid' }); - // render it - grid.render('topic-grid'); - // trigger the data store load - store.load({params:{start:0, limit:25}}); + store.loadPage(1); });