InfoCard.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. Ext.define('saas.view.home.InfoCard', {
  2. extend: 'Ext.panel.Panel',
  3. xtype: 'infocard',
  4. latyou: 'fit',
  5. initComponent: function() {
  6. var me = this;
  7. var view = Ext.create('Ext.view.View', {
  8. store : Ext.create('Ext.data.Store', {
  9. fields: ['title', 'content', 'color'],
  10. data: me.infoData,
  11. }),
  12. tpl: new Ext.XTemplate([
  13. '<div class="x-row">',
  14. '<tpl for=".">',
  15. '<div class="x-col">',
  16. '<div>',
  17. '<div class="x-box ',
  18. '<tpl if="color"> x-bg-{color}</tpl>',
  19. '<tpl else"> x-bg-default</tpl>',
  20. '">',
  21. '<h3>{title}</h3>',
  22. '<p>{content}</p>',
  23. '</div>',
  24. '</div>',
  25. '</div>',
  26. '</tpl>',
  27. '</div>'
  28. ]),
  29. itemSelector: 'div.x-info-card-body',
  30. });
  31. Ext.apply(me, {
  32. userCls: 'x-info-card ' + me.userCls,
  33. items: [{
  34. xtype: 'button',
  35. cls: 'x-scroller-button x-scroller-button-left',
  36. // iconCls: 'x-sa sa-arrows-left',
  37. disabled: true,
  38. handler: function() {
  39. me.scrollBody(1);
  40. }
  41. }, view, {
  42. xtype: 'button',
  43. cls: 'x-scroller-button x-scroller-button-right',
  44. // iconCls: 'x-sa sa-arrows-right',
  45. handler: function() {
  46. me.scrollBody(-1);
  47. }
  48. }]
  49. });
  50. me.callParent(arguments);
  51. },
  52. listeners: {
  53. boxready: function(th) {
  54. var list = Ext.fly(th.items.items[1].el.dom);
  55. var listWidth = Number(list.getStyle('width').replace('px', ''));
  56. var bodyWidth = th.body.getBox().width;
  57. var btns = th.query('button');
  58. if(listWidth <= (bodyWidth-88)) {
  59. btns[0].setVisible(false);
  60. btns[1].setVisible(false);
  61. return;
  62. }
  63. Ext.fly(th.body).on('mousewheel', function() {
  64. var ev = window.event;
  65. var delta = ev.wheelDelta;
  66. if(ev.preventDefault) {
  67. ev.preventDefault();
  68. }
  69. else {
  70. ev.cancel=true;
  71. }
  72. th.scrollBody(delta/120);
  73. })
  74. }
  75. },
  76. scrollBody: function(delta) {
  77. var me = this;
  78. var list = Ext.fly(me.items.items[1].el.dom);
  79. var marginLeft = Number(list.getStyle('marginLeft').replace('px', ''));
  80. var le = marginLeft + delta * 50;
  81. var MAX_LEN = list.getBox().width - (me.body.getBox().width - 88);
  82. if(le > 0) {
  83. le = 0;
  84. me.scrollLeftDisabled();
  85. }else if(le < -MAX_LEN) {
  86. le = -MAX_LEN;
  87. me.scrollRightDisabled();
  88. }else {
  89. me.scrollEnable();
  90. }
  91. list.setStyle({
  92. marginLeft: le + 'px'
  93. });
  94. },
  95. scrollLeftDisabled: function() {
  96. var me = this;
  97. var leftBtn = me.query('button')[0];
  98. leftBtn.setDisabled(true);
  99. },
  100. scrollRightDisabled: function() {
  101. var me = this;
  102. var rightBtn = me.query('button')[1];
  103. rightBtn.setDisabled(true);
  104. },
  105. scrollEnable: function() {
  106. var me = this;
  107. var btns = me.query('button');
  108. for(var i = 0; i < btns.length; i ++) {
  109. btns[i].setDisabled(false);
  110. }
  111. }
  112. });