manualColumnFreeze.e2e.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. describe('manualColumnFreeze', function () {
  2. var id = 'testContainer';
  3. beforeEach(function () {
  4. this.$container = $('<div id="' + id + '"></div>').appendTo('body');
  5. });
  6. afterEach(function () {
  7. if (this.$container) {
  8. destroy();
  9. this.$container.remove();
  10. }
  11. });
  12. describe('freezeColumn', function () {
  13. it('should increase fixedColumnsLeft setting', function () {
  14. var hot = handsontable({
  15. data: Handsontable.helper.createSpreadsheetData(10, 10),
  16. manualColumnFreeze: true
  17. });
  18. var plugin = hot.getPlugin('manualColumnFreeze');
  19. plugin.freezeColumn(4);
  20. expect(hot.getSettings().fixedColumnsLeft).toEqual(1);
  21. });
  22. it('should freeze (make fixed) the column provided as an argument', function () {
  23. var hot = handsontable({
  24. data: Handsontable.helper.createSpreadsheetData(10, 10),
  25. manualColumnFreeze: true
  26. });
  27. var plugin = hot.getPlugin('manualColumnFreeze');
  28. var movePlugin = hot.getPlugin('manualColumnMove');
  29. plugin.freezeColumn(5);
  30. expect(movePlugin.columnsMapper.getValueByIndex(0)).toEqual(5);
  31. });
  32. });
  33. describe('unfreezeColumn', function () {
  34. it('should decrease fixedColumnsLeft setting', function () {
  35. var hot = handsontable({
  36. data: Handsontable.helper.createSpreadsheetData(10, 10),
  37. manualColumnFreeze: true,
  38. fixedColumnsLeft: 1
  39. });
  40. var plugin = hot.getPlugin('manualColumnFreeze');
  41. plugin.unfreezeColumn(0);
  42. expect(hot.getSettings().fixedColumnsLeft).toEqual(0);
  43. });
  44. it('should unfreeze (make non-fixed) the column provided as an argument', function () {
  45. var hot = handsontable({
  46. data: Handsontable.helper.createSpreadsheetData(10, 10),
  47. manualColumnFreeze: true,
  48. fixedColumnsLeft: 3
  49. });
  50. var plugin = hot.getPlugin('manualColumnFreeze');
  51. var movePlugin = hot.getPlugin('manualColumnMove');
  52. plugin.unfreezeColumn(0);
  53. expect(hot.getSettings().fixedColumnsLeft).toEqual(2);
  54. expect(movePlugin.columnsMapper.getValueByIndex(0)).toEqual(1);
  55. expect(movePlugin.columnsMapper.getValueByIndex(1)).toEqual(2);
  56. expect(movePlugin.columnsMapper.getValueByIndex(2)).toEqual(0);
  57. });
  58. });
  59. describe('functionality', function () {
  60. it('should add a \'freeze this column\' context menu entry for non-fixed columns', function () {
  61. var hot = handsontable({
  62. data: Handsontable.helper.createSpreadsheetData(10, 10),
  63. manualColumnFreeze: true,
  64. contextMenu: true
  65. });
  66. selectCell(1, 1);
  67. contextMenu();
  68. var freezeEntry = $(hot.getPlugin('contextMenu').menu.container).find('div').filter(function () {
  69. return $(this).text() === 'Freeze this column';
  70. });
  71. expect(freezeEntry.size()).toEqual(1);
  72. });
  73. it('should add a \'unfreeze this column\' context menu entry for fixed columns', function () {
  74. var hot = handsontable({
  75. data: Handsontable.helper.createSpreadsheetData(10, 10),
  76. manualColumnFreeze: true,
  77. contextMenu: true,
  78. fixedColumnsLeft: 2
  79. });
  80. selectCell(1, 1);
  81. contextMenu();
  82. var freezeEntry = $(hot.getPlugin('contextMenu').menu.container).find('div').filter(function () {
  83. return $(this).text() === 'Unfreeze this column';
  84. });
  85. expect(freezeEntry.size()).toEqual(1);
  86. });
  87. it('should fix the desired column after clicking the \'freeze this column\' context menu entry', function () {
  88. var hot = handsontable({
  89. data: Handsontable.helper.createSpreadsheetData(10, 10),
  90. manualColumnFreeze: true,
  91. fixedColumnsLeft: 1,
  92. contextMenu: true
  93. });
  94. selectCell(1, 3);
  95. var dataAtCell = hot.getDataAtCell(1, 3);
  96. contextMenu();
  97. var freezeEntry = $(hot.getPlugin('contextMenu').menu.container).find('div').filter(function () {
  98. if ($(this).text() === 'Freeze this column') {
  99. return true;
  100. }
  101. return false;
  102. });
  103. expect(freezeEntry.size()).toEqual(1);
  104. freezeEntry.eq(0).simulate('mousedown');
  105. expect(hot.getSettings().fixedColumnsLeft).toEqual(2);
  106. expect(hot.getDataAtCell(1, 1)).toEqual(dataAtCell);
  107. });
  108. it('should unfix the desired column (and revert it to it\'s original position) after clicking the \'unfreeze this column\' context menu entry', function () {
  109. var hot = handsontable({
  110. data: Handsontable.helper.createSpreadsheetData(10, 10),
  111. manualColumnFreeze: true,
  112. fixedColumnsLeft: 3,
  113. manualColumnMove: [0, 2, 5, 3, 4, 1, 6, 7, 8, 9],
  114. contextMenu: true,
  115. rowHeaders: true
  116. });
  117. var dataAtCell = hot.getDataAtCell(1, 0);
  118. expect(dataAtCell).toEqual('A2');
  119. dataAtCell = hot.getDataAtCell(1, 1);
  120. expect(dataAtCell).toEqual('C2');
  121. dataAtCell = hot.getDataAtCell(1, 2);
  122. expect(dataAtCell).toEqual('F2');
  123. selectCell(1, 1);
  124. contextMenu();
  125. var freezeEntry = $(hot.getPlugin('contextMenu').menu.container).find('div').filter(function () {
  126. return $(this).text() === 'Unfreeze this column';
  127. });
  128. freezeEntry.eq(0).simulate('mousedown');
  129. expect(hot.getSettings().fixedColumnsLeft).toEqual(2);
  130. dataAtCell = hot.getDataAtCell(1, 0);
  131. expect(dataAtCell).toEqual('A2');
  132. dataAtCell = hot.getDataAtCell(1, 1);
  133. expect(dataAtCell).toEqual('F2');
  134. dataAtCell = hot.getDataAtCell(1, 2);
  135. expect(dataAtCell).toEqual('C2');
  136. selectCell(1, 1);
  137. contextMenu();
  138. freezeEntry = $(hot.getPlugin('contextMenu').menu.container).find('div').filter(function () {
  139. if ($(this).text() === 'Unfreeze this column') {
  140. return true;
  141. }
  142. return false;
  143. });
  144. freezeEntry.eq(0).simulate('mousedown');
  145. expect(hot.getSettings().fixedColumnsLeft).toEqual(1);
  146. dataAtCell = hot.getDataAtCell(1, 0);
  147. expect(dataAtCell).toEqual('A2');
  148. dataAtCell = hot.getDataAtCell(1, 1);
  149. expect(dataAtCell).toEqual('C2');
  150. dataAtCell = hot.getDataAtCell(1, 2);
  151. expect(dataAtCell).toEqual('D2');
  152. dataAtCell = hot.getDataAtCell(1, 5);
  153. expect(dataAtCell).toEqual('F2');
  154. // Use the modified columns position.
  155. hot.updateSettings({
  156. fixedColumnsLeft: 0,
  157. manualColumnMove: [0, 2, 5, 3, 4, 1, 6, 7, 8, 9]
  158. });
  159. hot.getSettings().fixedColumnsLeft = 0;
  160. selectCell(1, 2);
  161. contextMenu();
  162. freezeEntry = $(hot.getPlugin('contextMenu').menu.container).find('div').filter(function () {
  163. return $(this).text() === 'Freeze this column';
  164. });
  165. freezeEntry.eq(0).simulate('mousedown');
  166. expect(hot.getSettings().fixedColumnsLeft).toEqual(1);
  167. dataAtCell = hot.getDataAtCell(1, 0);
  168. expect(dataAtCell).toEqual('F2');
  169. selectCell(1, 0);
  170. contextMenu();
  171. freezeEntry = $(hot.getPlugin('contextMenu').menu.container).find('div').filter(function () {
  172. return $(this).text() === 'Unfreeze this column';
  173. });
  174. freezeEntry.eq(0).simulate('mousedown');
  175. expect(hot.getSettings().fixedColumnsLeft).toEqual(0);
  176. dataAtCell = hot.getDataAtCell(1, 2);
  177. expect(dataAtCell).toEqual('F2');
  178. });
  179. });
  180. });