1+ ( function ( $ ) {
2+
3+ var grid , // The SlickGrid instance
4+ cols = [ // The column definitions
5+ { name : "Short" , field : "short" , width : 100 } ,
6+ { name : "Medium" , field : "medium" , width : 100 } ,
7+ { name : "Long" , field : "long" , width : 100 } ,
8+ { name : "Mixed" , field : "mixed" , width : 100 } ,
9+ { name : "Long header creates tooltip" , field : "header" , width : 50 } ,
10+ { name : "Long header with predefined tooltip" , field : "tooltipHeader" , width : 50 , tooltip : "Already have a tooltip!" }
11+ ] ,
12+ data = [ ] , // The grid data
13+ LONG_VALUE = "looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong" ,
14+ MEDIUM_VALUE = "mediummmmmmm" ,
15+ SHORT_VALUE = "short" ,
16+ $container = $ ( "#container" ) ,
17+ keys = {
18+ LEFT_ARROW : 37 ,
19+ UP_ARROW : 38 ,
20+ RIGHT_ARROW : 39 ,
21+ DOWN_ARROW : 40
22+ }
23+
24+ // Create data
25+ for ( var i = 0 ; i < 10 ; i ++ ) {
26+ data . push ( {
27+ "id" : "row" + i ,
28+ "short" : SHORT_VALUE ,
29+ "medium" : MEDIUM_VALUE ,
30+ "long" : LONG_VALUE ,
31+ "mixed" : ( i % 2 == 0 ? SHORT_VALUE : LONG_VALUE ) ,
32+ "header" : i ,
33+ "tooltipHeader" : i
34+ } ) ;
35+ }
36+
37+ function setupGrid ( ) {
38+ $ ( '<div id="grid" />' ) . appendTo ( $container ) ;
39+ grid = new Slick . Grid ( "#grid" , data , cols ) ;
40+ grid . setSelectionModel ( new Slick . CellSelectionModel ( ) ) ;
41+ grid . render ( ) ;
42+ }
43+
44+ function teardownGrid ( ) {
45+ $container . empty ( ) ;
46+ }
47+
48+ function getCell ( row , column ) {
49+ return $ ( $ ( "#grid .slick-cell.l" + column ) [ row ] ) ;
50+ }
51+
52+ function assertColumnRange ( range , fromRow , fromCell , toRow , toCell ) {
53+ strictEqual ( range . fromRow , fromRow , "start row" ) ;
54+ strictEqual ( range . toRow , toRow , "end row" ) ;
55+ strictEqual ( range . fromCell , fromCell , "start column" ) ;
56+ strictEqual ( range . toCell , toCell , "end column" ) ;
57+ }
58+
59+ function keyDownOnCell ( $cell , controlKeyPressed , commandKeyPressed , shiftKeyPressed , keyPressed ) {
60+ var $event = $ . Event ( 'keydown' ) ;
61+ $event . ctrlKey = controlKeyPressed ;
62+ $event . metaKey = commandKeyPressed ;
63+ $event . shiftKey = shiftKeyPressed ;
64+ $event . which = keyPressed ;
65+ $cell . trigger ( $event ) ;
66+ }
67+
68+ module ( "plugins - cellselectionmodel - KeyDownHandler no active cell" , {
69+ setup : function ( ) {
70+ setupGrid ( { } ) ;
71+ } ,
72+ teardown : teardownGrid
73+ } ) ;
74+
75+ test ( "press right arrow do not change selection" , function ( ) {
76+ var $cell = getCell ( 0 , 0 ) ;
77+ var $event = $ . Event ( 'keydown' ) ;
78+ $event . which = keys . RIGHT_ARROW ;
79+ $cell . trigger ( $event ) ;
80+
81+ var selectedRanges = grid . getSelectionModel ( ) . getSelectedRanges ( ) ;
82+ strictEqual ( selectedRanges . length , 0 , "number of ranges is incorrect" ) ;
83+ } ) ;
84+
85+ module ( "plugins - cellselectionmodel - KeyDownHandler with active cell" , {
86+ setup : function ( ) {
87+ setupGrid ( { } ) ;
88+ } ,
89+ teardown : teardownGrid
90+ } ) ;
91+
92+ test ( "press right arrow do not change selection" , function ( ) {
93+ var $cell = getCell ( 1 , 3 ) ;
94+ $cell . click ( ) ;
95+
96+ keyDownOnCell ( $cell , false , false , false , keys . RIGHT_ARROW ) ;
97+
98+ var selectedRanges = grid . getSelectionModel ( ) . getSelectedRanges ( ) ;
99+ strictEqual ( selectedRanges . length , 1 , "number of ranges is incorrect" ) ;
100+ var range = selectedRanges [ 0 ] ;
101+
102+ assertColumnRange ( range , 1 , 4 , 1 , 4 ) ;
103+ } ) ;
104+
105+ test ( "press shift plus left arrow add second cell to selection" , function ( ) {
106+ var $cell = getCell ( 1 , 3 ) ;
107+
108+ $cell . click ( ) ;
109+ keyDownOnCell ( $cell , false , false , true , keys . LEFT_ARROW ) ;
110+
111+ var selectedRanges = grid . getSelectionModel ( ) . getSelectedRanges ( ) ;
112+ strictEqual ( selectedRanges . length , 1 , "number of ranges is incorrect" ) ;
113+ var range = selectedRanges [ 0 ] ;
114+
115+ assertColumnRange ( range , 1 , 2 , 1 , 3 ) ;
116+ } ) ;
117+
118+ test ( "press control plus shift plus up arrow do not change selection" , function ( ) {
119+ var $cell = getCell ( 1 , 3 ) ;
120+ $cell . click ( ) ;
121+ keyDownOnCell ( $cell , true , false , true , keys . UP_ARROW ) ;
122+
123+ var selectedRanges = grid . getSelectionModel ( ) . getSelectedRanges ( ) ;
124+ strictEqual ( selectedRanges . length , 1 , "number of ranges" ) ;
125+
126+ var range = selectedRanges [ 0 ] ;
127+ assertColumnRange ( range , 1 , 3 , 1 , 3 ) ;
128+ } ) ;
129+
130+
131+ test ( "press command plus shift plus down arrow do not change selection" , function ( ) {
132+ var $cell = getCell ( 1 , 3 ) ;
133+ $cell . click ( ) ;
134+ keyDownOnCell ( $cell , false , true , true , keys . DOWN_ARROW ) ;
135+
136+ var selectedRanges = grid . getSelectionModel ( ) . getSelectedRanges ( ) ;
137+ strictEqual ( selectedRanges . length , 1 , "number of ranges" ) ;
138+
139+ var range = selectedRanges [ 0 ] ;
140+ assertColumnRange ( range , 1 , 3 , 1 , 3 ) ;
141+ } ) ;
142+
143+ } ) ( jQuery ) ;
0 commit comments