Skip to main content
Version: 5.2.0

v4.0.0

[4.0.0] - 2023-02-06

Added

  • Added isThemeDark(Theme) function to check if selected theme is dark or light
    • Intended to be used on default library themes only, not custom user themes.
  • Added EngineSettings.pickingPrecision for modifying user interactions precision.
    • This should not be required in normal use cases, but exists just in case.
  • Added EngineSettings.interactable for disabling all user interactions.
    • This can be useful in server side rendering applications, or otherwise when user interactions are not needed.
  • Added new API ChartXY.setAutoCursorEnabledDuringAxisAnimation
    • Supported by ChartXY
    • Replaces functionality of removed APIs Chart.setMouseInteractionsWhileScrolling and Chart.setMouseInteractionsWhileZooming
  • Added Chart.getTitleSize method to get title size (width and height) in pixels
  • Added Dashboard.pixelScale property
  • Added ChartXY.setTitlePosition and Chart.setTitleMargin methods
  • Added setVisible and getVisible API to all visible elements.
    • This API can be used to hide an element from rendering but still keep updating it in the background.
  • Added onVisibleStateChanged / offVisibleStateChanged event listener to most elements that support setVisible.
    • This event will be triggered when the visibility of an element is actually changed.
  • Added Hideable interface.
    • This interface is implemented by everything that can be hidden with setVisible.
  • Added HideableEvents interface.
    • This interface is implemented by everything that has event listeners available for visibility state changes.
  • Added setAnimationHighlight and getAnimationHighlight methods to chart components.
  • AreaSeries and AreaRangeSeries now support emptyFill style
  • AreaSeries and AreaRangeSeries now support PalettedFill (x and y lookup properties)
  • regularColorSteps convenience function
  • Added SolidGauge.setIntervalLabelsFillStyle
  • Added onDispose and offDispose methods for all components that have dispose(). This event triggers whenever the object is disposed.
  • Added isDisposed() for Dashboard and all Chart types.
  • Added UIElementBuilders.AxisTickMinor type for CustomTick. This type has style of default minor tick
  • Added isLUTCheckBox
  • Added UILUTCheckBox.setLUTDisplayProportionalSteps
  • Added Axis.onStoppedStateChanged, Axis.offStoppedStateChanged
    • Event API for tracking when Axis scrolling/fitting is stopped and unstopped.
  • Added setInteractionMoveByDragging API to ConstantLine. Now ConstantLine interactions can be disabled without disabling entire mouse interactions
  • Added SeriesXY.setDrawOrder method.
    • This method can be used to explicitly configure drawing order of series in 1 chart.
  • Added common UI element API's to LegendBox
  • Chart3D event API for series background.
    • onSeriesBackgroundMouseEnter, etc.
  • Started tracking minimum required TypeScript version.
  • Added new API disableThemeEffects
    • New convenience API to easily disable the new glow and shadow effects from any given theme.
  • Dashboard.getCells
    • Returns all defined dashboard cells with content.
  • EngineSettings.textPixelSnappingEnabled
    • Can be used to toggle new text pixel snapping feature, which is enabled by default.
    • If you encounter issues with text "moving" or "bouncing" undesirably, consider testing with disabling this experimental flag.
  • Icon, IconProperties
    • Currently only supported by Data Grid.
  • Theme.legendTitleFont
  • Added GlowEffects
    • Controlled with Theme.effect
    • Individual component effects controlled with set...Effect methods
  • Added ImageFitMode.Tile
  • Added new Theme properties:
    • dataGridFont, dataGridTextFillStyle, dataGridCellStrokeStyle, dataGridBackgroundFillStyle
  • Added ValueGrid
    • New high level component type that can be placed in a Dashboard or used standalone.
    • Provides a variety of frontend and data visualization methods inside a grid layout.

Changed

  • Changed end user APIs that accepted rotations as radians to work with degrees instead:
    • Data point rotation property was previously interpreted as radian, now as degrees
  • ChartXY and Chart3D default interactions now also work over series, instead of just series background
  • Theme interface now requires isDark property.
    • For user defined Themes, you may set this to any value safely. It only interacts with isThemeDark convenience function.
  • Improved some default user interactions on trackpad
    • Affects: ChartXY zoom, Axis zoom, Chart3D zoom
    • Zooming now responds better according to user interaction behavior (small movement = small effect, etc.)
  • Changed Chart3D zoom animation to be smoother
  • Creating LightningChart component on user supplied DIV no longer overrides style.position if it was previously assigned by user
  • Renamed setHighlighted -> setHighlight and getHighlighted -> getHighlight
    • New method now accepts boolean or a number between 0 and 1, meaning that the intensity of highlighting can be configured instead of just being ON/OFF
    • getHighlighted() previously returned Boolean, now getHighlight() returns Number
  • Auto cursor now works when mouse is over a series with mouse interactions enabled.
    • Previously this required user to disable mouse interactions with series.setMouseInteractions(false)
  • onHighlight parameter can now be number or boolean. Previously it was always boolean.
  • Changed AutoCursor default behavior.
    • AutoCursor is no longer disabled during Axis Animations (zooming, scrolling) by default
    • To restore this behavior, use ChartXY.setAutoCursorEnabledDuringAxisAnimation(false)
  • Following components default mouse interactions enabled state changes from false to true:
    • LineSeries, HeatmapSeries, all 3D series
    • This will not affect performance in any way. By default this will result in these series highlighting when interacted above.
    • To disable this, use setHighlightOnHover(false)
  • Now axis interactions area expands when axis nibs are disabled.
    • Axis nibs can be disabled with axis.setNibInteractionScaleByDragging(false).setNibInteractionScaleByWheeling(false)
  • Removed LineStyle.thickness, please use LineStyle.getThickness() instead.
  • forEachAxis method now returns this instead of void
  • UICheckBox 'switch' event is no longer triggered when setOn() is called and the state is actually unchanged.
  • Component highlighting is now animated by default.
    • Animation can be disabled with setAnimationHighlight(false)
  • Changed look of LightningChart JS logo that is visible when not using a license.
  • highlighting doesn't touch the alpha channel anymore
  • Changed LegendBoxAddOptions.disposeOnClick to toggleVisibilityOnClick.
    • Functionality is also changed to use setVisible internally, rather than dispose
  • Disposing a component can no longer be reverted.
    • dispose() now permanently removes the component.
    • To temporarily hide a component, use setVisible(false) instead
  • Changed default cursor result table formatter of most series types.
    • Use series.setCursorResultTableFormatter method to alter this behavior.
  • Changed default CustomTick type from UIElementBuilders.PointableTextBox to UIElementBuilders.AxisTickMajor
  • Renamed NewSurfaceGridSeries3D -> SurfaceGridSeries3D, NewSurfaceGridSeries3DOptions -> SurfaceGridSeries3DOptions
  • Changed LegendBox LUTs to not display relative distances between step values. This was done to improve use of space and avoid overlapping labels in cases where LUT steps deltas increase exponentially.
    • The previous display behavior can be restored with UILUTCheckBox.setLUTDisplayProportionalSteps method
  • LegendBoxes are now not draggable by default.
    • To revert to previous behavior add legend.setDraggingMode(UIDraggingModes.draggable) after LB is created.
  • Renamed Axis.isStopped to Axis.getStopped
  • Slightly altered behavior of Axis.setInterval 4th parameter disableScrolling
    • Renamed to stopAxisAfter
    • Before, the method released the Axis unless the disableScrolling = true
    • Now, the method stops the Axis unless stopAxisAfter = false
    • Essentially very similar behavior, but now works a little bit more logically. Usage should not be affected by this change
  • Axis API 'onScaleChange' was changed to 'onIntervalChange' and accepts a callback function with 3 parameters that return axis itself, start and end values
    • Previous event accepted only 2 parameters, start and end
  • Wrapped parameters of Axis.setInterval method in an object
    • Previous use: Axis.setInterval(start, end) -> Axis.setInterval({ start, end })
    • Parameter disableScrolling was renamed to stopAxisAfter and has a 'true' value by default
  • Library now targets ES6 version instead of ES5.
  • Previously optional Theme properties are no longer optional.
    • uiTickFont
    • uiTickStrokeStyle
    • uiTickTextFillStyle
    • uiPointableTextBoxFont
    • uiPointableTextBoxStrokeStyle
    • uiPointableTextBoxTextFillStyle
    • uiPointableTextBoxFillStyle
    • lcjsBackgroundFillStyle
    • lcjsBackgroundStrokeStyle
    • heatmapGridSeriesFillStyle
    • heatmapGridSeriesWireframeStyle
    • surfaceSeriesWireframeStyle
    • resultTableTextFont
    • polarAreaSeriesStrokeStyle
    • polarAreaSeriesFillStyle
  • Loosened types of LineStyle and emptyLine. This should not cause any issues with existing applications, but should make it easier to use the library with type safety.
  • ImageFill.sourceMissingColor default value changed from opaque black to completely transparent black.
  • Slightly tweaked default legend, checkbox and lut checkbox style and layout.
  • Changed UI layout behavior (UIElementColumn/UIElementRow)
    • Before layout was "center oriented", its members were aligned around the entire layouts center.
    • Now, members are aligned to the start of layout (top for Row and left for Column). This should feel more logical than before.

Removed

  • Removed all highlight style methods. This removes the ability to apply different style of highlighted components (all highlighted components now behave the same, always). To change highlighted style differently, change component style in event handlers.
    • setSplitterStyleHighlight
    • getSplitterStyleHighlight
    • setStrokeStyleHighlight
    • getStrokeStyleHighlight
    • setLineStyleHighlight
    • getLineStyleHighlight
    • setPointStyleHighlight
    • getPointStyleHighlight
    • setPointFillStyleHighlight
    • getPointFillStyleHighlight
    • setFillStyleHighlighted(PolarSector)
    • getFillStyleHighlighted(PolarSector)
    • setFillStyleHighlight
    • getFillStyleHighlight
    • setBodyFillStyleHighlight
    • getBodyFillStyleHighlight
    • setMedianStrokeStyleHighlight
    • getMedianStrokeStyleHighlight
    • setBodyStrokeStyleHighlight
    • getBodyStrokeStyleHighlight
    • setHighFillStyleHighlight
    • setLowFillStyleHighlight
    • setHighStrokeStyleHighlight
    • setLowStrokeStyleHighlight
    • setPositiveFillStyleHighlight
    • getPositiveFillStyleHighlight
    • setNegativeFillStyleHighlight
    • getNegativeFillStyleHighlight
    • setPositiveStrokeStyleHighlight
    • getPositiveStrokeStyleHighlight
    • setNegativeStrokeStyleHighlight
    • getNegativeStrokeStyleHighlight
    • createDefaultHighlightStyle
    • getDefaultHighlightStyle
  • Removed Series.solveNearestFromSegment, use solveNearestFromScreen instead
  • Removed Series.onHover, Series.offHover
  • Removed Chart.setMouseInteractionsWhileScrolling
    • Use ChartXY.setAutoCursorEnabledDuringAxisAnimation instead
  • Removed Chart.setMouseInteractionsWhileZooming
    • Use ChartXY.setAutoCursorEnabledDuringAxisAnimation instead
  • Removed Chart.setTitleMarginTop, Chart.setTitleMarginBottom and respective getters.
    • Use Chart.setTitleMargin instead.
  • Removed all restore() methods
    • To show temporarily hidden components, use setVisible(true)
  • Removed all getDisposed() methods.
    • Disposing a component can no longer be reverted. If a component is disposed by user, then that component should no longer be interacted with in any way.
  • Removed several built-in Themes.
  • Removed some custom theme utilities included in library
    • Types: CustomFillStyle, CustomLineStyle, CustomStyle
    • customTheme, customSimpleTheme, customComplexTheme
  • Removed SpiderSeries.setDisposeAnimation()
    • Replaced with setVisibleStateChangedAnimation
  • Removed Axis.stop()
    • Replaced with Axis.setStopped(true)
  • Removed Axis.release()
    • Replaced with Axis.setStopped(false)
  • Removed type UILegendBox
    • Should be replaced as just LegendBox
  • Removed ability to specify Theme when adding a component to Dashboard.
    • Theme must be specified when creating the Dashboard and thus must also be same for all components inside the Dashboard.
  • Old themes.
    • dark
    • light
    • darkGradient
    • lightGradient
    • auroraBorealis
    • sunset
    • blueSciFi
    • monochrome
    • lavender
    • lavenderGradient
    • classic
    • night
    • raspberry
    • lipstick
    • green
    • lightGreen
    • red
    • lightRed
    • purple
    • lightPurple
    • rainbow
  • Chart.disableAnimations() method. Use Chart.setAnimationsEnabled(false) instead.
  • ChartXY.addHeatmapSeries
    • Use ChartXY.addHeatmapGridSeries or ChartXY.addHeatmapScrollingGridSeries instead.
    • Heatmap Mesh type is temporarily removed and is planned to be reintroduced in future. If you require this feature, please contact us and let us know your use case so that we can provide possible alternative methods or timeline on when this is reintroduced.
  • ZoomBandChart.attachedAxis
    • Use ZoomBandChart.attachedAxes instead.
  • HeatmapGridSeries.setPixelInterpolationMode
    • Use HeatmapGridSeries.setIntensityInterpolation instead
  • Chart3D.addSurfaceMeshSeries
    • 3D Surface Mesh Series is temporarily removed and is planned to be reintroduced in future. If you require this feature, please contact us and let us know your use case so that we can provide possible alternative methods or timeline when this is reintroduced.
  • Axis.getHeight()
  • Dashboard.mapCharts and Dashboard.forEachChart
    • Use Dashboard.getCells and filter for Chart instances to replace these methods.
  • Renamed axis event handlers.
    • onAxisAreaMouseDragStart
    • onAxisAreaMouseDrag
    • onAxisAreaMouseDragStop
    • onAxisInteractionAreaMouseTouchStart
    • onAxisInteractionAreaMouseTouch
    • onAxisInteractionAreaMouseTouchStop
    • offAxisInteractionAreaMouseTouchStart
    • offAxisInteractionAreaMouseTouch
    • offAxisInteractionAreaMouseTouchStop
  • 3D Line Style methods.
    • LineSeries3D.setLineStyle
    • LineSeries3D.getLineStyle
    • PointLineSeries3D.setLineStyle
  • Chart3D.addSurfaceSeries
    • Use Chart3D.addSurfaceGridSeries or Chart3D.addSurfaceScrollingGridSeries instead.
    • Surface Mesh type is temporarily removed and is planned to be reintroduced in future. If you require this feature, please contact us and let us know your use case so that we can provide possible alternative methods or timeline on when this is reintroduced.
  • Removed deprecated Theme properties.
    • `dashboardBackgroundFillStyle
    • `dashboardBackgroundStrokeStyle
    • `axisLabelFillStyle
    • `axisLabelFont
    • `customTickMarkerFillStyle
    • `customTickMarkerTextFillStyle
    • `customTickMarkerStrokeStyle
    • `customTickMarkerFont
    • `seriesStrokeStyle3D
    • `seriesTriangulatedPointStyle3D
    • `seriesNonTriangulatedPointStyle3D
    • `OHLCBarPositiveHighlightStyle
    • `OHLCBarNegativeHighlightStyle
    • `candleStickStyleHighlight
    • `candleStickPositiveStyleHighlight
    • `candleStickPositiveStrokeStyleHighlight
    • `candleStickNegativeStyleHighlight
    • `candleStickNegativeStrokeStyleHighlight
    • `pointMarkerHorizontalGridStrokeStyle
    • `pointMarkerVerticalGridStrokeStyle
    • `pointMarkerTextFillStyle
  • Axis.setTickStyle Use Axis.setTickStrategy instead.
  • Series.setMaxPointCount, Series.getMaxPointCount
    • Use Series.setDataCleaning instead.
  • setDataCleaningThreshold
    • Use setDataCleaning instead.
  • LUTOptions.valueRangeMin and LUTOptions.valueRangeMax
  • Removed HighlightModes and setHighlightMode methods
    • Usually should use setHighlightOnHover instead
    • Previous use of onHoverIndividual option is no longer supported. Instead, components should be separated into different series or custom events should be used.

Fixed

  • Fixed FigureSeries mouse drag stop event receiving wrong parameters
  • Fixed Chart3D zoom animation being more sensitive with low FPS
  • Crash when invalid point shape was provided.
  • Fixed PointLineSeries3D point style wireframe option not working.
  • Fixed SurfaceGridSeries3D wireframe being invisible when thickness < 0
  • Fixed ConstantLine RadialGradient when thickness = 1
  • Fixed PointSeries3D wireframe being invisible when thickness is < 0
  • Fixed visual error when trying to add entry to a disposed legend box.
  • Fixed Candlesticks being invisible when close is equal to open
  • Fixed LegendBox.setEntries() affecting all LegendBoxes instead of just one.
  • Fixed ChartXY fitting rectangle sometimes looking like zooming rectangle (no crosses)
  • Fixed ticklines and gridlines being hidden if label fill style is set to emptyFill
  • Fixed crash when using Surface 3D Series on some mobile devices.
  • Fixed StepSeries cursor picking on non-real data points some times.
  • Fixed Numeric ticks performance issue that sometimes occured when axis interval is less than 1.
  • Fixed PointLineSeries3D crash when points are styled as PalettedFill but stroke not.
  • Fixed PointSeries3D crash with emptyFill but visible wireframe
  • Fixed Line series some data points not being solvable by cursor when using data gaps
  • Fixed crash when creating zoom band chart on an Axis that contained an area series
  • Fixed MapChart incorrect PalettedFill color interpolation when interpolation disabled
  • Fixed SolidGauge.setDataLabelFillStyle also affecting interval labels fill style
  • Fixed hiding components using LegendBox sometimes changing render order of components.
  • Fixed visibility rendering issue in spline series
  • Fixed LineSeries -1 thickness resulting in axis regions shrinking and possibly partly clipping lines
    -   1 thickness can be used for most optimal line rendering mode, especially useful for low end devices.
  • Fixed synchronizeAxisIntervals sometimes stopping scrolling if 1 of many series are hidden via LegendBox.
  • Fixed application crash in a specific scenario when RectangleFigure style is changed to emptyFill during run-time
  • Fixed GaugeChart animations sometimes doing quirky unanimated jumps when value is changed more rapidly than animation finishes.
  • Fixed mouse enter and leave events sometimes being fired in wrong order when moving mouse between two objects
    • Correct order is always LEAVE, ENTER
  • Fixed performance issue when ZBC is used with large line chart (over 1 million data points).
  • Fixed rendering line shapes after styling visible style to empty style and then to SolidLine
  • Fixed issues with gradient fill during streaming data in LineSeries
  • Fixed AreaSeriesBipolar wrong rendering sometimes when data crosses over baseline.
  • Fixed console warning: "Canvas2D: Multiple readback operations using getImageData are faster with the willReadFrequently attribute set to true."
  • Fixed UICircle background sometimes not rendering properly when chart viewport changes.
  • Fixed MapChart Turkey having incorrect ISO_A3 code
  • Fixed chart mouse interactions and coordinate translation messing up if chart is scrolled in a non-body div that is also not the charts container.
    • This fix does not work out of the box. In this kind of use case, you'll have to inform the chart when it is scrolled with chart.engine.layout()
  • Fixed ChartXY rectangle zoom/fit sometimes failing randomly (not doing anything)
  • Fixed chart flickering sometimes when resizing
  • Fixed occasional crash / memory leak issue related to use of ZoomBandChart.dispose
  • Fixed some warnings not being disabled by warnings LCJS option.
    • "Uint8ClampedArray is not supported as texture data..."
    • "WebGL extensions could not be loaded..."
  • Fixed Axis interaction events not triggered if the default interaction is disabled.
    • This effectively prevented defining custom interactions over Axis.
  • Fixed series with auto scrolling disabled still affecting axis regions.
  • Fixed Axis.setChartInteractionZoomByWheel(false) not working
  • Fixed massive performance issue with LineSeries3D and PointLineSeries3D
    • Introduced in v3.4.0
  • Fixed logarithmic minor ticks hidden when no major tick is visible
  • Fixed AutoCursor sometimes being below UI elements
  • Fixed incorrect LUT color lookup in some specific use cases
    • Map, Funnel, Gauge, Pie, Pyramid when LUT with interpolation disabled is used.

Deprecated

  • LightningChart JS no longer officially supports Internet Explorer 11.