@@ -6,11 +6,12 @@ import {
66} from '@deephaven/grid' ;
77import { IrisGridType as IrisGrid } from '@deephaven/iris-grid' ;
88import Log from '@deephaven/log' ;
9+ import { getColumnSourceHeaderFromGridPoint } from './PivotMouseHandlerUtils' ;
910
1011const log = Log . module ( '@deephaven/js-plugin-pivot/PivotFilterMouseHandler' ) ;
1112
1213/**
13- * Trigger quick filters and advanced filters
14+ * Trigger quick filters on pivot columnBy source headers
1415 */
1516class PivotFilterMouseHandler extends GridMouseHandler {
1617 constructor ( irisGrid : IrisGrid ) {
@@ -22,30 +23,23 @@ class PivotFilterMouseHandler extends GridMouseHandler {
2223 irisGrid : IrisGrid ;
2324
2425 onDown ( gridPoint : GridPoint ) : EventHandlerResult {
25- const { x, y, column, row, columnHeaderDepth } = gridPoint ;
26- if ( column != null && columnHeaderDepth != null && row === null ) {
27- const { isFilterBarShown, metrics } = this . irisGrid . state ;
26+ const { model } = this . irisGrid . props ;
27+ const { isFilterBarShown, metrics } = this . irisGrid . state ;
28+
29+ const sourceIndex = getColumnSourceHeaderFromGridPoint ( model , gridPoint ) ;
30+
31+ log . debug ( 'onDown' , gridPoint , sourceIndex ) ;
32+
33+ if ( sourceIndex != null ) {
2834 if ( ! metrics ) throw new Error ( 'Metrics not set' ) ;
2935
30- const { columnHeaderMaxDepth } = metrics ;
3136 const theme = this . irisGrid . getTheme ( ) ;
32- // TODO: check X
33- const sourceIndex = - columnHeaderDepth ;
34- log . debug ( 'onDown' , {
35- x,
36- y,
37- column,
38- row,
39- sourceIndex,
40- columnHeaderMaxDepth,
41- } ) ;
37+
4238 if (
4339 isFilterBarShown &&
4440 theme . columnHeaderHeight != null &&
45- theme . filterBarHeight != null &&
46- y > 0 &&
47- y <= theme . columnHeaderHeight * columnHeaderMaxDepth &&
48- column <= 3 // TODO: temporary limit until filter UI is done
41+ theme . filterBarHeight != null
42+ // TODO: check X and Y within the filter input box based on metrics
4943 ) {
5044 this . irisGrid . focusFilterBar ( sourceIndex ) ;
5145 return true ;
@@ -54,47 +48,6 @@ class PivotFilterMouseHandler extends GridMouseHandler {
5448
5549 return false ;
5650 }
57-
58- // onMove(gridPoint: GridPoint): EventHandlerResult {
59- // const { y, column } = gridPoint;
60- // const { isFilterBarShown, hoverAdvancedFilter, metrics } =
61- // this.irisGrid.state;
62- // if (!metrics) throw new Error('Metrics not set');
63- // const { columnHeaderMaxDepth } = metrics;
64- // const theme = this.irisGrid.getTheme();
65-
66- // let newHoverAdvancedFilter = null;
67- // if (
68- // isFilterBarShown &&
69- // theme.columnHeaderHeight != null &&
70- // theme.filterBarHeight != null &&
71- // column !== null &&
72- // y > 0 &&
73- // y <= theme.columnHeaderHeight * (columnHeaderMaxDepth - 1) &&
74- // column <= 3 // TODO: temporary limit until filter UI is done
75- // ) {
76- // newHoverAdvancedFilter = column;
77- // }
78-
79- // console.log('[plugins] newHoverAdvancedFilter', newHoverAdvancedFilter);
80-
81- // if (newHoverAdvancedFilter !== hoverAdvancedFilter) {
82- // this.irisGrid.setState({ hoverAdvancedFilter: newHoverAdvancedFilter });
83- // }
84-
85- // // Stop propagation to block original onMove behavior
86- // return true;
87- // }
88-
89- // onLeave(gridPoint: GridPoint): EventHandlerResult {
90- // const { column } = gridPoint;
91- // const { hoverAdvancedFilter } = this.irisGrid.state;
92- // if (hoverAdvancedFilter !== null && column !== hoverAdvancedFilter) {
93- // this.irisGrid.setState({ hoverAdvancedFilter: null });
94- // }
95-
96- // return false;
97- // }
9851}
9952
10053export default PivotFilterMouseHandler ;
0 commit comments