Home.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. Ext.define('saas.view.home.Home', {
  2. extend: 'Ext.container.Container',
  3. xtype: 'home',
  4. id: 'home',
  5. requires: [
  6. 'Ext.ux.layout.ResponsiveColumn'
  7. ],
  8. controller: 'home',
  9. viewModel: {
  10. type: 'home'
  11. },
  12. cls: 'x-home-panel',
  13. layout: 'responsivecolumn',
  14. scrollable: true,
  15. REFRESH_INTERVALS: 5 * 60 * 1000, // 刷新间隔
  16. defaults: {
  17. shadow: true,
  18. cls: 'x-home-box',
  19. userCls: 'big-100 small-100',
  20. },
  21. items: [{
  22. style: {
  23. marginRight: '0',
  24. },
  25. xtype: 'infocard'
  26. }, {
  27. xtype: 'panel',
  28. style: {
  29. background: '#EEF4F9',
  30. },
  31. latyout: 'responsivecolumn',
  32. defaults: {
  33. margin: '0 16 0 0',
  34. userCls: 'x-home-chart big-33 small-50',
  35. },
  36. items: [{
  37. xtype: 'month-sale',
  38. padding: '0 0 0 14',
  39. }, {
  40. xtype: 'month-purchase',
  41. padding: '0 0 0 14',
  42. }, {
  43. xtype: 'key-data',
  44. margin: 0,
  45. padding: '0 14 0 14',
  46. }]
  47. }, {
  48. xtype: 'panel',
  49. latyout: 'responsivecolumn',
  50. style: {
  51. background: '#EEF4F9',
  52. },
  53. defaults: {
  54. margin: '0 16 0 0',
  55. userCls: 'x-home-chart big-33 small-50',
  56. },
  57. items: [{
  58. xtype: 'month-io',
  59. padding: '0 0 0 14',
  60. }, {
  61. xtype: 'sale-trend',
  62. padding: '0 0 0 14',
  63. }, {
  64. xtype: 'stock-amount',
  65. margin: 0,
  66. padding: '0 14 0 14',
  67. }]
  68. }],
  69. initComponent: function() {
  70. this.lastTime = Ext.Date.now();
  71. this.callParent(arguments);
  72. },
  73. listeners: {
  74. onTabActivate: function(p) {
  75. p.refreshId = window.setInterval((p.refreshStores.bind(p)()).bind(p), p.REFRESH_INTERVALS);
  76. },
  77. onTabDeactivate: function(p) {
  78. p.lastTime = 0;
  79. window.clearInterval(p.refreshId);
  80. }
  81. },
  82. refreshStores: function() {
  83. var me = this,
  84. lastTime = me.lastTime || 0,
  85. now = Ext.Date.now(),
  86. viewModel = me.getViewModel(),
  87. stores = viewModel.storeInfo;
  88. if(now - lastTime > me.REFRESH_INTERVALS) {
  89. for(var key in stores) {
  90. var store = stores[key];
  91. store.load();
  92. }
  93. me.lastTime = Ext.Date.now();
  94. }
  95. return me.refreshStores;
  96. }
  97. });