custom-form.js 2.9 KB

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