Skip to content

Commit bdccb5e

Browse files
committed
moved settimeout call to filterbykey() fn
And solved restoration of cursor issue.
1 parent e3b74e9 commit bdccb5e

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

lib/AppContext.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@ export default class AppContext {
6262
if (!( dh.schema.name === 'DH_LinkML' && class_name === 'Schema')) {
6363
let dependent_report = dh.context.dependent_rows.get(class_name);
6464
dh.filterByKeys(dh, class_name, dependent_report.fkey_vals);
65-
console.log("tab", class_name, dependent_report.fkey_vals)
66-
setTimeout(() => { dh.hot.render(); }, 500);
6765
}
6866

6967
//$(document).trigger('dhCurrentChange', {

lib/DataHarmonizer.js

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -559,8 +559,6 @@ class DataHarmonizer {
559559

560560
afterFilter: function (filters) {
561561
// column: 0, conditions: ('cancogen_covid-19', "eq", [], operation: "conjunction"
562-
// Didn't make a difference.
563-
//self.hot.render();
564562

565563
},
566564
//beforePaste:
@@ -812,7 +810,7 @@ class DataHarmonizer {
812810
* header row selection
813811
*/
814812
// https://handsontable.com/docs/javascript-data-grid/api/hooks/#afterselection
815-
afterSelectionEnd: (row, column, row2, column2, selectionLayerLevel) => {
813+
afterSelectionEnd: (row, column, row2, column2, selectionLayerLevel, action) => {
816814

817815
console.log("afterSelectionEnd",self.schema, row, column, row2, column2, selectionLayerLevel)
818816

@@ -2194,11 +2192,12 @@ class DataHarmonizer {
21942192

21952193
//}
21962194

2197-
//dh.hot.batchRender(() => {
2198-
dh.hot.suspendExecution();
2199-
//dh.hot.suspendRender();
2195+
// Save, deselect, and then set cursor, Otherwise selected cell gets
2196+
// somehow set to same column but first row after filter!!!
2197+
let cursor = dh.hot.getSelected();
2198+
dh.hot.deselectCell();
22002199

2201-
//dh.hot.deselectCell() ; //Otherwise selected cell gets initalized to 1st row !!!
2200+
dh.hot.suspendExecution(); // Recommended in handsontable example.
22022201
const filtersPlugin = dh.hot.getPlugin('filters');
22032202

22042203
filtersPlugin.clearConditions();
@@ -2215,9 +2214,23 @@ class DataHarmonizer {
22152214
});
22162215

22172216
filtersPlugin.filter();
2218-
// add sorting: hot.getPlugin('columnSorting').sort({ column: 1, sortOrder: 'desc' })
2217+
// Add sorting: hot.getPlugin('columnSorting').sort({ column: 1, sortOrder: 'desc' })
22192218

22202219
dh.hot.resumeExecution();
2220+
2221+
setTimeout(() => { dh.hot.render(); }, 400);
2222+
2223+
if (cursor) {
2224+
// Adding custom event type to selectCell() call, but so far not using this.
2225+
cursor[0].push('afterFilteriing');
2226+
dh.hot.selectCell(...cursor[0]);
2227+
// Note this will cause a "double event" of selecting same cell twice.
2228+
2229+
}
2230+
2231+
// filtersPlugin continues activity AFTER returning, leading to rendering
2232+
// not reflecting filtering work. So we have to trigger a delayed render
2233+
//setTimeout(() => { dh.hot.render(); }, 500);
22212234

22222235
return true
22232236
}

0 commit comments

Comments
 (0)