Hello!
Tell me what I’m doing wrong?
Here’s the code
import { NumericAxis } from "scichart/Charting/Visuals/Axis/NumericAxis";
import { FastLineRenderableSeries } from "scichart/Charting/Visuals/RenderableSeries/FastLineRenderableSeries";
import { EllipsePointMarker } from "scichart/Charting/Visuals/PointMarkers/EllipsePointMarker";
import { RolloverModifier, TRolloverTooltipDataTemplate } from "scichart/Charting/ChartModifiers/RolloverModifier";
import { ZoomPanModifier } from "scichart/Charting/ChartModifiers/ZoomPanModifier";
import { ZoomExtentsModifier } from "scichart/Charting/ChartModifiers/ZoomExtentsModifier";
import { MouseWheelZoomModifier } from "scichart/Charting/ChartModifiers/MouseWheelZoomModifier";
import { SciChartSurface } from "scichart";
import { parseColorToUIntArgb } from "scichart/utils/parseColor";
import { XyDataSeries } from "scichart/Charting/Model/XyDataSeries";
import { CategoryAxis } from "scichart/Charting/Visuals/Axis/CategoryAxis";
import { TextLabelProvider } from "scichart/Charting/Visuals/Axis/LabelProvider/TextLabelProvider";
import { Thickness } from "scichart/Core/Thickness";
import { ELabelAlignment } from "scichart/types/LabelAlignment";
const dataData=[
"2022-10-22 00:09:41",
"2022-10-22 00:19:37",
"2022-10-22 00:29:16",
"2022-10-22 00:38:51",
"2022-10-22 00:49:49",
"2022-10-22 00:59:37",
"2022-10-22 01:09:25",
"2022-10-22 01:19:26",
"2022-10-22 01:28:35",
"2022-10-22 01:38:47",
"2022-10-22 01:48:29",
"2022-10-22 01:58:30",
"2022-10-22 02:09:11",
"2022-10-22 02:18:45",
"2022-10-22 02:28:41",
"2022-10-22 02:38:38",
"2022-10-22 02:48:53",
"2022-10-22 02:59:39",
"2022-10-22 03:08:51",
"2022-10-22 03:19:00",
"2022-10-22 03:28:30",
"2022-10-22 03:38:51",
"2022-10-22 03:49:01",
"2022-10-22 03:58:35",
"2022-10-22 04:08:47",
"2022-10-22 04:19:11",
"2022-10-22 04:29:05",
"2022-10-22 04:38:39",
"2022-10-22 04:48:46",
"2022-10-22 04:58:57",
"2022-10-22 05:08:22",
"2022-10-22 05:18:30",
"2022-10-22 05:29:09",
"2022-10-22 05:38:56",
"2022-10-22 05:48:35",
"2022-10-22 05:58:34",
"2022-10-22 06:08:26",
"2022-10-22 06:18:58",
"2022-10-22 06:28:33",
"2022-10-22 06:38:56",
"2022-10-22 06:48:42",
"2022-10-22 06:58:55",
"2022-10-22 07:08:59",
"2022-10-22 07:19:03",
"2022-10-22 07:28:28",
"2022-10-22 07:38:18",
"2022-10-22 07:48:35",
"2022-10-22 07:58:18",
"2022-10-22 08:08:22",
"2022-10-22 08:18:43",
"2022-10-22 08:29:01",
"2022-10-22 08:38:59",
"2022-10-22 08:49:16",
"2022-10-22 08:59:13",
"2022-10-22 09:09:24",
"2022-10-22 09:18:36",
"2022-10-22 09:28:56",
"2022-10-22 09:39:13",
"2022-10-22 09:48:35",
"2022-10-22 09:59:14",
"2022-10-22 10:09:18",
"2022-10-22 10:19:04",
"2022-10-22 10:29:34",
"2022-10-22 10:39:14",
"2022-10-22 10:48:53",
"2022-10-22 10:58:40",
"2022-10-22 11:08:58",
"2022-10-22 11:18:47",
"2022-10-22 11:28:39",
"2022-10-22 11:39:13",
"2022-10-22 11:49:00",
"2022-10-22 11:59:13",
"2022-10-22 14:20:05",
"2022-10-22 14:29:37",
"2022-10-22 14:39:49",
"2022-10-22 14:49:41",
"2022-10-22 15:00:10",
"2022-10-22 15:09:27",
"2022-10-22 15:19:49",
"2022-10-22 15:29:41",
"2022-10-22 15:39:16",
"2022-10-22 15:49:48",
"2022-10-22 15:59:52",
"2022-10-22 16:09:29",
"2022-10-22 16:19:48",
"2022-10-22 16:29:40",
"2022-10-22 16:39:20",
"2022-10-22 16:49:57",
"2022-10-22 16:59:11",
"2022-10-22 17:09:37",
"2022-10-22 17:19:00",
"2022-10-22 17:29:21",
"2022-10-22 17:39:52",
"2022-10-22 17:49:44",
"2022-10-22 17:59:50",
"2022-10-22 18:09:38",
"2022-10-22 18:19:24",
"2022-10-22 18:29:13",
"2022-10-22 18:39:05",
"2022-10-22 18:49:09",
"2022-10-22 18:59:13",
"2022-10-22 19:09:17",
"2022-10-22 19:19:06",
"2022-10-22 19:29:37",
"2022-10-22 19:40:11",
"2022-10-22 19:49:33",
"2022-10-22 19:59:14",
"2022-10-22 20:09:07",
"2022-10-22 20:20:02",
"2022-10-22 20:29:19",
"2022-10-22 20:39:13",
"2022-10-22 20:49:43",
"2022-10-22 20:59:28",
"2022-10-22 21:08:59",
"2022-10-22 21:19:03",
"2022-10-22 21:29:14",
"2022-10-22 21:39:19",
"2022-10-22 21:49:40",
"2022-10-22 21:59:04",
"2022-10-22 22:09:33",
"2022-10-22 22:20:00",
"2022-10-22 22:30:25",
"2022-10-22 22:39:43",
"2022-10-22 22:49:13",
"2022-10-22 22:58:58",
"2022-10-22 23:09:05",
"2022-10-22 23:19:12",
"2022-10-22 23:29:49",
"2022-10-22 23:38:55",
"2022-10-22 23:49:41",
"2022-10-22 23:59:32",
"2022-10-23 00:08:34",
"2022-10-23 00:18:43",
"2022-10-23 00:29:20",
"2022-10-23 00:39:13",
"2022-10-23 00:48:30",
"2022-10-23 00:59:44",
"2022-10-23 01:08:49",
"2022-10-23 01:19:00",
"2022-10-23 01:29:22",
"2022-10-23 01:39:06",
"2022-10-23 01:49:08",
"2022-10-23 01:59:19",
"2022-10-23 02:09:28",
"2022-10-23 02:18:57",
"2022-10-23 02:28:53",
"2022-10-23 02:38:44",
"2022-10-23 02:49:12",
"2022-10-23 02:58:41",
"2022-10-23 03:09:04",
"2022-10-23 03:19:28",
"2022-10-23 03:29:23",
"2022-10-23 03:38:38",
"2022-10-23 03:49:00",
"2022-10-23 03:59:16",
"2022-10-23 04:09:13",
"2022-10-23 04:18:54",
"2022-10-23 04:29:43",
"2022-10-23 04:39:27",
"2022-10-23 04:49:12",
"2022-10-23 04:59:07",
"2022-10-23 05:09:04",
"2022-10-23 05:18:50",
"2022-10-23 05:29:20",
"2022-10-23 05:39:06",
"2022-10-23 05:49:17",
"2022-10-23 05:58:48",
"2022-10-23 06:08:46",
"2022-10-23 06:18:36",
"2022-10-23 06:29:15",
"2022-10-23 06:38:57",
"2022-10-23 06:49:23",
"2022-10-23 06:58:55",
"2022-10-23 07:09:06",
"2022-10-23 07:19:01",
"2022-10-23 07:29:09",
"2022-10-23 07:39:10",
"2022-10-23 07:49:06",
"2022-10-23 07:59:06",
"2022-10-23 08:09:07",
"2022-10-23 08:19:23",
"2022-10-24 14:19:20",
"2022-10-24 14:30:23",
"2022-10-25 11:10:12",
"2022-10-25 11:20:56",
"2022-10-28 19:19:35",
"2022-10-28 19:30:53",
"2022-10-28 19:49:34"
]
const divElementId = "scichart-root"
class MyMetadata {
static create(title, previousValue, isSelected) {
const md = new MyMetadata()
md.title = title
md.previousValue = previousValue ?? md.previousValue
md.isSelected = isSelected ?? md.isSelected
return md
}
isSelected = false
palettedStrokeRed = parseColorToUIntArgb("red")
palettedStrokeGreen = parseColorToUIntArgb("green")
constructor() {}
}
const tooltipDataTemplateRS = seriesInfo => {
const valuesWithLabels = []
// Line Series
const xySeriesInfo = seriesInfo
if (seriesInfo.pointMetadata) {
const testMd = seriesInfo.pointMetadata
valuesWithLabels.push(
testMd.title + " Previous: " + testMd.previousValue.toFixed(1)
)
}
valuesWithLabels.push(
"X: " + xySeriesInfo.formattedXValue + " Y: " + xySeriesInfo.formattedYValue
)
return valuesWithLabels
}
const color = "#368BC1"
const drawExample = async () => {
const { sciChartSurface, wasmContext } = await SciChartSurface.create(
divElementId
)
const xAxis = new CategoryAxis(wasmContext);
const labelProvider = new TextLabelProvider({
// When passed as an array, labels will be used in order
labels: dataData,
maxLength: 188
});
xAxis.labelProvider = labelProvider;
xAxis.labelStyle.alignment = ELabelAlignment.Center;
xAxis.labelStyle.padding = new Thickness(2,1,2,1);
xAxis.axisRenderer.hideOverlappingLabels = false;
xAxis.axisRenderer.keepLabelsWithinAxis = false;
sciChartSurface.xAxes.add(xAxis)
const yAxis = new NumericAxis(wasmContext)
sciChartSurface.yAxes.add(yAxis)
for (let seriesIndex = 0; seriesIndex < 5; seriesIndex++) {
const firstSeriesData = createDataSeries(wasmContext, seriesIndex, {
dataSeriesName: "Sinewave"+seriesIndex
})
const renderableSeries1 = new FastLineRenderableSeries(wasmContext, {
stroke: color,
strokeThickness: 3,
dataSeries: firstSeriesData,
pointMarker: new EllipsePointMarker(wasmContext, {
width: 5,
height: 5,
strokeThickness: 2,
fill: "white",
stroke: color
})
})
renderableSeries1.rolloverModifierProps.markerColor = color
renderableSeries1.rolloverModifierProps.tooltipColor = color
sciChartSurface.renderableSeries.add(renderableSeries1)
renderableSeries1.rolloverModifierProps.tooltipDataTemplate = tooltipDataTemplateRS
}
sciChartSurface.chartModifiers.add(new RolloverModifier())
sciChartSurface.chartModifiers.add(new ZoomPanModifier())
sciChartSurface.chartModifiers.add(new ZoomExtentsModifier())
sciChartSurface.chartModifiers.add(new MouseWheelZoomModifier())
sciChartSurface.zoomExtents()
return { sciChartSurface, wasmContext }
}
// Generate some data, including metadata
const createDataSeries = (wasmContext, index, options) => {
const sigma = Math.pow(0.6, index)
const dataSeries = new XyDataSeries(wasmContext, options)
let prev = 0
for (let i = 0; i < 188; i++) {
const grow = 1 + i / 99
const metadata =i > 0 ? MyMetadata.create("Metadata " + i.toString(), prev) : undefined
const y = Math.sin((Math.PI * i) / 15) * grow * sigma
// metadata is an optional parameter on all data manipulation methods on dataseries,
// so it can also be added as an array eg dataSeries.appendRange(xValues, yValues, metadataArray);
dataSeries.append(i+1, y, metadata)
prev = y
}
return dataSeries
}
drawExample()
- js scichart asked 1 year ago
- last edited 1 year ago
- You must login to post comments
OK I don’t know why but changing
xAxis = new CategoryAxis(wasmContext);
for
xAxis = new NumericAxis(wasmContext);
makes the example work file. I created a codesandbox here with the example code you have so that you can test it out.
Is there a reason why you need CategoryAxis?
My guess is that this is failing due to something you’ve done with the metadata in the example.
Best regards,
Andrew
- Andrew Burnett-Thompson answered 1 year ago
- You must login to post comments
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
- David Burleigh answered 1 year ago
- You must login to post comments
Please login first to submit.