X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/d41dc04ad17d1d9125fb2cf72db2b4782dbe3a8c..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/examples/grid/paging.js diff --git a/examples/grid/paging.js b/examples/grid/paging.js index 41b3a799..7a748a62 100644 --- a/examples/grid/paging.js +++ b/examples/grid/paging.js @@ -1,156 +1,142 @@ -/* - * Ext JS Library 2.2.1 - * Copyright(c) 2006-2009, Ext JS, LLC. - * licensing@extjs.com - * - * http://extjs.com/license - */ - -Ext.onReady(function(){ - - // create the Data Store - var store = new Ext.data.JsonStore({ - root: 'topics', - totalProperty: 'totalCount', - idProperty: 'threadid', - remoteSort: true, - - fields: [ - 'title', 'forumtitle', 'forumid', 'author', - {name: 'replycount', type: 'int'}, - {name: 'lastpost', mapping: 'lastpost', type: 'date', dateFormat: 'timestamp'}, - 'lastposter', 'excerpt' - ], - - // 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' - }) - }); - store.setDefaultSort('lastpost', 'desc'); - - - // pluggable renders - function renderTopic(value, p, record){ - return String.format( - '{0}{1} Forum', - value, record.data.forumtitle, record.id, 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']); - } - - var pagingBar = new Ext.PagingToolbar({ - pageSize: 25, - 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(); - } - }] - }); - - var grid = new Ext.grid.GridPanel({ - el:'topic-grid', - width:700, - height:500, - title:'ExtJS.com - Browse Forums', - store: store, - trackMouseOver:false, - disableSelection:true, - loadMask: true, - - // grid columns - columns:[{ - id: 'topic', // id assigned so we can apply custom css (e.g. .x-grid-col-topic b { color:#333 }) - header: "Topic", - dataIndex: 'title', - width: 420, - renderer: renderTopic, - sortable: true - },{ - header: "Author", - dataIndex: 'author', - width: 100, - hidden: true, - sortable: true - },{ - header: "Replies", - dataIndex: 'replycount', - width: 70, - align: 'right', - sortable: true - },{ - id: 'last', - header: "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: pagingBar - }); - - // render it - grid.render(); - - // trigger the data store load - store.load({params:{start:0, limit:25}}); -}); - - - -/** - * @class Ext.ux.SliderTip - * @extends Ext.Tip - * Simple plugin for using an Ext.Tip with a slider to show the slider value - */ -Ext.ux.SliderTip = Ext.extend(Ext.Tip, { - minWidth: 10, - offsets : [0, -10], - init : function(slider){ - slider.on('dragstart', this.onSlide, this); - slider.on('drag', this.onSlide, this); - slider.on('dragend', this.hide, this); - slider.on('destroy', this.destroy, this); - }, - - onSlide : function(slider){ - this.show(); - this.body.update(this.getText(slider)); - this.doAutoWidth(); - this.el.alignTo(slider.thumb, 'b-t?', this.offsets); - }, - - getText : function(slider){ - return slider.getValue(); - } -}); +Ext.Loader.setConfig({enabled: 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', 'threadid' + ], + idProperty: 'threadid' + }); + + // 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 Ext.String.format( + '{0}{1} Forum', + value, + record.data.forumtitle, + record.getId(), + record.data.forumid + ); + } + + 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 pluginExpanded = true; + var grid = Ext.create('Ext.grid.Panel', { + width: 700, + height: 500, + title: 'ExtJS.com - Browse Forums', + store: store, + disableSelection: true, + loadMask: true, + viewConfig: { + id: 'gv', + trackOver: false, + stripeRows: false, + plugins: [{ + ptype: 'preview', + bodyField: 'excerpt', + expanded: true, + pluginId: 'preview' + }] + }, + // grid columns + columns:[{ + // 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', + flex: 1, + renderer: renderTopic, + sortable: false + },{ + text: "Author", + dataIndex: 'author', + width: 100, + hidden: true, + sortable: true + },{ + text: "Replies", + dataIndex: 'replycount', + width: 70, + align: 'right', + sortable: true + },{ + id: 'last', + text: "Last Post", + dataIndex: 'lastpost', + width: 150, + renderer: renderLast, + sortable: true + }], + // paging bar on the bottom + bbar: Ext.create('Ext.PagingToolbar', { + store: store, + displayInfo: true, + displayMsg: 'Displaying topics {0} - {1} of {2}', + emptyMsg: "No topics to display", + items:[ + '-', { + text: 'Show Preview', + pressed: pluginExpanded, + enableToggle: true, + toggleHandler: function(btn, pressed) { + var preview = Ext.getCmp('gv').getPlugin('preview'); + preview.toggleExpanded(pressed); + } + }] + }), + renderTo: 'topic-grid' + }); + + // trigger the data store load + store.loadPage(1); +});