SciChart® the market leader in Fast WPF Charts, WPF 3D Charts, iOS Chart, Android Chart and JavaScript Chart Components

0 votes

Hi Maksim,

Thanks for your inquiry.
Unfortunately, I have noticed you use an outdated SciChart version.
We recommend using the latest one, which is SciChart v6.6.0.26505 currently. It has lots of improvements, including our new and fast Visual Xccelerator Engine. And SciChart v5.x is no longer supported.

If you still experience this issue with the latest SciChart version, please prepare a small sample project reproducing this and send us for investigation.

Thanks in advance,
Lex

1 vote

Hi Andrew.

Thank you for your quick response.
There are no specific devices or operating systems, And, as you can see, we didn’t support devices with very old Android versions.

I have no idea what We can do in this case, but if You have the same other ideas, or if You make some changes – just notice me.

1 vote

Hi Alexander

I haven’t heard of any similar reports I’m afraid.

Do you know anything about what patterns of devices or OS versions might be present? Also what proportion of users is this affecting?

This article I found talks about the perils of loading native libraries on Android. That’s what’s happening here, the stack trace is trying to load SciChart’s core C++ library (used for licensing & rendering).

There’s some possible ways to debug this & come to a solution in that article and possibly something we can do by using Relinker to load a library, although would require some way to reproduce this so we can test it.

Best regards
Andrew

0 votes

I have tried the method you provide to display a single prompt. However, when loading multiple polylines (more than 1000), you will still feel stuck when zooming and displaying tooltips after rendering. How can you optimize it?

0 votes

Hi there

The best place to look is our documentation. There’s a page here on Integrating the SciChart Libraries which shows how to reference the SciChart Android libraries from Maven.

Then follow the tutorials to learn the basics about SciChart.

Hope this helps!

Best regards,
Andrew

0 votes

This seems like a duplicate of this question:

The use of tooltips causes the discount chart to get stuck

Have you tried my solution there?

0 votes

Enre, thanks for posting that – I’m glad I’m not alone. I am still getting the error. Fortunately, updates and releases seem to still be going through the App Store as usual even with the error.

1 vote

Hi all

According to developer.apple.com/forums/thread/714736 this seems to be a bug in the validation on Apple side and is affecting a number of third party libraries.

It’s a bug in the validation that runs on the backend. It’s a warning, not an error, so binary distribution is possible. I’ve already filed a bug on the Feedback Assistant (FB11488329) for this issue. developer.apple.com/forums/thread/713574 — mario25 2 months ago

One user has reported

This problem occurs even with CoreData generated source code. For example the following extension (generated from Xcode) causes similar warnings:

extension FolderItem {
      @objc(addItemsObject:)
      @NSManaged public func addToItems(_ value: FavoriteItem)
      @objc(removeItemsObject:)
      @NSManaged public func removeFromItems(_ value: FavoriteItem)
      @objc(addItems:)
      @NSManaged public func addToItems(_ values: NSSet)
      @objc(removeItems:)
      @NSManaged public func removeFromItems(_ values: NSSet)
  }
  

The warnings are related to the following lines: @objc(addItemsObject:) @objc(removeItemsObject:) @objc(removeItems:)
This is all generated code from Xcode.

Multiple users are reporting this error with other third party libraries (not scichart) and say the warning can be ignored and app continue to be published.

If you continue to have problems I suggest to comment on the forum threads above on developer.apple.com. If there is specific guidance from Apple on how to adjust our library we would be happy to do it.

Best regards,
Andrew

0 votes

I’m getting same error too after updating Xcode 14.

0 votes

Thanks again for your help. I still have two problems here. I hope you can get your guidance

  1. The tooltip for a specific point does not appear on the upper halfshaft

Content description: I used your method to override the “RolloverModifier” class to implement tooltips for specific points, but the tooltips do not appear on the upper half axis. See here for details https://codesandbox.io/s/test-forked-ionmo5?file=/src/index.ts

2.. How to avoid page jam in scenarios where multiple lines are required

Content description: The performance of scichart in single line rendering data is amazing. My current requirement is to render multiple lines at one time (up to 1800 lines at most), and I hope that after the loading is completed, the tooltip of a specific point will appear smoothly when the mouse is moved. Is there a similar case for my reference?

0 votes

Hi there

Try this technique: Override RolloverModifier to show tooltip only on a single datapoint.

Does that solve the problem?

Best regards,
Andrew

1 vote

Hello, thank you for your help

About the problem you raised to help me solve the problem

  1. What I want is to display the tooltip of a single point when the mouse moves up?

  2. The effect I want to achieve is that you can see the trend chart of data and move the mouse to a single point to display tool tips. It is better to show and hide the lines of the same dataSeriesName in batches.

  • js scichart answered 2 weeks ago
  • last active 2 weeks ago
0 votes

Hi Kurt,

I answered your other question on making a custom usercontrol for the legend. Was this helpful? I linked to the LegendModifier docs and explained how you could make a custom ItemsControl to consume the SeriesInfo objects emitted by LegendModifier.LegendData.

Start by trying out some simple things, create an ItemsControl, bind ItemSource to LegendModifier.LegendData, and have an ItemTemplate to render legend rows. Note each item has a SeriesInfo instance as its DataContext so the properties on SeriesInfo are available, including RenderableSeries and DataSeriesName.

DataSeries itself has a Tag property. You could put extra data on the DataSeries such as ‘Group1’ ‘Group2’ then use this to build out your custom legend with grouping.

If we have time we will try to create an example for you. I will be honest and say we’re extremely busy at the moment though with a huge website re-launch due in a few weeks and releases on all three platforms!

Hence I would try first by creating an ItemsControl that binds to LegendModifier.LegendData. See the docs linked above for how.

Best regards,
Andrew

1 vote

I think having a 500 tooltips for for 500 series on the chart is a bit excessive so I’m not surprised you’re seeing a performance problem on this example (500 series x 500 points) when adding a tooltip.

  • Is your real application use-case like this (500 series and you need tooltips for all)?
  • What behaviour do you want in your real application?

Best regards,
Andrew

0 votes

It’s entirely possible, we have seen strange errors happen if you run out of memory in browser.

You are returning { sciChartSurface, wasmContext } from your initialisation function.

  • Are you deleting the sciChartSurface when you are finished with it?
  • Are you creating new XyDataSeries at any point or swapping series? If so – old series must be deleted

Have a look at SciChart.js Documentation – The DataSeries API.

Deleting a DataSeries
Once you are finished with the DataSeries, don’t
forget to call IDeletable.delete(). This frees WebAssembly native
memory and releases it back to the operating system:

// Calling delete on a DataSeries releases its webassembly memory. This series is no longer usable
  xyDataSeries.delete();
  
  // Calling delete on a RenderableSeries will delete both the RenderableSeries and its dataseries.
  // This series is no longer usable
  const lineSeries = new FastLineRenderableSeries(wasmContext);
  lineSeries.delete();
  
  // Calling delete on a SciChartSurface will delete and free memory on all elements in this chart
  // This chart is no longer usable.
  const { wasmContext, sciChartSurface } = await SciChartSurface.create(divElementId);
  sciChartSurface.delete();
  

Failing to call IDeletable.delete() on a DataSeries or it’s parent SciChartSurface when it is no longer needed can result in a memory
leak.

To simplify your code, if you do not change DataSeries instances, you can call delete on the parent SciChartSurface once. This will delete all child objects that hold native memory.

The following types are IDeletable and must be deleted

  • IBrush2D
  • IPen2D
  • IRenderContext2D
  • IDataSeries
  • IChartModifierBase
  • IDataSeries3D
  • IBaseSceneEntity
  • IRenderableSeries3D
  • IEventSubscriptionItem
  • IPointMarker
  • ISeriesDrawingProvider
  • IAnnotation
  • ISciChartSurfaceBase
  • IRenderableSeries

If you create any type from the above (RenderableSeries, DataSreies, Axis, Annotation) it must be deleted when no longer used.

SciChartSurface.delete() will cascade and call .delete() on all child objects so you only need to do this once, however if you are swapping RenderableSeries, DataSeries, Axis or Annotations then ensure that items you remove from the chart are deleted.

Best regards,
Andrew

0 votes

Hi

It turns out the issue is with the combination of CategoryAxis, TextLabelProvider and the Rollover. Without the TextLabelProvider, the example works fine.

I have fixed this bug in the soon-to-be-released version 2.3.

Regards
David

0 votes

Update: I’ve created a full example for you to demonstrate this using the techniques we discussed. It does everything except the interpolation in case you wanted to place an annotation between data-points

Find the example here:

Dynamic Annotations

enter image description here

0 votes

Another example which is interesting from our examples suite:

Animated Realtime Mountain Chart Example

This places an annotation at X,Y of the latest point on a Mountain series. It is updated as the data is updated. The data updates are animated as well

enter image description here

Best regards,
Andrew

1 vote
In reply to: Render Order

Hi Will

Apologies for the delay. We discussed with the team, rather than order independent transparency there may be a simple solution here to trick SciChart into drawing objects in a different order.

The way SciChart WPF 3D works, if any part of an object is transparent, the entire object is drawn back to front from the camera. However this can sometimes lead to artefacts as you’ve found.

Will get back to you when we have a solution

-Andrew

0 votes

Hi Kelly,

I had a look at this. There’s no way to do this in SciChart.js without writing some messy code to use the Hit-Test API or Finding index on the dataseries.

My question to you: Must this be an annotation? In this Vital Signs Monitor example, we use a series to place a single scatter point at the latest X-Y value. This looks great and highlights the leading point.

An annotation would be possible, but the steps are roughly:

  1. Subscribe to sciChartSurface.rendered
  2. inside that find the index to the x-value you want to place your annotation
  3. use that index to get the y-value

Something like this

sciChartSurface.rendered.subscribe(() => {
    const xIndex = findIndex(xyDataSeries, xValue); 
    const yValue = xyDataSeries.getNativeYValues().get(xIndex);
    annotation.y1 = yValue;
});

You’d have to implement findIndex above, or use our own which is accessible via the webAssemblyContext like this:

const xIndex = wasmContext.NumberUtil.FindIndex(xyDataSeries.getNativeXValues(), 
   xValue, 
   wasmContext.SCRTFindIndexSearchMode.Nearest, 
   xyDataSeries.isSorted);

Note if you wanted to place the annotation on the line segment (between datapoints) some interpolation would be required. You’d need to find the index either side, the y-value either side of the x-location and use linear interpolation.

In short, it’s possible, but requires some extra code.

Best regards,
Andrew

Showing 1 - 20 of 5k results