manualColumnFreeze.e2e.js 7.2 KB

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