Skip to content

Commit fecca0b

Browse files
committed
selection.grid.CellModel: adjust the basic navigation logic #6300
1 parent 767a3df commit fecca0b

1 file changed

Lines changed: 53 additions & 42 deletions

File tree

src/selection/grid/CellModel.mjs

Lines changed: 53 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class CellModel extends BaseModel {
2929
addDomListener() {
3030
let me = this;
3131

32-
me.view.on('cellClick', me.onCellClick, me)
32+
me.view.parent.on('cellClick', me.onCellClick, me)
3333
}
3434

3535
/**
@@ -38,7 +38,7 @@ class CellModel extends BaseModel {
3838
destroy(...args) {
3939
let me = this;
4040

41-
me.view.un('cellClick', me.onCellClick, me);
41+
me.view.parent.un('cellClick', me.onCellClick, me);
4242

4343
super.destroy(...args)
4444
}
@@ -54,76 +54,85 @@ class CellModel extends BaseModel {
5454
* @param {Object} data
5555
*/
5656
onKeyDownDown(data) {
57-
this.onNavKeyRow(data, 1)
57+
this.onNavKeyRow(1)
5858
}
5959

6060
/**
6161
* @param {Object} data
6262
*/
6363
onKeyDownLeft(data) {
64-
this.onNavKeyColumn(data, -1)
64+
this.onNavKeyColumn(-1)
6565
}
6666

6767
/**
6868
* @param {Object} data
6969
*/
7070
onKeyDownRight(data) {
71-
this.onNavKeyColumn(data, 1)
71+
this.onNavKeyColumn(1)
7272
}
7373

7474
/**
7575
* @param {Object} data
7676
*/
7777
onKeyDownUp(data) {
78-
this.onNavKeyRow(data, -1)
78+
this.onNavKeyRow(-1)
7979
}
8080

8181
/**
82-
* @param {Object} data
8382
* @param {Number} step
8483
*/
85-
onNavKeyColumn(data, step) {
86-
let me = this,
87-
{view} = me,
88-
idArray = data.path[0].id.split('__'),
89-
currentColumn = idArray[2],
90-
dataFields = view.columns.map(c => c.dataField),
91-
newIndex = (dataFields.indexOf(currentColumn) + step) % dataFields.length,
92-
id;
84+
onNavKeyColumn(step) {
85+
let me = this,
86+
{view} = me,
87+
{store} = view,
88+
dataFields = view.parent.columns.map(c => c.dataField),
89+
currentColumn, id, newIndex, record;
90+
91+
if (me.hasSelection()) {
92+
currentColumn = me.items[0].split('__')[2];
93+
record = view.getRecord(me.items[0])
94+
} else {
95+
currentColumn = dataFields[0];
96+
record = store.getAt(0)
97+
}
98+
99+
newIndex = (dataFields.indexOf(currentColumn) + step) % dataFields.length;
93100

94101
while (newIndex < 0) {
95102
newIndex += dataFields.length
96103
}
97104

98-
idArray[2] = dataFields[newIndex];
99-
id = idArray.join('__');
105+
id = view.getCellId(record, dataFields[newIndex]);
100106

101-
me.select(id);
102-
view.focus(id)
107+
me.select(id)
103108
}
104109

105110
/**
106-
* @param {Object} data
107111
* @param {Number} step
108112
*/
109-
onNavKeyRow(data, step) {
110-
let me = this,
111-
{view} = me,
112-
{store} = view,
113-
idArray = data.path[0].id.split('__'),
114-
recordId = idArray[1],
115-
newIndex = (store.indexOf(recordId) + step) % store.getCount(),
116-
id;
113+
onNavKeyRow(step) {
114+
let me = this,
115+
{view} = me,
116+
{store} = view,
117+
currentIndex = 0,
118+
dataField = view.parent.columns[0].dataField,
119+
id, newIndex, newRecord;
120+
121+
if (me.hasSelection()) {
122+
currentIndex = store.indexOf(view.getRecord(me.items[0]));
123+
dataField = me.items[0].split('__')[2];
124+
}
125+
126+
newIndex = (currentIndex + step) % store.getCount();
117127

118128
while (newIndex < 0) {
119129
newIndex += store.getCount()
120130
}
121131

122-
idArray[1] = store.getKeyAt(newIndex);
123-
id = idArray.join('__');
132+
newRecord = store.getAt(newIndex);
133+
id = view.getCellId(newRecord, dataField);
124134

125-
me.select(id);
126-
view.focus(id)
135+
me.select(id)
127136
}
128137

129138
/**
@@ -133,13 +142,14 @@ class CellModel extends BaseModel {
133142
super.register(component);
134143

135144
let me = this,
136-
{id, view} = me;
145+
{id, view} = me,
146+
scope = id;
137147

138148
view.keys?._keys.push(
139-
{fn: 'onKeyDownDown' ,key: 'Down' ,scope: id},
140-
{fn: 'onKeyDownLeft' ,key: 'Left' ,scope: id},
141-
{fn: 'onKeyDownRight' ,key: 'Right' ,scope: id},
142-
{fn: 'onKeyDownUp' ,key: 'Up' ,scope: id}
149+
{fn: 'onKeyDownDown' ,key: 'Down' ,scope},
150+
{fn: 'onKeyDownLeft' ,key: 'Left' ,scope},
151+
{fn: 'onKeyDownRight' ,key: 'Right' ,scope},
152+
{fn: 'onKeyDownUp' ,key: 'Up' ,scope}
143153
)
144154
}
145155

@@ -148,13 +158,14 @@ class CellModel extends BaseModel {
148158
*/
149159
unregister() {
150160
let me = this,
151-
{id, view} = me;
161+
{id, view} = me,
162+
scope = id;
152163

153164
view.keys?.removeKeys([
154-
{fn: 'onKeyDownDown' ,key: 'Down' ,scope: id},
155-
{fn: 'onKeyDownLeft' ,key: 'Left' ,scope: id},
156-
{fn: 'onKeyDownRight' ,key: 'Right' ,scope: id},
157-
{fn: 'onKeyDownUp' ,key: 'Up' ,scope: id}
165+
{fn: 'onKeyDownDown' ,key: 'Down' ,scope},
166+
{fn: 'onKeyDownLeft' ,key: 'Left' ,scope},
167+
{fn: 'onKeyDownRight' ,key: 'Right' ,scope},
168+
{fn: 'onKeyDownUp' ,key: 'Up' ,scope}
158169
]);
159170

160171
super.unregister()

0 commit comments

Comments
 (0)