data-view.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. Ext.Loader.setConfig({enabled: true});
  2. Ext.Loader.setPath('Ext.ux.DataView', '../ux/DataView/');
  3. Ext.require([
  4. 'Ext.data.*',
  5. 'Ext.util.*',
  6. 'Ext.view.View',
  7. 'Ext.ux.DataView.DragSelector',
  8. 'Ext.ux.DataView.LabelEditor'
  9. ]);
  10. Ext.onReady(function(){
  11. ImageModel = Ext.define('ImageModel', {
  12. extend: 'Ext.data.Model',
  13. fields: [
  14. {name: 'name'},
  15. {name: 'url'},
  16. {name: 'size', type: 'float'},
  17. {name:'lastmod', type:'date', dateFormat:'timestamp'}
  18. ]
  19. });
  20. var store = Ext.create('Ext.data.Store', {
  21. model: 'ImageModel',
  22. proxy: {
  23. type: 'ajax',
  24. url: 'get-images.php',
  25. reader: {
  26. type: 'json',
  27. root: 'images'
  28. }
  29. }
  30. });
  31. store.load();
  32. Ext.create('Ext.Panel', {
  33. id: 'images-view',
  34. frame: true,
  35. collapsible: true,
  36. width: 535,
  37. renderTo: 'dataview-example',
  38. title: 'Simple DataView (0 items selected)',
  39. items: Ext.create('Ext.view.View', {
  40. store: store,
  41. tpl: [
  42. '<tpl for=".">',
  43. '<div class="thumb-wrap" id="{name}">',
  44. '<div class="thumb"><img src="{url}" title="{name}"></div>',
  45. '<span class="x-editable">{shortName}</span></div>',
  46. '</tpl>',
  47. '<div class="x-clear"></div>'
  48. ],
  49. multiSelect: true,
  50. height: 310,
  51. trackOver: true,
  52. overItemCls: 'x-item-over',
  53. itemSelector: 'div.thumb-wrap',
  54. emptyText: 'No images to display',
  55. plugins: [
  56. Ext.create('Ext.ux.DataView.DragSelector', {}),
  57. Ext.create('Ext.ux.DataView.LabelEditor', {dataIndex: 'name'})
  58. ],
  59. prepareData: function(data) {
  60. Ext.apply(data, {
  61. shortName: Ext.util.Format.ellipsis(data.name, 15),
  62. sizeString: Ext.util.Format.fileSize(data.size),
  63. dateString: Ext.util.Format.date(data.lastmod, "m/d/Y g:i a")
  64. });
  65. return data;
  66. },
  67. listeners: {
  68. selectionchange: function(dv, nodes ){
  69. var l = nodes.length,
  70. s = l !== 1 ? 's' : '';
  71. this.up('panel').setTitle('Simple DataView (' + l + ' item' + s + ' selected)');
  72. }
  73. }
  74. })
  75. });
  76. });