list-view.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. Ext.require([
  2. 'Ext.grid.*',
  3. 'Ext.data.*',
  4. 'Ext.panel.*'
  5. ]);
  6. Ext.onReady(function(){
  7. Ext.define('ImageModel', {
  8. extend: 'Ext.data.Model',
  9. fields: ['name', 'url', {name:'size', type: 'float'}, {name:'lastmod', type:'date', dateFormat:'timestamp'}]
  10. });
  11. var store = Ext.create('Ext.data.JsonStore', {
  12. model: 'ImageModel',
  13. proxy: {
  14. type: 'ajax',
  15. url: 'get-images.php',
  16. reader: {
  17. type: 'json',
  18. root: 'images'
  19. }
  20. }
  21. });
  22. store.load();
  23. var listView = Ext.create('Ext.grid.Panel', {
  24. width:425,
  25. height:250,
  26. collapsible:true,
  27. title:'Simple ListView <i>(0 items selected)</i>',
  28. renderTo: Ext.getBody(),
  29. store: store,
  30. multiSelect: true,
  31. viewConfig: {
  32. emptyText: 'No images to display'
  33. },
  34. columns: [{
  35. text: 'File',
  36. flex: 50,
  37. dataIndex: 'name'
  38. },{
  39. text: 'Last Modified',
  40. xtype: 'datecolumn',
  41. format: 'm-d h:i a',
  42. flex: 35,
  43. dataIndex: 'lastmod'
  44. },{
  45. text: 'Size',
  46. dataIndex: 'size',
  47. tpl: '{size:fileSize}',
  48. align: 'right',
  49. flex: 15,
  50. cls: 'listview-filesize'
  51. }]
  52. });
  53. // little bit of feedback
  54. listView.on('selectionchange', function(view, nodes){
  55. var l = nodes.length;
  56. var s = l != 1 ? 's' : '';
  57. listView.setTitle('Simple ListView <i>('+l+' item'+s+' selected)</i>');
  58. });
  59. });