Skip to content

Commit 5aab748

Browse files
committed
fix: pinch/pan gestures fix + allow to customize everything about gestures
1 parent 80c1ca4 commit 5aab748

File tree

2 files changed

+32
-12
lines changed

2 files changed

+32
-12
lines changed

src/charting/charts/Chart.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -225,10 +225,10 @@ export abstract class Chart<U extends Entry, D extends IDataSet<U>, T extends Ch
225225
return this.mDescPaint;
226226
}
227227

228-
public panGestureOptions: PanGestureHandlerOptions;
229-
public tapGestureOptions: TapGestureHandlerOptions;
230-
public doubleTapGestureOptions: TapGestureHandlerOptions;
231-
public pinchGestureOptions: PinchGestureHandlerOptions;
228+
public panGestureOptions: PanGestureHandlerOptions & { gestureTag?: number };
229+
public tapGestureOptions: TapGestureHandlerOptions & { gestureTag?: number };
230+
public doubleTapGestureOptions: TapGestureHandlerOptions & { gestureTag?: number };
231+
public pinchGestureOptions: PinchGestureHandlerOptions & { gestureTag?: number };
232232

233233
/**
234234
* Sets a new data object for the chart. The data object contains all values

src/charting/listener/BarLineChartTouchListener.ts

+28-8
Original file line numberDiff line numberDiff line change
@@ -105,14 +105,28 @@ export class BarLineChartTouchListener extends ChartTouchListener<BarLineChartBa
105105
pinchGestureHandler: PinchGestureHandler;
106106
tapGestureHandler: TapGestureHandler;
107107
doubleTapGestureHandler: TapGestureHandler;
108+
109+
getPanGestureOptions() {
110+
return { gestureTag: this.PAN_HANDLER_TAG, ...(this.mChart.panGestureOptions || {}) };
111+
}
112+
getPinchGestureOptions() {
113+
return { gestureTag: this.PINCH_HANDLER_TAG, ...(this.mChart.pinchGestureOptions || {}) };
114+
}
115+
getTapGestureOptions() {
116+
return { gestureTag: this.TAP_HANDLER_TAG, ...(this.mChart.tapGestureOptions || {}) };
117+
}
118+
getDoubleTapGestureOptions() {
119+
return { gestureTag: this.DOUBLE_TAP_HANDLER_TAG, ...(this.mChart.doubleTapGestureOptions || {}) };
120+
}
108121
getOrCreateDoubleTapGestureHandler() {
109122
if (!this.doubleTapGestureHandler) {
110123
const manager = Manager.getInstance();
111124
if (Trace.isEnabled()) {
112125
CLog(CLogTypes.log, LOG_TAG, 'creating double tap gesture');
113126
}
127+
const options = this.getDoubleTapGestureOptions();
114128
this.doubleTapGestureHandler = manager
115-
.createGestureHandler(HandlerType.TAP, this.DOUBLE_TAP_HANDLER_TAG, { numberOfTaps: 2, ...(this.mChart.doubleTapGestureOptions || {}) })
129+
.createGestureHandler(HandlerType.TAP, options.gestureTag, { numberOfTaps: 2, ...options })
116130
.on(GestureHandlerStateEvent, this.onDoubleTapGesture, this);
117131
}
118132
return this.doubleTapGestureHandler;
@@ -123,8 +137,10 @@ export class BarLineChartTouchListener extends ChartTouchListener<BarLineChartBa
123137
CLog(CLogTypes.log, LOG_TAG, 'creating tap gesture');
124138
}
125139
const manager = Manager.getInstance();
140+
const options = this.getTapGestureOptions();
141+
const doubleTapOptions = this.getDoubleTapGestureOptions();
126142
this.tapGestureHandler = manager
127-
.createGestureHandler(HandlerType.TAP, this.TAP_HANDLER_TAG, { waitFor: [this.DOUBLE_TAP_HANDLER_TAG], ...(this.mChart.tapGestureOptions || {}) })
143+
.createGestureHandler(HandlerType.TAP, options.gestureTag, { waitFor: [doubleTapOptions.gestureTag], ...options })
128144
.on(GestureHandlerStateEvent, this.onTapGesture, this);
129145
}
130146
return this.tapGestureHandler;
@@ -136,12 +152,14 @@ export class BarLineChartTouchListener extends ChartTouchListener<BarLineChartBa
136152
if (Trace.isEnabled()) {
137153
CLog(CLogTypes.log, LOG_TAG, 'creating pinch gesture');
138154
}
155+
const panOptions = this.getPanGestureOptions();
156+
const pinchOptions = this.getPinchGestureOptions();
139157
this.pinchGestureHandler = manager
140-
.createGestureHandler(HandlerType.PINCH, this.PINCH_HANDLER_TAG, {
158+
.createGestureHandler(HandlerType.PINCH, pinchOptions.gestureTag, {
141159
minSpan: 20,
142-
// simultaneousHandlers: [this.PAN_HANDLER_TAG],
160+
simultaneousHandlers: [panOptions.gestureTag],
143161
shouldCancelWhenOutside: false,
144-
...(this.mChart.pinchGestureOptions || {})
162+
...pinchOptions
145163
})
146164
.on(GestureHandlerStateEvent, this.onPinchGestureState, this)
147165
.on(GestureHandlerTouchEvent, this.onPinchGestureTouch, this);
@@ -154,13 +172,15 @@ export class BarLineChartTouchListener extends ChartTouchListener<BarLineChartBa
154172
if (Trace.isEnabled()) {
155173
CLog(CLogTypes.log, LOG_TAG, 'creating pan gestures');
156174
}
175+
const panOptions = this.getPanGestureOptions();
176+
const pinchOptions = this.getPinchGestureOptions();
157177
this.panGestureHandler = manager
158-
.createGestureHandler(HandlerType.PAN, this.PAN_HANDLER_TAG, {
159-
// simultaneousHandlers: [this.PINCH_HANDLER_TAG],
178+
.createGestureHandler(HandlerType.PAN, panOptions.gestureTag, {
179+
simultaneousHandlers: [pinchOptions.gestureTag],
160180
minPointers: 1,
161181
maxPointers: 2,
162182
shouldCancelWhenOutside: false,
163-
...(this.mChart.panGestureOptions || {})
183+
...panOptions
164184
})
165185
.on(GestureHandlerStateEvent, this.onPanGestureState, this)
166186
.on(GestureHandlerTouchEvent, this.onPanGestureTouch, this);

0 commit comments

Comments
 (0)