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
andChart.setMouseInteractionsWhileZooming
- Added
Chart.getTitleSize
method to get title size (width and height) in pixels - Added Dashboard.pixelScale property
- Added
ChartXY.setTitlePosition
andChart.setTitleMargin
methods - Added
setVisible
andgetVisible
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 supportsetVisible
.- 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
.
- This interface is implemented by everything that can be hidden with
- Added
HideableEvents
interface.- This interface is implemented by everything that has event listeners available for visibility state changes.
- Added
setAnimationHighlight
andgetAnimationHighlight
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
andoffDispose
methods for all components that havedispose()
. 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.
- This information is available in API documentation https://lightningchart.com/js-charts/api-documentation
- Currently minimum TypeScript version is 4.1
- 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
- Controlled with
- 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
- Data point
- 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.
- For user defined Themes, you may set this to any value safely. It only interacts with
- 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
andgetHighlighted
->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, nowgetHighlight()
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)
- Previously this required user to disable mouse interactions with
onHighlight
parameter can now benumber
orboolean
. Previously it was alwaysboolean
.- 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)
- Axis nibs can be disabled with
- Removed
LineStyle.thickness
, please useLineStyle.getThickness()
instead. forEachAxis
method now returnsthis
instead ofvoid
- 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)
- Animation can be disabled with
- 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
totoggleVisibilityOnClick
.- 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.
- Use
- Changed default CustomTick type from
UIElementBuilders.PointableTextBox
toUIElementBuilders.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
- The previous display behavior can be restored with
- LegendBoxes are now not draggable by default.
- To revert to previous behavior add
legend.setDraggingMode(UIDraggingModes.draggable)
after LB is created.
- To revert to previous behavior add
- Renamed
Axis.isStopped
toAxis.getStopped
- Slightly altered behavior of
Axis.setInterval
4th parameterdisableScrolling
- 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
- Renamed to
- 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 tostopAxisAfter
and has a 'true' value by default
- Previous use:
- 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
andemptyLine
. 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
, usesolveNearestFromScreen
instead - Removed
Series.onHover
,Series.offHover
- Removed
Chart.setMouseInteractionsWhileScrolling
- Use
ChartXY.setAutoCursorEnabledDuringAxisAnimation
instead
- Use
- Removed
Chart.setMouseInteractionsWhileZooming
- Use
ChartXY.setAutoCursorEnabledDuringAxisAnimation
instead
- Use
- Removed Chart.setTitleMarginTop, Chart.setTitleMarginBottom and respective getters.
- Use Chart.setTitleMargin instead.
- Removed all
restore()
methods- To show temporarily hidden components, use
setVisible(true)
- To show temporarily hidden components, use
- 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
- Replaced with
- Removed
Axis.stop()
- Replaced with
Axis.setStopped(true)
- Replaced with
- Removed
Axis.release()
- Replaced with
Axis.setStopped(false)
- Replaced with
- Removed type
UILegendBox
- Should be replaced as just
LegendBox
- Should be replaced as just
- 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. UseChart.setAnimationsEnabled(false)
instead.ChartXY.addHeatmapSeries
- Use
ChartXY.addHeatmapGridSeries
orChartXY.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.
- Use
ZoomBandChart.attachedAxis
- Use
ZoomBandChart.attachedAxes
instead.
- Use
HeatmapGridSeries.setPixelInterpolationMode
- Use
HeatmapGridSeries.setIntensityInterpolation
instead
- Use
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
andDashboard.forEachChart
- Use
Dashboard.getCells
and filter forChart
instances to replace these methods.
- Use
- 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
orChart3D.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.
- Use
- 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
UseAxis.setTickStrategy
instead.Series.setMaxPointCount
,Series.getMaxPointCount
- Use
Series.setDataCleaning
instead.
- Use
setDataCleaningThreshold
- Use
setDataCleaning
instead.
- Use
LUTOptions.valueRangeMin
andLUTOptions.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 stylewireframe
option not working. - Fixed
SurfaceGridSeries3D
wireframe being invisible whenthickness
< 0 - Fixed ConstantLine RadialGradient when thickness = 1
- Fixed
PointSeries3D
wireframe being invisible whenthickness
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()
- 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
- 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.