nativescript-community / ui-chart

A powerful chart / graph plugin, supporting line, bar, pie, radar, bubble, and candlestick charts as well as scaling, panning and animations.
https://nativescript-community.github.io/ui-chart/
Apache License 2.0
33 stars 12 forks source link

TypeError: this.mChart.getCustomRenderer is not a function with CombinedChart #28

Closed wendt88 closed 1 year ago

wendt88 commented 3 years ago

Summary By adding a BubbleData to a CombinedChart or setting CUBIC_BEZIER mode of a LineData, the app crashs

Device (please complete the following information):

Example

BubbleData:

import { CombinedData } from '@nativescript-community/ui-chart/data/CombinedData';
import { BubbleDataSet } from '@nativescript-community/ui-chart/data/BubbleDataSet';
import { BubbleData } from '@nativescript-community/ui-chart/data/BubbleData';

const combinedData = new CombinedData();
const bubbleDataSet = new BubbleDataSet([{
    x: 1,
    y: 1,
    size: .3
}, {
    x: 1,
    y: 2,
    size: .5
}], 'Test', 'x', 'y');
combinedData.setData(new BubbleData([bubbleDataSet]));
chart.setData(combinedData); //chart is a CombinedChart -> but works fine on BubbleChart (without CombinedData wrapper)

LineData:

import { CombinedData } from '@nativescript-community/ui-chart/data/CombinedData';
import { LineDataSet, Mode } from '@nativescript-community/ui-chart/data/LineDataSet';
import { LineData } from '@nativescript-community/ui-chart/data/LineData';

const combinedData = new CombinedData();
const lineDataSet = new LineDataSet([{
    x: 1,
    y: 2
}, {
    x: 2,
    y: 1
}, {
    x: 3,
    y: 2
}], 'Test1', 'x', 'y');
lineDataSet.setMode(Mode.CUBIC_BEZIER); // it works fine without this line
combinedData.setData(new LineData([lineDataSet]));
chart.setData(combinedData); //chart is a CombinedChart -> but works fine on LineChart and CUBIC_BEZIER mode

Error

System.err: An uncaught Exception occurred on "main" thread.
System.err: Calling js method onDraw failed
System.err: TypeError: this.mChart.getCustomRenderer is not a function
System.err: 
System.err: StackTrace:
System.err: drawDataSet(file: app\src\renderer\BubbleChartRenderer.ts:82:41)
System.err:     at drawData(file: app\src\renderer\BubbleChartRenderer.ts:49:21)
System.err:     at drawData(file: app\src\renderer\CombinedChartRenderer.ts:71:57)
System.err:     at onDraw(file: app\src\charts\BarLineChartBase.ts:222:27)
System.err:     at onDraw(file: app\src\canvas.android.ts:618:21)
System.err:     at com.tns.Runtime.callJSMethodNative(Native Method)
System.err:     at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1302)
System.err:     at com.tns.Runtime.callJSMethodImpl(Runtime.java:1188)
System.err:     at com.tns.Runtime.callJSMethod(Runtime.java:1175)
System.err:     at com.tns.Runtime.callJSMethod(Runtime.java:1153)
System.err:     at com.tns.Runtime.callJSMethod(Runtime.java:1149)
System.err:     at com.tns.gen.com.akylas.canvas.DrawListener.onDraw(DrawListener.java:18)
System.err:     at com.akylas.canvas.CanvasView.onDraw(CanvasView.java:27)
System.err:     at android.view.View.draw(View.java:22350)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21226)
System.err:     at android.view.View.draw(View.java:22081)
System.err:     at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
System.err:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21217)
System.err:     at android.view.View.draw(View.java:22081)
System.err:     at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
System.err:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21217)
System.err:     at android.view.View.draw(View.java:22081)
System.err:     at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
System.err:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
System.err:     at android.view.View.draw(View.java:22353)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21226)
System.err:     at android.view.View.draw(View.java:22081)
System.err:     at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
System.err:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
System.err:     at android.view.View.draw(View.java:22353)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21226)
System.err:     at android.view.View.draw(View.java:22081)
System.err:     at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
System.err:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21217)
System.err:     at android.view.View.draw(View.java:22081)
System.err:     at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
System.err:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21217)
System.err:     at android.view.View.draw(View.java:22081)
System.err:     at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
System.err:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
System.err:     at android.view.View.draw(View.java:22353)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21226)
System.err:     at android.view.View.draw(View.java:22081)
System.err:     at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
System.err:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
System.err:     at android.view.View.draw(View.java:22353)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21226)
System.err:     at android.view.View.draw(View.java:22081)
System.err:     at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
System.err:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21217)
System.err:     at android.view.View.draw(View.java:22081)
System.err:     at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
System.err:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21217)
System.err:     at android.view.View.draw(View.java:22081)
System.err:     at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
System.err:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21217)
System.err:     at android.view.View.draw(View.java:22081)
System.err:     at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
System.err:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21217)
System.err:     at android.view.View.draw(View.java:22081)
System.err:     at android.view.ViewGroup.drawChild(ViewGroup.java:4516)
System.err:     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4277)
System.err:     at android.view.View.draw(View.java:22353)
System.err:     at com.android.internal.policy.DecorView.draw(DecorView.java:806)
System.err:     at android.view.View.updateDisplayListIfDirty(View.java:21226)
System.err:     at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:559)
System.err:     at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:565)
System.err:     at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:642)
System.err:     at android.view.ViewRootImpl.draw(ViewRootImpl.java:4101)
System.err:     at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3828)
System.err:     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3099)
System.err:     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1952)
System.err:     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8171)
System.err:     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)
System.err:     at android.view.Choreographer.doCallbacks(Choreographer.java:796)
System.err:     at android.view.Choreographer.doFrame(Choreographer.java:731)
System.err:     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
System.err:     at android.os.Handler.handleCallback(Handler.java:938)
System.err:     at android.os.Handler.dispatchMessage(Handler.java:99)
System.err:     at android.os.Looper.loop(Looper.java:223)
System.err:     at android.app.ActivityThread.main(ActivityThread.java:7656)
System.err:     at java.lang.reflect.Method.invoke(Native Method)
System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
System.err: com.tns.NativeScriptException: TypeError: Cannot read property 'FirebaseCrashlytics' of undefined
System.err:     at com.tns.Runtime.passExceptionToJsNative(Native Method)
System.err:     at com.tns.Runtime.passUncaughtExceptionToJs(Runtime.java:84)
System.err:     at com.tns.NativeScriptUncaughtExceptionHandler.uncaughtException(NativeScriptUncaughtExceptionHandler.java:34)
System.err:     at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1073)
System.err:     at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
System.err:     at java.lang.Thread.dispatchUncaughtException(Thread.java:2203)
farfromrefug commented 3 years ago

@wendt88 should be fixed in 1.1.32

wendt88 commented 3 years ago

Thx! works fine.

found an other small issue: works:

new BubbleDataSet([{
    x: 1,
    y: 2,
    size: .5
}], 'Test', 'x', 'y', 'size');

does not work:

new BubbleDataSet([{
    x: 1,
    y: 2,
    z: .5
}], 'Test', 'x', 'y', 'z');

it seems that the 5th param of BubbleDataSet (sizeProperty) is not used, the key must be called size, otherwise it does not work

farfromrefug commented 3 years ago

@wendt88 thanks will fix that when i have the time!