J2CL and GWT Charts library based on CHART.JS

Overview

Charba - J2CL and GWT Charts library based on CHART.JS

Last release Mvn repo release License Build Sonar cloud status Lines of Code Chart.js awesome Last javadoc version Next javadoc version Documentation

What's Charba

GWT Web toolkit doesn't have charting library available out of the box.

There are some open source charting libraries for GWT available to be used but with some constraints or unclear items:

  • internet connection needed
  • open source license not completely clear, sometimes with some obligations like to add specific labels
  • old packages not longer maintained

For all these reasons, Charba has been developed, leveraging on Chart.JS capabilities which are now available to GWT developers.

Not only GWT

Even if Charba was born only as GWT chart library, as of version 3, Charba has been changed in order to be used not only in GWT but also with other DOM frameworks, based on J2CL - JavaToClosure, like Google Elemental2 or Elemento.

Charba has got an own DOM manager which allows to it to be independent from any other DOM frameworks (i.e. GWT, Elemental2 or Elemento) but it is providing a set of hooks in order to use it also over those frameworks.

CharbaDiagram

Building

To build Charba, you can check out the project and to run Ant build.xml.

The Ant build.xml is able to build the 2 artifacts, related to the 2 distributions available.

The first distribution is a Charba file without any GWT dependency (but working on GWT anyway), consumable also in other J2CL - JavaToClosure frameworks, like Google Elemental2 and Elemento.

To build the project, execute buildBinary target.

It creates a charba-[version.release].jar file in dist folder, ready to be included in your project.

The second distribution is a Charba file with a hard GWT dependency which contains charts widgets and code splitting capabilities.

To build the project, execute buildBinaryGwt target.

It creates a charba-[version.release]-gwt.jar file in dist folder, ready to be included in your project.

Charba

Installation

Currently Charba is available on MVN repository.

It is available also on GitHub releases.

If you are using Apache Maven:

<dependency>
    <groupId>org.pepstock</groupId>
    <artifactId>charba</artifactId>
    <version>5.0</version>
    <!-- for GWT -->
    <version>5.0-gwt</version>
</dependency>

If you are using Apache Ivy:

<dependency org="org.pepstock" name="charba" rev="5.0"/>
<!-- for GWT -->
<dependency org="org.pepstock" name="charba" rev="5.0-gwt"/>

To install in your GWT project, both for GWT and for J2CL artifacts, you must the following configuration in your GWT project module configuration:

...
    <inherits name="org.pepstock.charba.Charba"/>
...

Charba is based on JSINTEROP method to integrate java script objects.

As the name suggests, JsInterop is a way of interoperating Java with JavaScript. It offers a better way of communication between the two using annotations instead of having to write java script in your classes (using JSNI).

Gallery

Bar Horizontal bar Line Vertical line
Scatter Doughnut Pie Polar area
Radar Bubble Time series Stacked
Meter Gauge Choropleth Bubble map
Area Treemap Matrix Sankey

Documentation

Charba documentation is published here.

All Charba documentation will be maintained in Charba-Wiki project.

API JavaDoc for version 5.0 is published here.

You can also access the previous API JavaDoc, because every version is published to https://pepstock-org.github.io/Charba/[version.release].

The API JavaDoc of the master branch is published here.

Showcase

See Charba showcase on GWT to have a look what you can do with it.

See also Charba showcase GWT source code on GitHub as starting point, if you are going to use on GWT.

See Charba showcase built by J2CL and based on Google Elemental2, to have a look what you can do with it.

See also Charba showcase J2CL source code on GitHub as starting point, if you are going to use on J2CL.

The samples are going to reflect what CHART.JS samples are showing here.

Continuous integration and quality gate

Charba is continuously built at every commit and merge in master by GitHub Action.

At every build, Charba is also checked by Sonar.io in order to have the pulse of its quality.

Going to next release

Here you can find the list of enhancements and updates available on master branch before which will be part of new official release:

Breaking changes

  • change PointStyleCallback class, adding context as generic.
  • remove xPadding and yPadding options from LineLabel options. Use padding instead.

Features

  • import CHART.JS version v3.6.2.
  • import CHART.JS TREEMAP controller version v2.0.1.
  • import CHART.JS MATRIX controller version v1.1.1.
  • import CHART.JS ANNOTATION plugin version v1.2.1.
  • import LUXON library version v2.2.0.
  • add clip property to annotation options.
  • add pointStyle, rotation, xAdjust and yAdjust properties to PointAnnotation options.
  • add new PolygonAnnotation class in order to draw a polygon.
  • add new LabelAnnotation class in order to draw a content (text, image or canvas) on the chart.
  • add point positioning by box options for PointAnnotation class.
  • add label options to BoxAnnotation class.
  • enable to set a content by Canvas instance to LineLabel options.
  • enable to set the position of the LineLabel options as percentage of the line dimension.

License

Charba is available under the Apache 2.0 license.

Comments
  • Integration of the patternomaly plugin

    Integration of the patternomaly plugin

    https://github.com/ashiguruma/patternomaly

    Is it possible to use this plugin in Charba ? Or can it maybe be integrated in a future release of Charba ?

    enhancement 
    opened by FrankW76 37
  • Using existing ChartJS plugins

    Using existing ChartJS plugins

    I'm trying to update Charba from version 2.0 to 2.5.

    I was previously using the existing chartjs annotations plugin (https://github.com/chartjs/chartjs-plugin-annotation) as described at the bottom of this page: https://github.com/pepstock-org/Charba/wiki/Plugins,

    This worked perfectly in 2.0, but in 2.5 I can no longer get it working. I do not get anny errors, but the plugin just no longer seems to load. See below for the code I have changed. Is there anything I might have forgotten? Also, is the documentation at the bottom of https://github.com/pepstock-org/Charba/wiki/Plugins still correct? Since, for example, Injector.ensureInjected() (without arguments) no longer seems to exist, while the docs still reference it.

    For version 2.5, I have changed the following code:

    Injector.ensureInjected();
    Injector.ensureInjected(Resources.INSTANCE.chartJsAnnotationSource());
    

    to

    ResourcesType.setClientBundle(EmbeddedResources.INSTANCE);
    Injector.ensureInjected(ResourcesType.getClientBundle().chartJs());
    Injector.ensureInjected(ResourcesType.getClientBundle().charbaHelper());
     Injector.ensureInjected(Resources.INSTANCE.chartJsAnnotationSource());
    

    Also, I used to include my options as follows:

    chart.getOptions().merge(new PlacementTaskAnnotationOptions(initialValue), ChartJsAnnotationOptions.ID);
    

    which I have changed to

    chart.getOptions().getPlugins().setOptions(ChartJsAnnotationOptions.ID, new PlacementTaskAnnotationOptions(initialValue));
    

    Finally, the way in which I define properties has been changed, for example from:

        private enum Property implements Key {
            drawTime,
            events,
            dblClickSpeed,
            annotations
        }
    

    to

        private enum Property implements Key {
            DRAW_TIME("drawTime"),
            EVENTS("events"),
            DBL_CLICK_SPEED("dblClickSpeed"),
            ANNOTATIONS("annotations");
    
            // name value of property
            private final String value;
    
            /**
             * Creates with the property value to use into native object.
             *
             * @param value value of property name
             */
            private Property(String value) {
                this.value = value;
            }
    
            /*
             * (non-Javadoc)
             *
             * @see org.pepstock.charba.client.commons.Key#value()
             */
            @Override
            public String value() {
                return value;
            }
        }
    
    enhancement 
    opened by niekvanderkooy 31
  • It's possible to have html instead string label

    It's possible to have html instead string label

    Hi, I would like replace Label String by Icon with this code HTML ('<p class="lead"><span class="flag-icon flag-icon-" + natioCountryCountry.getAlpha2() + "">

    ), it's possible ?

    image

    question 
    opened by nseb 25
  • trying to use charba in GWT Elemento

    trying to use charba in GWT Elemento

    Hi I am trying to use charba in GWT Elemento , https://github.com/hal/elemento

    but they are not using widgets , where as charba is working lke this

    BarChart chart = new BarChart();

    is there a way i can get element to use in elemento and no the widget

    question 
    opened by junaidp 20
  • Duplicate Class Names

    Duplicate Class Names

    In certain build environments, a Java error is thrown with regards to duplicate classes when using Charba.

    The error typically looks like: error: duplicate class: org.pepstock.charba.client.options.Scales

    Followed by (pointing to the other duplicate class): error: cannot access Scales

    An example of such classes are the Point class in org.pepstock.charba.client.options.Point and org.pepstock.charba.positioner.Point.

    Renaming (and refactoring) these classes (at least one of the duplicates) fixes the problem:

    • Legend
    • Point
    • Plugins
    • Scales
    opened by elatoskinas 18
  • Support for floating bar chart

    Support for floating bar chart

    Since Charts.js 2.9.0 it is possible to use floating bar charts. So you can use data points like [yStart, yEnd]. yStart defines the start point of the bar (instead of 0) and yEnd the end point accordingly. Is it possible to use these kind of datapoints in charba?

    see https://github.com/chartjs/Chart.js/pull/6056

    enhancement 
    opened by rr22x 17
  • How to load org.pepstock.charba.client.resources(containing .js) after gwt codesplit

    How to load org.pepstock.charba.client.resources(containing .js) after gwt codesplit

    I have a linechart loading after GWT.runAsync(new RunAsyncCallback() But GWT Compile report indicates bulk of chart.js resources >200kB are loaded with initial pageload. Is there a way to remedy this or am I missing something?

    enhancement 
    opened by peet-hex 16
  • TickCallback with CartesianTimeTick

    TickCallback with CartesianTimeTick

    Hi,

    I'd like to apply custom formatting for ticks on a CartesianTimeAxis. The signature of the Callback says it will give me a double value, but when I print it to the web console it looks like a formatted date value:

    Here is my code in the tick callback

        ticks.setCallback((axis, v, i, list) -> {
          DebugLogger.debugLog("axis={}", axis);
          DebugLogger.debugLog("v={} i={}, list={}", v, i, list);
    
          return dateLabels.get(i).toString();
        });
    

    This gives

    XXXClient-0.js:408989 axis=org.pepstock.charba.client.configuration.CartesianTimeAxis@31c1
    log_35_g$ @ XXXClient-0.js:408989
    XXXClient-0.js:408989 v=Sep 18 i=7, list=[array=[{"value":1565733600000,"major":false},{"value":1566165600000,"major":false},{"value":1566597600000,"major":false},{"value":1567029600000,"major":false},{"value":1567461600000,"major":false},{"value":1567893600000,"major":false},{"value":1568325600000,"major":false},{"value":1568757600000,"major":false},{"value":1569189600000,"major":false},{"value":1569621600000,"major":false},{"value":1570053600000,"major":false}]]
    

    Why is a double (v) printed as Sep 18?

    bug enhancement 
    opened by ak80 15
  • Add labels to piechart

    Add labels to piechart

    Firstly thanks for this project! I relate to the reasons for starting it...

    On to the labels issue... I tried to use the java plugin code to render labels on a piechart using this bar chart example: https://github.com/pepstock-org/Charba-Showcase/blob/master/src/org/pepstock/charba/showcase/client/samples/VerticalBarPluginLabelView.java

    But for pie chart, x and y is always the same value, and I can't find a way to figure out how the arcs are going to place it differently with that plugin.

    This seems to be a common question for chart.js and there is an external plugin for this: https://github.com/emn178/Chart.PieceLabel.js/

    Demo here will illustrate: https://emn178.github.io/Chart.PieceLabel.js/samples/demo/

    My jsinterop knowledge is rather limited, and so maybe you can give an example of how one would integrate an external javascript plugin?

    Or maybe you have a simple java way you can think of for doing this?

    enhancement 
    opened by ruzkant 15
  • GWT compilation error with Charba 5.6-gwt

    GWT compilation error with Charba 5.6-gwt

    hi,

    I'm getting the following error when I try to upgrade to charba 5.6-gwt:

    [INFO] [ERROR] Unexpected internal compiler error
    [INFO] java.lang.ArrayIndexOutOfBoundsException: Index 1149 out of bounds for length 1149
    [INFO] 	at org.objectweb.asm.ClassReader.readUnsignedShort(ClassReader.java:3596)
    [INFO] 	at org.objectweb.asm.ClassReader.readUTF8(ClassReader.java:3652)
    [INFO] 	at org.objectweb.asm.ClassReader.readElementValues(ClassReader.java:2991)
    [INFO] 	at org.objectweb.asm.ClassReader.accept(ClassReader.java:608)
    [INFO] 	at org.objectweb.asm.ClassReader.accept(ClassReader.java:424)
    [INFO] 	at com.google.gwt.dev.javac.BytecodeSignatureMaker.visitCompileDependenciesInBytecode(BytecodeSignatureMaker.java:228)
    [INFO] 	at com.google.gwt.dev.javac.BytecodeSignatureMaker.getCompileDependencySignature(BytecodeSignatureMaker.java:209)
    [INFO] 	at com.google.gwt.dev.javac.CompiledClass.getSignatureHash(CompiledClass.java:166)
    [INFO] 	at com.google.gwt.dev.javac.Dependencies$Ref.<init>(Dependencies.java:41)
    [INFO] 	at com.google.gwt.dev.javac.Dependencies$Ref.<init>(Dependencies.java:36)
    [INFO] 	at com.google.gwt.dev.javac.Dependencies.resolve(Dependencies.java:100)
    [INFO] 	at com.google.gwt.dev.javac.CompilationStateBuilder$CompileMoreLater.compile(CompilationStateBuilder.java:349)
    [INFO] 	at com.google.gwt.dev.javac.CompilationStateBuilder.doBuildFrom(CompilationStateBuilder.java:532)
    [INFO] 	at com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:464)
    [INFO] 	at com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:423)
    [INFO] 	at com.google.gwt.dev.Precompile.precompile(Precompile.java:210)
    [INFO] 	at com.google.gwt.dev.Precompile.precompile(Precompile.java:190)
    [INFO] 	at com.google.gwt.dev.Precompile.precompile(Precompile.java:131)
    [INFO] 	at com.google.gwt.dev.Compiler.compile(Compiler.java:192)
    [INFO] 	at com.google.gwt.dev.Compiler.compile(Compiler.java:143)
    [INFO] 	at com.google.gwt.dev.Compiler.compile(Compiler.java:132)
    [INFO] 	at com.google.gwt.dev.Compiler$1.run(Compiler.java:110)
    [INFO] 	at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:55)
    [INFO] 	at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:50)
    [INFO] 	at com.google.gwt.dev.Compiler.main(Compiler.java:113)
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    

    It's a quite obscure GWT error, but I managed to get a breakpoint in GWT when it occurs, and it appears to happen when reading the JsType annotation of your NativeUIEvent class for any strange reason:

    @JsType(isNative = true, name = NativeName.DOM_UI_EVENT, namespace = JsPackage.GLOBAL)
    public abstract class NativeUIEvent extends NativeBaseEvent { ... }
    

    Can you please let me know if you manage to reproduce this error?

    help wanted 
    opened by salmonb 14
  •  Resource js/chartjs-plugin-datalabels.min.js missing from release files

    Resource js/chartjs-plugin-datalabels.min.js missing from release files

    Using the Zip file of the releases (2.5, 2.4, 2.3) all compile with the error: Resource js/chartjs-plugin-datalabels.min.js not found.

    Looking in the 2.1 release .zip file in the Charba-2.1/src/org/pepstock/charba/client/resources/js directory contains: charba.helper.js chart.bundle.min.js chartjs-plugin-labels.min.js charba.helper.min.js chartjs-plugin-datalabels.min.js

    Looking in the 2.5 release .zip file the same folder has: charba.helper.js chartjs-plugin-labels.js

    enhancement 
    opened by jake1164 13
Releases(6.0)
  • 6.0(Dec 27, 2022)

    6.0 is the last stable release.

    Documentation: https://pepstock-org.github.io/Charba-Wiki. API JavaDoc: https://pepstock-org.github.io/Charba/6.0. Showcase GWT: https://pepstock-org.github.io/Charba-Showcase. Showcase J2CL: https://pepstock-org.github.io/Charba-Showcase-J2CL.

    Breaking changes

    • remove stepSize option from Time configuration and options class. Use stepSize option in the Ticks configuration and options.
    • remove drawBorder option from Grid configuration and options. Use display option in the border object in the axes or scales configuration.
    • remove borderWidth option from Grid configuration and options. Use width option in the border object in the axes or scales configuration.
    • remove borderColor option from Grid configuration and options. Use color option in the border object in the axes or scales configuration.
    • remove borderDash option from Grid configuration and options. Use dash option in the border object in the axes or scales configuration.
    • remove borderDashOffset option from Grid configuration and options. Use dashOffset option in the border object in the axes or scales configuration.
    • change z option default value of Grid options from 0 to -1.

    Features

    • import CHART.JS version 4.1.1.
    • import CHART.JS TREEMAP controller version v2.2.0.
    • import CHART.JS GEO controller version v4.1.0.
    • import CHART.JS DATALABELS plugin version v2.2.0.
    • import CHART.JS GRADIENT plugin version v0.6.1.
    • add autoColors option to the configuration of the chart and to global options in order to enable colors plugin.
    • add autoColorsForceOverride option to the configuration of the chart and to global options in order to force to use colors plugin.
    • add border object option to axes or scales configuration in order to manage the options for the border that run perpendicular to the axis.
    • add borderRadius and useBorderRadius options to LegendLabels configuration and options classes.
    • add enabledClearByEscape option to DatasetsItemsSelectorOptions plugin configuration in order to enable or disable the selection clearing pressing Escape key.
    • enable the change of maximum value at runtime in the Meter and Gauge datasets.
    • add FALSE item to PointStyle enumeration.
    • add getLabelItems method to ScaleItem.

    Development

    • change Apache Software License header in source code as defined.
    • add NOTICE file, defined for Apache Software License adoption.
    • add all javascript bundled resources with the dependency's license within the distribution and a short note summarizing its licensing defined for Apache Software License adoption.
    • move LICENSE and NOTICE files to META-INF folder in all distribution files.
    Source code(tar.gz)
    Source code(zip)
    charba-6.0-gwt-javadoc.jar(10.60 MB)
    charba-6.0-gwt-sources.jar(3.00 MB)
    charba-6.0-gwt.jar(5.86 MB)
    charba-6.0-javadoc.jar(10.33 MB)
    charba-6.0-sources.jar(2.86 MB)
    charba-6.0-sources.zip(3.12 MB)
    charba-6.0.jar(5.68 MB)
  • 5.8(Dec 1, 2022)

    5.8 is the last stable release.

    API JavaDoc: https://pepstock-org.github.io/Charba/5.8.

    Breaking changes

    • remove color and font callbacks from treemap labels. Use ColorsCallback and FontsCallback instead, in order to return a list of colors and fonts.

    Features

    • import CHART.JS TREEMAP controller version v2.1.3.
    • import CHART.JS MATRIX controller version v1.3.0.
    • import CHART.JS SANKEY controller version v0.12.0.
    • import CHART.JS ANNOTATION plugin version v2.1.0.
    • import CHART.JS ZOOM plugin version v2.0.0.
    • import CHART.JS LUXON adapter version v1.3.0.
    • import LUXON datetime library version v3.1.1.
    • enable Zoom plugin use for sankey and treemap charts.
    • enable Annotation plugin use for matrix charts.
    • add treeLeafKey and borderRadius option to TreeMapDataset class.
    • add overflow option to TreeMapDataset labels class.
    • change color and hoverColor options in TreeMapDataset labels class in order to enable to set different colors on multiple lines labels.
    • change font and hoverFont options in TreeMapDataset labels class in order to enable to set different fonts on multiple lines labels.
    • enable events option to be set by a Set of objects in the chart, legend and tooltip configuration.
    • enable label option to ellipse annotation configuration.
    • enable caption option to the label of line annotation configuration.
    • add scaleMode option to the zoom plugin configuration.
    • add drawTime option to Drag option of the zoom plugin configuration.
    • add zoomRect methods to zoom programmatically in the zoom plugin.

    Development

    • change dependency for Google Closure Compiler, version v20221102.
    Source code(tar.gz)
    Source code(zip)
    charba-5.8-gwt-javadoc.jar(10.53 MB)
    charba-5.8-gwt-sources.jar(2.82 MB)
    charba-5.8-gwt.jar(5.66 MB)
    charba-5.8-javadoc.jar(10.27 MB)
    charba-5.8-sources.jar(2.69 MB)
    charba-5.8-sources.zip(2.94 MB)
    charba-5.8.jar(5.48 MB)
  • 5.7(Oct 24, 2022)

    5.7 is the last stable release.

    API JavaDoc: https://pepstock-org.github.io/Charba/5.7.

    Breaking changes

    • remove StackedOptions class, going to specific chart options, StackedLineOptions and StackedBarOptions classes, in order to expose all configuration options.

    Features

    • import CHART.JS MATRIX controller version v1.2.0.
    • import CHART.JS GEO controller version v3.10.0.
    • import CHART.JS SANKEY controller version v0.11.0.
    • import LUXON datetime library version v3.0.4.
    • add hoverColorFrom and hoverColorTo options to SankeyDataset and SankeyElementOptions classes.
    • add StackedHorizontalBarChart and StackedVerticalLineChart classes.

    Fixed Bugs

    • #77 with event refactoring, the Datasets items selector plugin cannot selected an area by APIs.
    • #79 StackedBarChart and StackedLineChart didn't manage horizontal and vertical drawing. StackedHorizontalBarChart and StackedVerticalLineChart classes added. Thanks @Anschke

    Development

    • change dependency for Google Closure Compiler, version v20221004.
    Source code(tar.gz)
    Source code(zip)
    charba-5.7-gwt-javadoc.jar(10.45 MB)
    charba-5.7-gwt-sources.jar(2.81 MB)
    charba-5.7-gwt.jar(5.62 MB)
    charba-5.7-javadoc.jar(10.19 MB)
    charba-5.7-sources.jar(2.67 MB)
    charba-5.7-sources.zip(2.92 MB)
    charba-5.7.jar(5.45 MB)
  • 5.6(Sep 20, 2022)

    5.6 is the last stable release.

    API JavaDoc: https://pepstock-org.github.io/Charba/5.6.

    Breaking changes

    • DOM events refactoring.
      • rename org.pepstock.charba.client.enums.Event enumeration to org.pepstock.charba.client.enums.DefaultEvent.
      • remove org.pepstock.charba.client.dom.BaseNativeEvent class. Use org.pepstock.charba.client.dom.events.NativeBaseEvent or its subclasses in org.pepstock.charba.client.dom.events package instead.
      • remove org.pepstock.charba.client.dom.BaseEventTypes class. Use event types enumerations in in org.pepstock.charba.client.dom.enums package instead.
      • move Touch and TouchList classes from org.pepstock.charba.client.dom to org.pepstock.charba.client.dom.events one.
      • toast utility will use org.pepstock.charba.client.dom.events.NativeMouseEvent class for its actions.
    • rename getDatasetElement method to getElement in AbstractDatasetContext class.
    • rename DatasetElement class to ChartElement.
      • the chart elements are typed based on the data type of the chart controller.
    • rename DatasetElementOptions class to ChartElementOptions.
      • the chart elements options are typed based on the data type of the chart controller.
    • rename ChoroplethBar class to GeoFeatureElement
    • remove ChoroplethElement class, accessible by the options elements node. Use chart.getOptions().getElements().getElement(GeoFeatureElementOptions.FACTORY) to get the GEO feature element options, by GeoFeatureElementOptions class.
    • remove BubbleMapPoint class. Use Point element class instead to configure bubble map points.

    Features

    • import CHART.JS GEO controller version v3.9.0.
    • import CHART.JS SANKEY controller version v0.9.1.
    • import CHART.JS ANNOTATION plugin version v2.0.1.
    • import CHART.JS GRADIENT plugin version v0.5.1.
    • import LUXON datetime library version v3.0.3.
    • DOM events refactoring.
      • enable custom event types to define to CHART.JS options by IsEvent interface, on top of the default ones.
      • create specific classes to map DOM events in org.pepstock.charba.client.dom.events package:
        • NativeBaseEvent to map the Event javascript class.
        • NativeUIEvent to map the UIEvent javascript class.
        • NativeMouseEvent to map the MouseEvent javascript class.
        • NativeTouchEvent to map the TouchEvent javascript class.
        • NativePointerEvent to map the PointerEvent javascript class.
        • NativeKeyboardEvent to map the KeyboardEvent javascript class.
        • NativeCustomEvent to map the CustomEvent javascript class.
      • enable events creation by own event initialization configuration.
    • add base option to Bar element options and configuration class.
    • add specific data element and own options based to dataElementType property of CHART.JS controller, in the DatasetReference, DatasetItem and AbstractDatasetContext classes.
      • ArcElement and ArcElementOptions classes for controllers which are using arcs to draw the chart.
      • BarElement and BarElementOptions classes for controllers which are using bars to draw the chart.
      • PointElement and PointElementOptions classes for controllers which are using points to draw the chart.
      • MatrixElement and MatrixElementOptions classes for matrix charts.
      • TreeMapElement and TreeMapElementOptions classes for treemap charts.
      • SankeyElement and SankeyElementOptions classes for sankey charts.
      • GeoFeatureElement and GeoFeatureElementOptions classes for GEO choropeth charts.
    • add GeoFeatureElementOptions configuration element to BubbleMap chart.
    • add register method to charts, where the controller type is not a CHART.JS out-of-the-box ones, in order to register then and act on the options if needed before instantiating a chart instance.
      • applied to matrix, sankey, treemap, choropleth, bubblemap, gauge and meter charts.
    • add options element factories to matrix, sankey, treemap, choropleth and bubblemap charts in order to manage defaults options once for all chart instances in the application.
    • enable Datalabels plugin use for matrix and treemap charts.

    Development

    • change dependency for Google Closure Compiler, version v20220905.
    Source code(tar.gz)
    Source code(zip)
    charba-5.6-gwt-javadoc.jar(10.41 MB)
    charba-5.6-gwt-sources.jar(2.81 MB)
    charba-5.6-gwt.jar(5.62 MB)
    charba-5.6-javadoc.jar(10.15 MB)
    charba-5.6-sources.jar(2.67 MB)
    charba-5.6-sources.zip(2.93 MB)
    charba-5.6.jar(5.45 MB)
  • 5.5(Aug 8, 2022)

    5.5 is the last stable release.

    API JavaDoc: https://pepstock-org.github.io/Charba/5.5.

    Breaking changes

    • change default value of xScaleID and yScaleID options to null, in the Annotation plugin.
    • remove DoubleClickCallback class because dblclick event handler is not supported in the Annotation plugin anymore.
    • remove LabelElement class because is not supported in the Annotation plugin anymore. Use AnnotationElement.getLabel().getOptions() instead.
    • enable annotation event handlers (EnterCallback, LeaveCallback, ClickCallback) to indicate chart should be re-drawn.

    Features

    • import CHART.JS version v3.9.1.
    • import CHART.JS GEO controller version v3.8.1.
    • import CHART.JS ANNOTATION plugin version v2.0.0.
    • import CHART.JS DATALABELS plugin version v2.1.0.
    • import CHART.JS LUXON adapter version v1.2.0.
    • add pointStyleWidth option to LegendLabels options and configuration classes.
    • add center option to GeoDataPoint configuration class.
    • enable annotation event handlers (EnterCallback, LeaveCallback, ClickCallback) to indicate chart should be re-drawn.
    • add set methods to AnnotationElement class in order to enable the change of annotation dimension at runtime.
    • add z option to all annotations options classes.
    • add interaction option to AnnotationOptions configuration class.
    • enable the management of annotation types defaults stored as elements.
    • add borderDash option as scriptable option in Grid configuration.
    • add BorderSkipped.TRUE item in order to skip all borders for bars drawing.
    • add circular option to Arc element options and configuration and to PolarAreaDataset classes.

    Development

    • built and tested on GWT Web toolkit, version 2.10.0.
    • change dependency for Google Closure Compiler, version v20220719.
    • remove dependency from Google Closure Stylesheets because the project is not maintained anymore.
    Source code(tar.gz)
    Source code(zip)
    charba-5.5-gwt-javadoc.jar(10.03 MB)
    charba-5.5-gwt-sources.jar(2.73 MB)
    charba-5.5-gwt.jar(5.45 MB)
    charba-5.5-javadoc.jar(9.78 MB)
    charba-5.5-sources.jar(2.59 MB)
    charba-5.5-sources.zip(2.85 MB)
    charba-5.5.jar(5.28 MB)
  • 5.4(Jul 12, 2022)

    5.4 is the last stable release.

    API JavaDoc: https://pepstock-org.github.io/Charba/5.4.

    Breaking changes

    • change align option in the ticks in order to use TickAlign object instead of ElementAlign.

    Features

    • import CHART.JS version v3.8.0.
    • import CHART.JS GEO controller version v3.8.0.
    • import LUXON datetime library version v3.0.1.
    • add MultilineTextAnnotationBuilder utility in order to create a canvas to add to a chart, by the annotation plugin labels, where each line of the content can have a specific font and color.
    • add includeInvisible option to the Interaction configuration and options classes.
    • add borderRadius option to the PointLabels options and RadialPointLabels configuration classes.
    • add offsetAfterAutoskip option to the CartesianTimeAxis and CartesianTimeSeriesAxis configuration classes.
    • add inner item to TickAlign class for the ticks.
    • add getElementAtEvent(BaseNativeEvent event, InteractionItem interaction) method to the charts.
    • add getElementsAtEvent(BaseNativeEvent event, InteractionItem interaction) method to the charts.

    Development

    • change dependency for Google Closure Compiler, version v20220601.
    Source code(tar.gz)
    Source code(zip)
    charba-5.4-gwt-javadoc.jar(10.00 MB)
    charba-5.4-gwt-sources.jar(2.72 MB)
    charba-5.4-gwt.jar(5.42 MB)
    charba-5.4-javadoc.jar(9.75 MB)
    charba-5.4-sources.jar(2.58 MB)
    charba-5.4-sources.zip(2.84 MB)
    charba-5.4.jar(5.25 MB)
  • 5.3(May 12, 2022)

    5.3 is the last stable release.

    API JavaDoc: https://pepstock-org.github.io/Charba/5.3.

    Breaking changes

    • Rename getXObjectType and getXObjectType methods in DataPoint class to getXType and getYType.
    • Rename the following utilities classes using Util suffix instead of Utils.
      • ScriptableUtil
      • SafeHtmlUtil
      • GeoUtil
    • Remove getId method form DateAdapter because not used anymore and always equals to "luxon" value.

    Features

    • add SmartPlugin capability which enables the user to create a CHART.JS with only the needed hooks, which is improving the performance of chart drawing.
    • add REGRESSION capabilities leveraging on ML library (only regressions module), version 6.0.0.
      • add simple linear regression.
      • add power regression.
      • add exponential regression.
      • add polynomial regression.
      • add robust polynomial regression.
      • add TheilSen regression.
    • import CHART.JS GRADIENT plugin version v0.5.0.
    • import CHART.JS GEO controller version v3.7.2.
    • import LUXON library version v2.4.0.
    Source code(tar.gz)
    Source code(zip)
    charba-5.3-gwt-javadoc.jar(9.95 MB)
    charba-5.3-gwt-sources.jar(2.71 MB)
    charba-5.3-gwt.jar(5.40 MB)
    charba-5.3-javadoc.jar(9.70 MB)
    charba-5.3-sources.jar(2.57 MB)
    charba-5.3-sources.zip(2.82 MB)
    charba-5.3.jar(5.23 MB)
  • 5.2(Apr 4, 2022)

    5.2 is the last stable release.

    API JavaDoc: https://pepstock-org.github.io/Charba/5.2.

    Breaking changes

    • hide public CHART.JS hooks of Charba out-of-the-box plugins (ChartBackgroundColor, ChartPointer, ColorSchemes, HtmlLegend and DatasetsItemsSelector).
    • rename DisplayCallback to SimpleDisplayCallback class name (package org.pepstock.charba.client.callbacks) where the display can be set simply with a boolean.
    • remove DisplayCallback class from org.pepstock.charba.client.datalabels.callbacks in order to use the common DisplayCallback (package org.pepstock.charba.client.callbacks) where the display can be set by a boolean or a Display enumeration value.
    • change graceAsPercentage option in the CartesianLinearAxis class in order to be a double (value between 0 and 1) instead of a string when set as percentage.

    Features

    • add new Crosshair Charba plugin in order to enable the crosshair on the charts with cartesian axes.
    • add CHART.JS GRADIENT plugin version v0.4.0.
    • import CHART.JS SANKEY controller version v0.9.0.
    • import CHART.JS ANNOTATION plugin version v1.4.0.
    • import CHART.JS ZOOM plugin version v1.2.1.
    • import LUXON library version v2.3.1.
    • add StackedLineChart and StackedLineChartWidget classes in order to manage the stacked chart for line (no filled not default).
    • add AreaChart and AreaChartWidget classes in order to manage the area chart (filled by default).
    • add PlginContainer interface in order to set plugin implementations without exposing the plugin public methods.
    • add areaBackgroundColor option to chart background color plugin (ChartBackgroundColor) in order to enable the coloring of the chart area as well.
    • add a shared map to annotation context in order to manage common instances cross annotations.
    • add column option to the Sankey dataset configuration.
    • add rotation option to box and label annotation options in the annotation plugin.
    • add rotation option to label options of box annotation in the annotation plugin.
    • add textStrokeColor and textStrokeWidth options to label annotation and to box and line labels options in the annotation plugin.
    • add events callbacks options to AnnotationOptions class in order to enable to events management for all defined annotations.
    • add scriptable options to all axes for the following options:
      • display by DisplayCallback (package org.pepstock.charba.client.callbacks) class
      • backgroundColor by ColorCallback (package org.pepstock.charba.client.callbacks) class
      • reverse by new ReverseCallback (package org.pepstock.charba.client.callbacks) class
      • alignToPixels by new AlignToPixelsCallback (package org.pepstock.charba.client.callbacks) class
      • weight by new ScaleWeightCallback (package org.pepstock.charba.client.callbacks) class
      • min, max, suggestedMin and suggestedMax by new MinMaxCallback (package org.pepstock.charba.client.callbacks) class
    • add scriptable options to all cartesian axes for the following options:
      • bounds by new BoundsCallback (package org.pepstock.charba.client.callbacks) class
      • offset by new ScaleOffsetCallback (package org.pepstock.charba.client.callbacks) class
      • position by new ScalePositionCallback (package org.pepstock.charba.client.callbacks) class
      • stacked by new StackedCallback (package org.pepstock.charba.client.callbacks) class
      • stack by new StackCallback (package org.pepstock.charba.client.callbacks) class
      • stackWeight by new ScaleWeightCallback (package org.pepstock.charba.client.callbacks) class
    • add scriptable options to cartesian linear axes for the following options:
      • beginAtZero by new BeginAtZeroCallback (package org.pepstock.charba.client.callbacks) class
      • grace by new GraceCallback (package org.pepstock.charba.client.callbacks) class
    • add scriptable options to radial linear axes for the following options:
      • beginAtZero by new BeginAtZeroCallback (package org.pepstock.charba.client.callbacks) class
      • startAngle by new StartAngleCallback (package org.pepstock.charba.client.callbacks) class
    • add getDistanceFromCenterForValue and getValueForDistanceFromCenter methods to ScaleItem class, enabled ONLY for radial linear scale.
    • enable global plugins if there are plugin options to configure the dataset and not only in the chart options (as is till now).

    Fixed Bugs

    • #69 set fill option to true as initial value on StackeAreaChart class in order to have the area chart by default. Thanks @salmonb.
    • #70 add an empty configuration when a plugin is added without any initial configuration.
    • #71 fixes the value of the property because was wrong.

    Development

    • use Reflect built-in object to manage the properties of the native objects.
    • change dependency for Google Closure Compiler, version v20220301.
    • add dependency for Google Closure Compiler Unshaded, version v20220301.
    Source code(tar.gz)
    Source code(zip)
    charba-5.2-gwt-javadoc.jar(9.55 MB)
    charba-5.2-gwt-sources.jar(2.59 MB)
    charba-5.2-gwt.jar(5.19 MB)
    charba-5.2-javadoc.jar(9.31 MB)
    charba-5.2-sources.jar(2.47 MB)
    charba-5.2-sources.zip(2.70 MB)
    charba-5.2.jar(5.04 MB)
  • 5.1(Feb 22, 2022)

    5.1 is the last stable release.

    API JavaDoc: https://pepstock-org.github.io/Charba/5.1.

    Breaking changes

    • change PointStyleCallback class, adding context as generic.
    • remove xPadding and yPadding options from LineLabel options. Use padding instead.
    • remove onDestroy method from Plugin interface. Use onBeforeDestroy instead.
    • change type to mode and overScaleMode options in Zoom plugin configuration, from org.pepstock.charba.client.enums.InteractionAxis to org.pepstock.charba.client.zoom.enums.Mode class.
    • change signature of EnterCallback, LeaveCallback, ClickCallback and DoubleClickCallback interfaces of annotation plugin in order to get an AnnotationContext as argument instead of a chart and annotation options instances.

    Features

    • import CHART.JS version v3.7.1.
    • import CHART.JS TREEMAP controller version v2.0.2.
    • import CHART.JS MATRIX controller version v1.1.1.
    • import CHART.JS SANKEY controller version v0.8.2.
    • import CHART.JS GEO controller version v3.7.1.
    • import CHART.JS ANNOTATION plugin version v1.3.1.
    • import LUXON library version v2.3.0.
    • add clip property to annotation options.
    • add pointStyle, rotation, xAdjust and yAdjust properties to PointAnnotation options.
    • add new PolygonAnnotation class in order to draw a polygon.
    • add new LabelAnnotation class in order to draw a content (text, image or canvas) on the chart.
    • add point positioning by box options for PointAnnotation class.
    • add label options to BoxAnnotation class.
    • enable to set a content by Canvas instance to LineLabel options.
    • enable to set the position of the LineLabel options as percentage of the line dimension.
    • add borderShadowColor, backgroundShadowColor, shadowBlur, shadowOffsetX and shadowOffsetY to annotations and line label options in order to enable the shadowing.
    • add arrowHeads option to LineAnnotation class options in order to enable the arrows drawing to the line.
    • add the annotation element to the AnnotationContext in order to pass to the user the dimension and options of annotation (i.e for gradient).
    • add drawActiveElementsOnTop property to lining and bubble datasets.
    • add onBeforeDestroy and onAfterDestroy methods to Plugin interface.
    • enable all tick callbacks to return a List of strings in order to have ticks multiple lines.
    • enable PointLabelCallback class to return a List of strings in order to have ticks multiple lines.
    • add inCharArea option to PluginEventArgument class.
    • add r item to InteractionAxis class.
    • add centered option to PointLabels and RadialPointLabels classes.
    • add borderJoinStyle option to Arc element options and configuration, to PolarAreaDataset, PieDataset and DoughnutDataset classes.
    • add padding option to ProjectionAxis class.
    • add changed option to PluginEventArgument class in order to enable the rendering of the chart after event processing.
    • add a IsPoint instance argument to the setTooltipActiveElements method in the chart.

    Developing

    • change dependency for Google Closure Compiler, version v20220202.
    Source code(tar.gz)
    Source code(zip)
    charba-5.1-gwt-javadoc.jar(9.33 MB)
    charba-5.1-gwt-sources.jar(2.51 MB)
    charba-5.1-gwt.jar(5.03 MB)
    charba-5.1-javadoc.jar(9.07 MB)
    charba-5.1-sources.jar(2.39 MB)
    charba-5.1-sources.zip(2.62 MB)
    charba-5.1.jar(4.88 MB)
  • 5.0(Dec 4, 2021)

    5.0 is the last stable release.

    API JavaDoc: https://pepstock-org.github.io/Charba/5.0.

    Breaking changes

    • drop support for Java 8 going to Java 11 as minimum requirement.
    • change onBeforeLabel, onLabel and onAfterLabel methods to TooltipLabelCallback interface in order to return a List<String> instead of String instances to enable tooltip multilines labels.
    • change invokeTooltipsCallbackOnLabel method to Defaults class in order to return a List<String> instead of String instances.
    • refactoring of Meter and Gauge controller:
      • add ValueLabel and DescriptionLabel elements in the meter and gauge dataset in order to configure how to render the labels.
      • move all methods to configure the value label from options to dataset class.
      • remove Render enumeration because is not used anymore because the rendering as percentage can be set by ValueLabel and the label can be configured in DescriptionLabel.
    • remove CornerRadiusCallback class. Use BorderRadiusCallback one.
    • change signature of BorderRadiusCallback, adding the generic for scriptable options context class.
    • rename cornerRadius option to borderRadius in LineLabel and BoxAnnotation classes.
    • remove divider* and groupDividers options from TreemapDataset class in favor of Dividers node.
    • remove font, hoverFont, color, hoverColor and groupLabels options from TreemapDataset class in favor of Labels and Captions nodes.
    • remove Dash class from TreemapDataset because not needed anymore.

    Features

    • import CHART.JS version v3.6.1.
    • import CHART.JS GEO controller version v3.6.0.
    • import CHART.JS TREEMAP controller version v2.0.0.
    • import CHART.JS ZOOM plugin version v1.2.0.
    • import CHART.JS ANNOTATION plugin version v1.1.0.
    • enable all options of SizeAxis and ColorAxis (GEO charts) as scriptable ones.
    • add projection and projectionInvert methods to GEO charts in order to translates latitude and longitude in XY coordinates and viceversa.
    • add getColorForValue and getColorForValueAsString methods to GEO color axis in order to get the color for a specific value.
    • add getSizeForValue method to GEO size axis in order to get the size for a specific value.
    • enable the capability to set cornerRadius of the tooltip by BarBorderRadius object.
    • add boxPadding option to Tooltips options and configuration classes.
    • add inflateAmount option to Bar options and configuration classes and to BarDataset class.
    • add autoPadding option to Layout options and configuration classes.
    • enable the capability to hide the opened toast items programmatically.
    • add formatNumber methods to Helpers, provided out-of-the-box by CHART.JS.
    • add isZoomedOrPanned method to ZoomPlugin in order to get if the chart is zoomed or panned.
    • add rotation option to EllipseAnnotation class.
    • enable to set a BarBorderRadius object to borderRadius option in LineLabel and BoxAnnotation classes.
    • add borderCapStyle, borderColor, borderDash, borderDashOffset, borderJoinStyle and borderWidth options to LineLabel class.
    • add align, position and formatter options to Labels node in TreemapDataset class in order to improve labels rendering.
    • add align and formatter options to Captions node in TreemapDataset class in order to improve captions rendering.

    Developing

    • change dependency for Google Closure Compiler, version v20211107.
    • add consistent checking for scriptable options which are returning a number.
    Source code(tar.gz)
    Source code(zip)
    charba-5.0-gwt-javadoc.jar(9.04 MB)
    charba-5.0-gwt-sources.jar(2.41 MB)
    charba-5.0-gwt.jar(4.80 MB)
    charba-5.0-javadoc.jar(8.77 MB)
    charba-5.0-sources.jar(2.29 MB)
    charba-5.0-sources.zip(2.52 MB)
    charba-5.0.jar(4.66 MB)
  • 4.2(Oct 7, 2021)

    4.2 is the last stable release.

    API JavaDoc: https://pepstock-org.github.io/Charba/4.2.

    Breaking changes

    • change signature of getEvents method of Options (and ConfigurationOptions), Legend, Tooltips classes and all plugins instances, returning a Set of events instead of a List.
    • change signature of getElements method of ChartPointer plugin, returning a Set of pointer elements instead of a List.
    • change signature of ClickCallback, DoubleClickCallback, EnterCallback and LeaveCallback classes of AnnotationPlugin, adding new event argument in order to get also the event generated on the canvas.
    • change signature of ClickEventHandler, EnterEventHandler and LeaveEventHandler classes of DataLabelsPlugin, adding new event argument in order to get also the event generated on the canvas.
    • remove toCSSFontProperty methods from Utilities class. Use Helpers.get().toFontString instead.

    Features

    • import CHART.JS TREEMAP controller version v1.0.2.
      • enable tree map chart type.
    • import CHART.JS MATRIX controller version v1.1.0.
      • enable matrix chart type.
    • import CHART.JS SANKEY controller version v0.8.0.
      • enable sankey chart type.
    • import CHART.JS version v3.5.1.
    • import CHART.JS GEO controller version v3.5.1.
    • import CHART.JS LUXON adapter version v1.1.0.
    • import LUXON library version 2.0.2.
    • add toasting utility.
    • add click, enter and leave subtitle events.
    • add subtitle item to PointElement enumeration for ChartPointer plugin, in order to enable the changing cursor when a click event handler has been set on subtitle element.
    • add isPressed(event) methods to ModifierKey enumeration in order to enable the capability to filter the events if the modifier keys are pressed.
    • add align property, as a double representing the clockwise angle (in degree), to DataLabels options in order to define the label box alignment relative to anchor.
    • add getRelativePosition method to Helpers class in order to get the relative position of an event on the chart.
    • add modifierKey property to DatasetsItemsSelector options plugin in order to enable the selection only when a modifier key is pressed.
    • enable programmatically selection on a chart by DatasetsItemsSelector plugin.

    Fixed Bugs

    • #58 removes usage of .getClass().* and .class.* methods to get metadata in order to use CHARBA also with -XdisableClassMetadata or -XnoclassMetadata GWT compiler options. Thanks @MartinSchwarzbauer.

    Developing

    • #65 changes OpenJDK distribution in GitHub Actions, using now Zulu. Thanks @carldea.
    • change dependency for Google Closure Compiler, version v20210808.
    • add dependency to Google Closure Stylesheets, version 1.5.0.
    • rename parse method of JSON class to parseForObject, to parse a string to a native object.
    • add parseForArray method of JSON class to parse a string to an array.
    • move getStringProperty and getIntegerProperty from Id class to JsHelper one.
    • use outerHTML property to get HTML string of an element instead of innerHTML with a temporary parent or a cloned instance.
    • reduce visibility of the classes of injectable resources provided out-of-the-box.
    • use Chart.helpers.toFont method of CHART.JS to normalize the font object and to get the CSS string.
    • add additional checks about the consistency of datasets types and amount added to a chart.
    • add additional checks about the consistency of axes types and amount added to a chart.
    • add additional checks on builder classes in order to be consistent with new object creation.
    Source code(tar.gz)
    Source code(zip)
    charba-4.2-gwt-javadoc.jar(7.82 MB)
    charba-4.2-gwt-sources.jar(2.36 MB)
    charba-4.2-gwt.jar(4.72 MB)
    charba-4.2-javadoc.jar(7.58 MB)
    charba-4.2-sources.jar(2.25 MB)
    charba-4.2-sources.zip(2.47 MB)
    charba-4.2.jar(4.58 MB)
  • 4.1(Jul 29, 2021)

    4.1 is the last stable release.

    API JavaDoc: https://pepstock-org.github.io/Charba/4.1.

    Breaking changes

    • rename AxisType to ChartAxisType in order to enable custom axes type.
    • rename AxisCalculateTickRotationCallback class to AxisCalculateLabelRotationCallback.
      • rename onBeforeAxisCalculateTickRotation method of the interface to onBeforeAxisCalculateLabelRotation.
      • rename onAfterAxisCalculateTickRotation method of the interface to onAfterAxisCalculateLabelRotation.
      • rename setAxisCalculateTickRotation method of the Axis class to setAxisCalculateLabelRotation.
      • rename getAxisCalculateTickRotation method of the Axis class to getAxisCalculateLabelRotation.

    Features

    • import CHART.JS version 3.5.0.
    • import CHART.JS DATALABELS plugin version 2.0.0.
    • import CHART.JS ZOOM plugin version 1.1.1.
    • import Luxon library version 2.0.1.
    • import CHART.JS GEO controller version v3.1.0
      • enable geographic map chart types such as choropleth and bubble map.
    • add Subtitle options and configuration items.
    • add hover, enter and leave axes events.
    • add enter and leave title events.
    • add backgroundColor, borderColor and borderWidth scriptable options to all Elements configuration (bar, line, point, arc).
    • add hoverBackgroundColor, hoverBorderColor and hoverBorderWidth scriptable options to all Elements configuration (bar, line, point, arc).
    • add borderAlign, borderRadius, angle, offset and hoverOffset scriptable options to Arc configuration.
    • add pointStyle, borderSkipped, borderRadius, hoverBorderRadius and enableBorderRadius scriptable options to Bar configuration.
    • add borderCapStyle, borderDash, borderDashOffset, borderJoinStyle, fill and cubicInterpolationMode scriptable options to Line configuration.
    • add radius, hitRadius, hoverRadius, pointStyle and rotation scriptable options to Point configuration.
    • add parsing and normalized options to Dataset configuration.
    • enable the feature to create custom axes types (for injected controller).
    • enable enableBorderRadius and hoverBorderRadius scriptable options on BarDataset class.
    • enable stepped scriptable option on Line element and LineDataset classes.
    • add spacing property to Arc element and PieDataset and DoughnutDataset classes.
    • add originalMin and originalMax properties to ScaleLimit object in the ZoomPlugin.
    • add getZoomLevel method to the ZoomPlugin class.
    • add threshold and modifierKey properties to Drag configuration in the ZoomPlugin.
    • add new events items to Event enumeration.
    • add globalCompositeOperation property to Context2dItem and ChartBackgroundColorOptions plugin.
    • add options builder for ChartBackgroundColor plugin.
    • add options builder for ChartPointer plugin.
    • add options builder for HtmlLegend plugin.
    • add Canvas object as possible value for pointStyle option to enable custom point styles.
    • add toCanvas method to CastHelper class in order to enable casting HTMLCanvasElement instance to Canvas object.
    • add numberFormat scriptable options to all numeric axes configuration (cartesian linear, cartesian logarithmic, radial linear).
    • add threshold option to Decimation configuration.
    • add stack and stackWeight options to CartesianAxis configuration.
    • add pointLabel item to ContextType enumeration class.
    • add middle item to BorderSkipped enumeration class.
    • add datasetIndex, startDataIndex and endDataIndex properties to segment context for Segment callbacks.
    • add hide and show methods to chart classes in order to hide and/or show specific data element.

    Developing

    • change dependency for Google Closure Compiler, version v20210601.
    • add parse method to JSON utility class.
    • add clipArea and unclipArea methods to Helpers utility class.
    • hide java script property visibility of $H hash code property in java script object mapped by a NativeObjectContainer, when new object has been created.
    Source code(tar.gz)
    Source code(zip)
    charba-4.1-gwt-javadoc.jar(7.21 MB)
    charba-4.1-gwt-sources.jar(2.25 MB)
    charba-4.1-gwt.jar(4.43 MB)
    charba-4.1-javadoc.jar(6.99 MB)
    charba-4.1-sources.jar(2.08 MB)
    charba-4.1-sources.zip(2.28 MB)
    charba-4.1.jar(4.23 MB)
  • 4.0(Jun 3, 2021)

    4.0 is the last stable release.

    API JavaDoc: https://pepstock-org.github.io/Charba/4.0.

    Breaking changes

    • remove ResourcesType and EntryPointStarter classes as objects to initialize Charba.
      • There are 2 new entry points to initialize Charba:
        • Charba.enable() or Charba.enable(boolean) for embedded resources
        • DeferredCharba.enable(Runnable) or Charba.enable(Runnable, boolean) for deferred resources
    • Drop Internet Explorer 11 support.
    • remove jsinterop-base dependency.
    • rename defaultColor from Defaults global options to color.
    • remove DefaultFontItem class, use DefaultFont.
    • remove generateLegend method from Defaults class and from IsChart class because the prototype is not available anymore.
    • remove updateScale method from Defaults because is not available anymore. Use getScale(AxisType type) instead.
    • remove isAnimating method from ChartNode class.
    • remove getBorderWidth method from ChartNode class.
    • remove getOuterRadius method from ChartNode class.
    • remove getInnerRadius method from ChartNode class.
    • remove getRadiusLength method from ChartNode class.
    • remove getOffsetX method from ChartNode class.
    • remove getOffsetY method from ChartNode class.
    • change getLineWidths and getColumnWidths methods of LegendNode class in order to return a list of doubles instead of a list of integers.
    • remove fontSize, fontStyle, fontFamily, lineHeight and add color property (to set font color) to the following options classes, because new Font implementation must be used:
      • Options
      • LegendLabels
      • Title
      • Tooltips
    • change the chart events constructor using ChartEventContext which contains the chart and the native event.
    • remove HORIZONTAL_BAR item of ChartType enumeration because the horizontal bar is not a chart type anymore.
    • rename getDatasetMeta(int) method to getDatasetItem(int) in the IsChart interface.
    • rename getDatasets() method to getElements() in the DatasetItem class.
    • rename getMeta() method to getDatasetItem() in the DatasetPluginItem class.
    • remove render(UpdateConfiguration) method has been removed because it is not available anymore on CHART.JS.
    • rename Rectangle options and configuration in Bar, inside the Elements node of the options and configuration.
    • change fill default option for Line element from Fill.ORIGIN to Fill.FALSE.
    • rename showLines property to showLine property for line and radar chart options and configuration.
    • remove xPadding and yPadding properties from Tooltips class for options and configuration, use Padding instead.
    • change xAlign and yAlign properties in TooltipModel class which are returning a TooltipAlign object instead of a string.
    • change fullWidth property to fullSize in Title and Legend classes for options and configuration.
    • rename LegendAlign class to ElementAlign in order to be able to use for Title options and configuration classes.
    • change cutoutPercentage property from double to string in order to manage a percentage [number]% format in the options and configuration classes, for pie and doughnut charts.
    • remove Event.TOUCHEND item
    • change padding property to Title class for options and configuration in order to use Padding object instead of an integer.
    • remove AbstractChartsLifecycleListener class. Use ChartsLifecycleListener interface where all methods has got the default now.
    • remove DEFAULT_X_AXIS_ID, DEFAULT_Y_AXIS_ID and DEFAULT_SINGLE_AXIS_ID constants from Scales class, use DefaultScaleId enumeration.
    • remove getMinor method from IsDefaultTicks interface and then from DefaultTicks and DefaultChartTicks classes.
    • rename DefaultMajorTickItem class to DefaultMajor.
    • remove SingleScaleOptions class because the radial linear axis is managed like the cartesian ones.
    • rename MultiScalesOptions class to ScalesOptions.
    • remove getAxis method from IsDefaultScale interface because the axis kind does not any default and, when not set, depends on scale id.
    • remove setAxis methods from Scale and Axis classes because it must be set when an axis is built.
    • remove getXAxes and setXAxes methods from Scales classes, use getAxes and setAxes methods.
    • remove getYAxes and setYAxes methods from Scales classes, use getAxes and setAxes methods.
    • move beginAtZero property from ticks to axis/scale.
    • move min property from ticks to axis/scale.
    • move max property from ticks to axis/scale.
    • move reverse property from ticks to axis/scale.
    • move suggestedMax property from ticks to axis/scale.
    • move suggestedMin property from ticks to axis/scale.
    • move min property from time object to axis/scale.
    • move max property from time object to axis/scale.
    • move labels property from tick (cartesian category) object to axis/scale.
    • move startAngle property from PolarAreaOptions class to RadialAxis.
    • remove getCartesianType() method from CartesianAxis class, use getAxis method.
    • rename CartesianAxisType class to AxisKind in order to manage axis type for radial linear and not only cartesian ones.
    • remove fontSize, fontStyle, fontFamily, lineHeight and add color property (to set font color) to the following options classes, because new Font implementation must be used:
      • PointLabels
      • ScaleLabel
      • Ticks
    • remove the following classes because the ticks implementation is updated:
      • TickMinor, IsDefaultMinorTick, AbstractTick, IsDefaultBaseTick, DefaultTickItem, DefaultMinorTickItem, BaseTickMinor and BaseTick
    • rename TickMajor option class to Major.
    • rename BaseTickMinor configuration class renamed to Major.
    • remove backdropPaddingY and backdropPaddingXproperties from Ticks options and RadiaLinearTick configuration. Use backdropPadding property.
    • rename Gridlines class to Grid for options and configuration in order to keep it aligned with CHART.JS name spaces.
    • remove zeroLineWidth, zeroLineColor, zeroLineBorderDash and zeroLineBorderDashOffset properties from Grid options and configuration classes.
    • rename tickMarkLength property to tickLength in Grid configuration and options classes.
    • rename offsetGridlines property to offset in Grid class for options and configuration.
    • remove ScaleDistribution enumeration. Use new scale CartesianTimeSeriesAxis, introduced in its place.
    • remove TimeTickItem class, use ScaleTickItem class.
    • add getValueAsDate() method to ScaleTickItem class in order to get the tick value as Date.
    • rename getValueAsDouble method of ScaleTickItem class to getValue.
    • remove getTimeTickItems method from ScaleItem class, use getTickItems.
    • remove MarginsItem, AxisMarginsItem and AxisMinSizeItem classes because they are not visible in CHART.JS anymore.
    • change onCallback method signature of TimeTickCallback class in order to get a list of ScaleTickItem instead of TimeTickItem.
    • change onAfterBuildTicks method signature of TimeAxisBuildTicksCallback class in order to get a list of ScaleTickItem instead of TimeTickItem.
    • remove the list of ticks as argument from AxisBuildTicksCallback class.
    • change isoWeekday property of Time options and configuration class does not store a boolean anymore but new IsoWeekDay enumeration with all days of week.
    • rename ScaleLabel class to ScaleTitle in order to keep it aligned with CHART.JS name spaces.
    • rename CartesianScaleLabel class to CartesianScaleTitle in order to keep it aligned with CHART.JS name spaces.
    • rename ScaleLabelAlign enumeration class to ScaleTitleAlign in order to keep it align with CHART.JS names.
    • remove ScaleLabelPadding options, use Padding instead.
    • remove CartesianPadding options, use Padding instead.
    • rename ScaleBounds class to Bounds.
    • rename labelString property name to text in ScaleTitle class for options and configuration.
    • rename RadialPointLabelCallback interface to PointLabelCallback for RadialPointLabels configuration.
    • add the index of the label to the signature of the PointLabelCallback interface method.
    • rename steppedLine from the dataset options to stepped.
    • rename tension from the dataset option to lineTension.
    • rename SteppedLine enumeration to Stepped.
    • rename lineTension property to tension in LiningDataset class.
    • change getXAxisID and getXAxisID methods in LineDataset class in order to return a IsScaleId instance instead of a String.
    • change getXAxisID and getXAxisID methods in BarDataset class in order to return a IsScaleId instance instead of a String.
    • add BarBorderWidthCallback interface to use for borderWidth and hoverBorderWidth callbacks in BarDataset class.
    • add pointStyle property to BarDataset class.
    • add borderRadius property to PieDataset and DoughnutDataset classes.
    • enable the feature to manage floating bars on time or timeseries axes and bar charts adding to DataPoint class the possibility to add a FloatingData object as Y value.
    • remove setT(Date) and Date getT methods from DataPoint class. Use setX(Date) and Date getXAsDate() instead.
    • change borderDashOffset option from int to double in all classes where referenced.
    • reduce visibility of setHidden method of Dataset class and add hidden argument to Dataset constructor in order to set the initial visibility. To change the dataset visibility, use the setDatasetVisibility chart method.
    • change the signatures of Plugin interface in order to manage new arguments of functions.
    • remove easing properties from DatasetPluginItem and TooltipPluginItem classes because it is not provided anymore.
    • remove ease argument from onBeforeDraw, onAfterDraw, onBeforeDatasetsDraw, onAfterDatasetsDraw, onBeforeDatasetDraw and onBeforeDatasetDraw methods of Plugin interface because is not passed by CHART.JS anymore.
    • add the update mode to the onAfterDatasetsUpdate, onAfterUpdate, onBeforeDatasetsUpdate, and onBeforeUpdatemethods of Plugin interface.
    • remove AbstractPluginCachedOptions and AbstractPluginCachedOptionsFactory classes. Use instead callbacks cache.
    • change AbstractPlugin class, removing all methods leaving only getId (because the Plugin interface has got all default methods) and new constructor where the plugin id is mandatory.
    • remove setEnabled method for DefaultPluginId enum from Plugin options class in order to avoid an inconsistent default options of plugin. Use setDisplay method for legend and title in legend and title options, and setEnabled method for tooltips in tooltips options.
    • change getXAxisID method in DatasetsItemsSelectorOptions class in order to return a IsScaleId instance instead of a String.
    • rename ClearSelection class to SelectionCleaner in the DatasetsItemsSelector plugin.
      • rename clearSelection methods to cleanSelection in the DatasetsItemsSelector class.
      • rename getClearSelection method to getSelectionCleaner in the DatasetsItemsSelectorOptions class.
      • rename DatasetRangeClearSelectionEvent class to DatasetRangeCleanSelectionEvent.
      • rename DatasetRangeCleanSelectionEventHandler class to DatasetRangeCleanSelectionEventHandler.
      • rename onClear method to onClean in DatasetRangeCleanSelectionEventHandler class.
    • remove CLEAR_SELECTION constant from DatasetRangeSelectionEvent class because the event is containing the selected values and not the indexes anymore.
    • remove fontColor property from SelectionCleaner options, use color instead.
    • remove fontSise, fontStyle and fontFamily properties from ClearSelection options, use font object instead.
    • change LabelsPlugin in order to :
      • add new color property for the font color, in order to be aligned with CHART.JS 3 implementation.
      • use font object instead of the single properties.
      • change FontColorCallback in favor of ColorCallback where you can decide the color.
      • add FontColorCallback in favor of FontCallback where you can decide the whole content of font.
      • pass a LabelsContext object instance as argument to all plugin callbacks instead of RenderItem and FontColorItem ones.
    • remove setOptions(List<T>), getOptionsAsList and getOptionsType methods from Plugins configuration and options classes.
    • change DataLabelsPlugin in order to :
      • move Weight enumeration from org.pepstock.charba.client.datalabels.enums to org.pepstock.charba.client.enums because new Font implementation must be used.
      • remove TextAlign enumeration from org.pepstock.charba.client.datalabels.enums and use TextAlign in org.pepstock.charba.client.enums instead.
      • org.pepstock.charba.client.datalabels.callbacks.ColorCallback class have been replaced by org.pepstock.charba.client.callbacks.ColorCallback class to manage whatever scriptable option which manages colors.
      • org.pepstock.charba.client.datalabels.callbacks.OffsetCallback class have been replaced by org.pepstock.charba.client.callbacks.OffsetCallback class to manage whatever scriptable option which manages offsets.
      • org.pepstock.charba.client.datalabels.callbacks.OffsetCallback class have been replaced by org.pepstock.charba.client.callbacks.OffsetCallback class to manage whatever scriptable option which manages offsets.
      • org.pepstock.charba.client.datalabels.callbacks.TextShadowColorCallback class have been replaced by org.pepstock.charba.client.callbacks.ColorCallback class to manage whatever scriptable option which manages colors.
      • org.pepstock.charba.client.datalabels.callbacks.TextStrokeColorCallback class have been replaced by org.pepstock.charba.client.callbacks.ColorCallback class to manage whatever scriptable option which manages colors.
      • org.pepstock.charba.client.datalabels.callbacks.TextStrokeWidthCallback class have been replaced by org.pepstock.charba.client.callbacks.WidthCallback class to manage whatever scriptable option which manages line widths.
      • org.pepstock.charba.client.datalabels.callbacks.PaddingCallback class have been replaced by org.pepstock.charba.client.callbacks.PaddingCallback class to manage whatever scriptable option which padding.
      • org.pepstock.charba.client.datalabels.callbacks.FontCallback class have been replaced by org.pepstock.charba.client.callbacks.FontCallback class to manage whatever scriptable option which manages fonts.
    • rename CompleteCallback class to CompletedCallback (and the name of the method from onComplete to onCompleted) in the ZoomPlugin.
    • rename getCompleteCallback and setCompletedCallback methods to getCompleteCallback and setCompleteCallback in the Zoom and Pan options in the ZoomPlugin.
    • change ModeCallback interface method signature adding new argument, the configuration element of the Zoom options.
    • remove sensibility, rangeMin and rangeMax properties from Zoom configuration and options.
    • remove speed, rangeMin and rangeMax properties from Pan configuration and options.
    • change signature for Zoom and Pan callbacks in order to be aligned with the other scriptable options, using only an argument, the context.
    • remove the generic definition from AbstractConfigurationItem class in ZoomPlugin.
    • remove Range class because is not longer used. Use Limit and ScaleLimit instead.
    • remove rangeMin and rangeMax properties from Zoom and Pan configuration and options. Use Limit and ScaleLimit instead.
    • rename resetZoom method in ZoomPlugin class to reset.
    • change Drag class in order drag configuration is a inner element of Zoom configuration instead of separated object.
      • remove all methods from ZoomPlugin class to set the drag object to zoom configuration.
    • remove animationDuration property from Drag class in ZoomPlugin.
    • rename enabled property to display in LineLabel configuration of AnnotationPlugin.
    • move AnnotationType enumeration from org.pepstock.charba.client.annotation.enums to org.pepstock.charba.client.annotation in order to maintain the low visibility of internal classes of the annotation plugin implementation.
    • rename LineLablePosition class to LablePosition for LineLabel configuration of AnnotationPlugin.
    • remove the feature to create custom controller without extending an existing one. You can only extend existing chart type.
    • change Controller interface in order to be align with new interface implemented in new CHART.JS.
    • change the constructor signature of ControllerType class adding a mandatory argument of ControllerProvider instance which can provide the instance of controller to register.
      • add an optional argument (boolean) in order to decide if the base default options of the chart which is being extended must be cloned or not.
      • reduce the visibility of register method of Controller class
    • rename extend method of Controllers class to register.
    • remove initialize, draw, linkScales, update, addElements, setHoverStyle and removeHoverStyle methods from Controller interface.
    • change AbstractController class in order to extend it only the the controller type and implementing only needed methods
    • remove fontFamily and fontStyle properties from meter and gauge options, use font instead.
    • rename GaugeThreshold enumeration to DefaultThreshold.
    • rename MeterDisplay enumeration to Render and move from org.pepstock.charba.client.impl.charts package to org.pepstock.charba.client.enums.
    • rename displayFontColor property to fontColor in meter and gauge options
    • rename animatedDisplay property to animated in meter and gauge options
    • change the signature of MeterFormatCallback interface in order to get only a MeterContext instance as argument.
    • change the structure of scriptable options context.
      • remove getIndex method from DatasetContext class, use getDataIndex instead.
      • add type of the context.
      • remove isHover method from DatasetContext class.
      • rename options property to attributes in the context classes to store custom options at runtime.
    • creates new context classes based on the type of context:
      • create ChartContext class to map the context for configuration chart callbacks, type equals to chart.
      • rename ScriptableContext class to DatasetContext to map the context for configuration datasets callbacks, dataset and data types
      • ScaleContext class to map the context for configuration scales callbacks, scale and tick types.
      • DataLabelsContext which is mapping datalabels types, for callbacks invoked by DataLabelsPlugin.
      • LabelsContext which is mapping labels types, for callbacks invoked by DataLabelsPlugin.
      • AnnotationContext which is mapping annotation types, for callbacks invoked by AnnotationPlugin.
    • all scriptable options are extending the Scriptable interface which has changed own signature, accessing only 1 argument, the context defined as generic.
    • BackgroundColorCallback and BorderColorCallback classes have been replaced by ColorCallback class to manage whatever scriptable option which manages colors.
    • BorderWidthCallback class has been replaced by WidthCallback class to manage whatever scriptable option which manages line widths.
    • rename BorderCapStyleCallback class to CapStyleCallback.
    • rename BorderJoinStyleCallback class to JoinStyleCallback.
    • remove LegendCallback interface and its usage from ConfigurationOptions class because the prototype is not available anymore.
    • remove hidden attribute from LegendItem and LegendLabelItem classes because not supported anymore. Use new isHidden(chart) method of LegendItem class.
    • redesign of TooltipModel class in according with new Chart.js model.
    • rename TooltipCustomCallback class to TooltipExternalCallback in order to keep it aligned with CHART.JS name spaces.
    • rename getValue and getIndex methods to getFormattedValue and getDataIndex ones in TooltipItem class in order to be aligned with new CHART.JS tooltip item interface.
    • change the return value of getTooltip method of TooltipPluginItem class, returning now a TooltipModel object instead of TooltipNode.
    • remove x and y properties from TooltipItem class.
    • remove getEasing method from AnimationItem class because is not provided anymore by new animation engine.
    • rename HtmlLegendTextCallback class to HtmlLegendItemCallback.
    • rename ValueCallback to MeterFormatCallback class.
      • rename setValueCallback and getValueCallback of MeterOptions class to setFormatCallback and getFormatCallback.
    • change all properties of BaseBoxItem, SizeItem, LegendHitBoxItem classes from int to double.
    • reduces the visibility of Gradient and Pattern class constructors in order to use new GradientBuilder and PatternBuilder classes. This change avoids inconsistent gradient and pattern objects, improving some capabilities of them (like the equals and hashCode methods in case they will be needed).
      • adds setColors methods (getting a list or an array of IsColor) to GradientBuilder in order to enable the gradient creation to the ColorScheme instances.
    • change toFont method to Utilities class in order to get the weight of the font.
    • remove JsWindowHelper class. Use Window.enableResizeOnBeforePrint().
    • rename UndefinedValues class to Undefined.
    • change the type for some properties of LuxonOptions class:
      • locale is now a CLocale object instead of a string.
      • numberingSystem is now a NumberingSystem object instead of a string.
      • zone is now a TimeZone object instead of a string.
      • outputCalendar is now a Calendar object instead of a string.
    • remove the usage of Moment as date library because it does not use the web internationalization.
    • remove the usage of Date-fns as date library because it does not use the web internationalization.

    Features

    • import CHART.JS version 3.3.2.
    • import CHART.JS LUXON adapter version v1.0.0.
    • import LUXON library version 1.27.0.
    • import CHART.JS Datalabels plugin version v2.0.0-rc.1.
    • import CHART.JS Annotation plugin version v1.0.2.
    • import CHART.JS Zoom plugin version v1.0.1.
    • add backgroundColor and borderColor default options.
    • add VerticalLine chart, options and data set classes to manage this new kind of chart.
    • add setDatasetVisibility method to AbstractChart class in order to set the visibility for a given data set.
    • add toggleDataVisibility method to AbstractChart class in order to toggle the visibility of an item in all data sets.
    • add isDataVisible method to AbstractChart class in order to get the stored visibility state of an data index for all data sets.
    • add hide method to AbstractChart class in order to hide a data set.
    • add show method to AbstractChart class in order to show a data set.
    • add update(IsTransitionKey) and reconfigure(IsTransitionKey) methods to IsChart interface in order to update the chart by an animation update mode.
    • add resize(width height) method to IsChart interface.
    • add newDataset(boolean) methods for all charts (by new IsDatasetCreator interface) in order to get new data set with the initial visibility status.
    • add usePointStyle property to Tooltips class for options and configuration.
    • add boxWidth and boxHeight properties to Tooltips options and configuration classes.
    • add xAlign and yAlign properties to Tooltips options and configuration classes.
    • improve the tooltip callbacks management providing the right defaults.
    • add borderWidth, borderRadius and borderDash properties to TooltipLabelColor item in order to improve the customization of tooltips by the callback.
    • add title property to Legend options and configuration classes in order to manage a title on legend
    • add maxWidth and maxHeight properties to Legend options and configuration.
    • add boxHeight property to LegendLabels options and configuration classes.
    • add textAlign property to LegendLabels options and configuration classes.
    • add fontColor property to LegendItem and LegendLabelItem classes.
    • add events property to Legend and Tooltips options and configuration classes in order to enable the event filtering.
    • add align property to Title options and configuration classes.
    • add hoverBackgroundColor, hoverBorderWidth and hoverBorderColor properties to Bar, Arc, Line and Point elements configuration and options classes.
    • add pointStyle property to Bar element configuration and options classes.
    • add enableBorderRadius property to Bar element configuration and options classes.
    • add hoverBorderRadius property to Bar element configuration and options classes.
    • add borderRadius property to Arc element configuration and options classes.
    • add hoverOffset property to Arc element configuration and options classes.
    • add Datasets class in order to manage data sets options and configuration classes.
    • add Interaction class in order to manage data sets options and configuration classes.
    • implement decimation plugin options and configuration.
    • implement filler plugin options and configuration.
    • add width and height options to ChartAreaNode class
    • add columnHeights property to LegendNode class.
    • add grouped property to Datasets bar options and configuration.
    • implement new animation options and configuration for new engine:
      • add new animation entities (collection of properties, transitions) and new name spaces where the options must be stored.
      • add delay property to animation options.
      • add loop property to animation options.
      • add animation options and configuration to data sets.
      • add animation options and configuration to tooltips.
      • add setAnimationEnabled and isAnimationEnabled methods to animation containers to configuration, options and data sets.
      • enable duration, delay, loop and easing properties as scriptable options in Animation configuration.
      • enable from and to properties as scriptable options in AnimationsItem configuration.
    • add skipNull property to BarOptions configuration.
    • change circumference and rotation properties on PieChart and DoughnutChart options in order to set the value in degrees instead of radians.
    • add cutout property in the options and configuration classes, for pie and doughnut charts.
    • add radius and radiusPercentage properties in the options and configuration classes, for pie and doughnut charts.
    • add resizeDelay property to options and configuration.
    • add setX and setY methods to IsPadding interface as shortcut to set X (left, right) and Y (top, bottom) dimensions.
    • add color, borderColor, backgroundColor and font properties to configuration of a single chart.
    • add toBase64Image(ImageMimeType, double) methods (and all combinations) to IsChart interface in order to get the image form chart in different image format and with different image quality.
    • enable padding property as scriptable in Layout configuration.
    • add segment property to LineOptions options and configuration in order to manage the rendering of line segments.
    • enable align, display, color, font, padding, position and text properties in Title configuration to be set as scriptable options.
    • enable the scriptable options activation by NativeCallback, a callback which contains java script code.
    • implement setActiveElements, getActiveElements, setTooltipActiveElements and getTooltipActiveElements methods on chart instances.
    • add axis id parameter to the cartesian axes classes constructor, by IsScaleId or a string.
    • add getAxis(scaleId, axisKind) method from IsDefaultScales interface in order to get the default scale and remove getXAxis and getYAxis methods.
    • improve the defaults management for scales.
    • change visibility of CartesianAxis class, now it is public.
    • add CartesianTimeSeriesAxis class in order to manage time series scales.
    • add backgroundColor property to Axis configuration and Scale options classes.
    • add alignToPixels property to Axis configuration and Scale options classes.
    • add singleStacked property to CartesianAxis configuration and Scale options classes.
    • add labels property to CartesianCategoryAxis class.
    • add minIndex and maxIndex properties to CartesianCategoryAxis class in order to manage minimum and maximum by index of the label, instead of its content.
    • add beginAtZero property to CartesianLogarithmicAxis class.
    • add suggestedMin and suggestedMax properties to CartesianLogarithmicAxis class.
    • add grace property to scale options and to CartesianLinearAxis class.
    • add animate property to RadialAxis configuration and Scale options classes.
    • add align property to ScaleTitle options and CartesianScaleTitle configuration classes.
    • add tickBorderDash property to Grid configuration and options classes.
    • add tickBorderDashOffset property to Grid configuration and options classes.
    • add tickColor property to Grid configuration and options classes.
    • add tickWidth property to Grid configuration and options classes.
    • add borderColor and borderWidth properties to Grid options and configuration classes.
    • add WidthCallback interface to Grid and RadialAngleLines configuration in order to set lineWidth property at runtime.
    • add ColorCallback interface to Grid, RadialAngleLines and RadialLinearTick configuration in order to set color and backdropColor property at runtime.
    • add BorderDashOffsetCallback interface to Grid and RadialAngleLines configuration in order to set borderDashOffset property at runtime.
    • add BorderDashCallback interface to RadialAngleLines configuration in order to set borderDash property at runtime.
    • add FontCallback interface to RadialPointLabels and Tick configuration in order to set font property at runtime.
    • add ShowLabelBackdropCallback interface to Tick configuration in order to set showLabelBackdrop property at runtime.
    • add count property to RadialLinearTick, CartesianLinearTick and Tick configuration classes.
    • add backdropPadding, backdropColor and showLabelBackdrop properties to Tick configuration, for all ticks.
    • add SimplePaddingCallback interface to RadialPointLabelsconfiguration in order to set padding property at runtime.
    • add format property to all numeric ticks (cartesian linear and log, radial linear) in order to apply the number formatting by ECMAScript Internationalization API, leveraging on Charba INTL NumberFormat implementation.
    • add the center axes position and the position of the axis with respect to a data value.
    • add textStrokeColor and textStrokeWidth properties to Ticks configuration and options classes.
    • add includeBounds, align and crossAlign properties to cartesian ticks.
    • add multiple text lines for text property of ScaleTitle class.
    • add backdropColor, backdropPadding and padding properties to PointLabels options and RadialPointLabels configuration classes.
    • add the selected value of the scale by the click event to the AxisClickEvent class.
    • add the following methods to ScaleItem class in order to improve the interaction with scale elements:
      • getDecimalForPixel
      • getPixelForDecimal
      • getPixelForTick
      • getLabelForValue
      • getPixelForValue
      • getPixelForValue
      • getValueForPixel
      • getBaseValue
      • getBasePixel
    • enable precision, maxTicksLimit and stepSize scriptable options to linear ticks.
    • add clip property to all datasets types.
    • add spanGaps number property (double) to LiningDataset class in order to manage the value where there are some gaps.
    • add setXAxisID and setYAxisID methods to LineDataset class in order to set the scale id using IsScaleId implementation.
    • add stack item to Fill enumeration.
    • add indexAxis property to BarDataset and BarOptions classes in order to manage the horizontal bars.
    • add START and END items to BorderSkipped enumeration
    • change borderSkipped property in BarDataset class in order to manage it as indexable options.
    • change borderWidth property for BarDataset in order to be set as indexable when set as an object.
    • add borderRadius and hoverBorderRadius properties to BarDataset class.
    • add base property to BarDataset configuration and to Datasets configuration and options classes.
    • add enableBorderRadius property to BarDataset configuration class.
    • add setXAxisID and setYAxisID methods to BarDataset class in order to set the scale id using IsScaleId implementation.
    • add offset and hoverOffset properties to PieDataset and DoughnutDataset classes.
    • change borderAlign property for PieDataset, PolarAreaDataset and DoughnutDataset in order to be set as indexable.
    • enable overriding the legend pointStyle (from dataset) using new pointStyle option.
    • improve the gradients and patterns management at dataset level in order to be managed by a callback instead of by a plugin in order to have the right chart area size for gradients.
    • add grouped property to BarDataset class.
    • add rotation and circumference properties to PieDataset and DoughnutDataset classes.
    • change all methods of Plugin interface becoming all default ones.
    • add new hooks to Plugin interface:
      • onBeginDrawing and onEndDrawing in order to invoke the plugin once before starting and after ending any drawing.
      • onBeforeElementsUpdate
      • onReset in order to enable to catch when a chart is resetting.
      • onInstall, onStart, onStop, onUninstall to manage plugin life-cycle.
      • onBeforeDataLimits, onAfterDataLimits, onBeforeBuildTicks, onAfterBuildTicks to manage scale setup.
    • add events property to AbstractPluginOptions options classes in order to enable the event filtering for plugin.
    • improve the code of HtmlLegend plugin in order to manage texts (for legend items and title) in the same way.
    • manage new legend title in HtmlLegend plugin.
      • add HtmlLegendTitleCallback callback to apply a custom legend title in HTML.
      • rename HtmlLegendTextCallback callback to HtmlLegendItemCallback.
    • improve Annotation plugin in order to leverage on callbacks cache which enables the complete configuration also at default or chart type levels.
    • add new features to AnnotationPlugin plugin.
      • add setXScaleID and setYScaleID methods to BoxAnnotation class of Annotation plugin in order to set the scale id using IsScaleId implementation.
      • add setScaleID method to LineAnnotation class of Annotation plugin in order to set the scale id using IsScaleId implementation.
      • implement only click, dblclick, enter and leave events.
      • add ellipse and point annotation types.
      • add display property to all annotations in order to enable or disable the display of annotation.
      • remove mode property from annotation line options because new plugin is using the axis property of scales for line orientation.
      • remove events property from annotation options because the event listeners will be added based on the callbacks definitions.
      • add autoRotation property to annotation line label options in order to enable the automatic calculation of label rotation.
      • add textAlign property to annotation line label options in order to enable horizontal alignment when context text is multiple lines.
      • remove name property from annotation options because is not needed anymore. Use id property instead.
      • change getScaleID method in LineAnnotation class of Annotation plugin in order to return a IsScaleId instance instead of a String.
      • change getXScaleID and getXScaleID methods in BoxAnnotation class of Annotation plugin in order to return a IsScaleId instance instead of a String.
      • change the constructors of LineAnnotation and BoxAnnotation in order to set an ID to the object. This will enable the possibility to define annotations items as default.
      • enable the callback definitions for all scriptable options in all annotations.
      • add drawTime property to LineLabel configuration of AnnotationPlugin.
      • add adjustScaleRange options to all annotations element.
    • add enabled property to DatasetsItemsSelector plugin in order to disable/enable the plugin at runtime.
    • add setXAxisID method to DatasetsItemsSelectorOptions class in order to set the scale id using IsScaleId implementation.
    • add new DatasetRangeClearSelectionEvent event for DatasetsItemsSelector plugin in to order to notify when a clear action has been performed on chart.
      • remove fireEventOnClearSelection properties has been removed from DatasetsItemsSelectorOptions class because an clear selection event will fire only if there is a event handler.
    • improve the logic of DatasetsItemsSelector plugin in order to leverage on new capabilities of scale item to retrieve the selected data instead of the index.
    • improve DataLabels plugin in order to leverage on callbacks cache which enables the complete configuration also at default or chart type levels.
    • improve DataLabelsOptionsBuilder class in order to manage the multi-labels configuration.
    • improve Labels plugin in order to leverage on callbacks cache which enables the complete configuration also at default or chart type levels.
    • improve LabelsOptionsBuilder class in order to manage the multi-labels configuration.
    • improve Zoom plugin in order to leverage on callbacks cache which enables the complete configuration also at default or chart type levels.
    • add RejectedCallback class to Zoom and Pan options in the ZoomPlugin in order to manage the event when pan or zoom fail because modifier key was not detected.
    • add StartCallback class to Zoom and Pan options in the ZoomPlugin in order to manage the event when pan or zoom are about to start.
    • add wheelModifierKey property to Zoom options in the ZoomPlugin in order to enable zoom only when modifier key was detected.
    • add overScaleMode property to Zoom and Pan options in the ZoomPlugin in order to enable zoom only when modifier key was detected.
    • add Limit and ScaleLimit configuration element to ZoomOptions configuration.
    • add Drag, Wheel and Pinch elements in Zoom configuration and options.
    • add threshold property to Wheel configuration and options.
    • add modifierKey property to Panand Wheel options in the ZoomPlugin in order to enable pan and wheel only when modifier key was detected.
    • add new reset(IsChart, IsTransitionKey) API methods to the ZoomPlugin class in order to set the update mode of updating chart.
    • add new zoom, pan and zoomScale API methods (with different signatures) to the ZoomPlugin class in order to pan and zoom on chart programmatically.
    • add ZOOM_TRANSITION_MODE constant to the ZoomPlugin class in order to get the custom transition mode provided by the plugin out-of-the-box.
    • implement new Controller interface in order to have methods before and after CHART.JS chart phases:
      • initialize
      • draw
      • linkScales
      • update
      • parse
    • implement easing value management for Meter and Gauge charts (and their controller) because in the new version of CHART.JS, easing value is not provided anymore.
    • add ControllerRegistrationHandler interface to set to a ControllerType constructor in order to enable the notification before and after the controller registration to CHART.JS.
    • add autoFontSize property to meter and gauge options in order to enable or disable auto calculation of font size and use the font size provided by the user.
    • add NONE item in the Render enumeration in order to disable the label rendering in meter and gauge charts.
    • enable fontColor property to be set by callback in meter and gauge charts.
    • add dataPoint property to TooltipItem class.
    • add onLabelPointStyle method to TooltipLabelCallback interface and TooltipLabelPointStyle class in order to manage the point style in tooltip.
    • create ItemSortCallback interface in order to be extended by legend and tooltip callback interfaces.
    • add sort callback (by LegendItemSortCallback class) to the LegendLabels configuration in order to sort the legend items.
    • move width and height options to BaseBoxitem class.
    • add checkAndGetValue static method to IsColor class.
    • remove static cache for canvas patterns and gradients creation, going to a cache for each canvas object factory in order that every factory must manage own objects.
    • add toFont method to Utilities class in order to get a Font object as parameter.
    • add the following properties to RegExp class;
      • lastIndex (static)
      • dotAll
      • global
      • ignoreCase
      • multiline
      • source
      • sticky
      • unicode
    • add groups method to RegExpResult in order to get the object to refer to certain token by string that a regular expression matches.
    • add CScheduler class in order to provide asynchronous and delayed task scheduling.
    • add CTimer class in order to provide asynchronous and repeatedly task scheduling.
    • add locale property to options and configuration.
    • implement INTL NumberFormat of ECMAScript Internationalization API.
      • implement CLocale class to manage locale objects.
      • implement the retrieving of locale from query string, <meta> element (as GWT is doing) or from navigator instance.
    • implement INTL DateTimeFormat of ECMAScript Internationalization API.
    • change the default date adapter library, using as default Luxon instead of Moment in order to enable I18N by default.
    • change the Adapter options and configuration of time axis in order to get a date adapter options (LUXON options) by date property.

    Development

    • change dependency for Google Closure Compiler, version v20210406.
    • change dependency for GWT Web toolkit, version 2.9.0.
    • change visibility of AbstractModel class, now it is public.
    • add @Override annotation to all overriding methods.
    • change the registering of tooltips positioner in order to apply to CHART.JS tooltips plugin.
    • override the hashCode $H property for NativeObject objects that GWT is adding to objects in order to set the property as NOT enumerable and NOT configurable.
    • change compare static method of Key interface in order to test if the keys are valid and not only not null.
    • add JsPluginHelper class in order to use CHART.JS registry feature to manage plugins.
    • create a controller template code generator and add a specific target in build.xml.
    • reintroduce the Findbugs project in order to check the bugs on project.
    • reduce the visibility of objects which must get a javascript native object as argument on constructor, using an envelop. This reduces the possibility to map a native object with a wrong wrapper.
    • remove D dataset type from AbstractChart class by IsDatasetCreator interface.
    • rename the controller id for Meter and Gauge charts adding charba prefix in order to avoid overlapping with possible other controllers with meter and gauge ids.
    • Window.enableResizeOnBeforePrint() method has been fully implemented by JSINTEROP.
    • reduce visibility of property handler classes leveraging on the interface.
    • implement ImmutableDate class to use to return the date value stored to chart configuration and to callbacks.
    • add equals and hashCode methods to standard keys implementation in options package.
    • add BaseLocation and BaseNavigator native object classes to get the location and navigator from DOM.
    • add Meta native object class to map a <meta> element from DOM document.
    • add boolean has(Object,String) method to JsHelper class in order to check if a property (by its key) belongs to an object or not. THis is done because CHART.JS merges objects without prototype, for security reason.
    • improve the visibility and reuse of the native object factories in order to have only 1 static instance from the object which must be created.
    • improve the management of properties used cross classes or packages.
    • use new location for legend, title and tooltips options, in plugins options node.
    • enable CI by GitHub Action, disabling Travis.
      • change GitHub Action workflow in order to use JDK11 to compile the project and install NodeJs12 in order to be compliant with new restrictions of SonarCloud.That means that Charba is compilable also on JDK11 but it will be release on JDK8 in order to be consumed by applications which are still using JDK8.
    • fix font and color fallbacks to the defaults values.
    • re-factor the configuration package in order to manage both configuration and chart options (at runtime).
    • change the NativeObject from a class to an empty interface in order to skip ClassCastException in J2CL when the object, passed from CHART.JS, doesn't have any prototype or is a proxy.
    • add methods to NativeObjectContainer in order to manage a unique internal ID, as string.
    • add image mime type and image quality to toDataUrl methods (with all combination and defaults) to Canvas object.
    • deploy javadoc (of all version) to GitHub Pages of Charba project.
    • deploy new documentation (with 3.3 and 4.0 versions, based on Docusaurus) to GitHub Pages of Charba-Wiki project.
    • deploy GWT showcase to GitHub Pages of Charba-Showcase project.
    • deploy J2CL showcase to GitHub Pages of Charba-Showcase-J2CL project.
    Source code(tar.gz)
    Source code(zip)
    charba-4.0-gwt-javadoc.jar(6.65 MB)
    charba-4.0-gwt-sources.jar(2.03 MB)
    charba-4.0-gwt.jar(4.00 MB)
    charba-4.0-javadoc.jar(6.45 MB)
    charba-4.0-sources.jar(1.89 MB)
    charba-4.0-sources.zip(2.06 MB)
    charba-4.0.jar(3.84 MB)
  • 3.3(Oct 21, 2020)

    3.3 is the last stable release.

    API JavaDoc: https://pepstock-org.github.io/Charba/3.3/index.html.

    Features

    • import last CHART.JS plugin version, 2.9.4.
    • import last Moment CHART.JS date adapter version, 0.1.2.
      • import Moment JS version 2.28.0 as dependency of Moment CHART.JS date adapter.
    • import last Luxon CHART.JS date adapter version, 0.2.2.
      • import last Luxon version, 1.25.0 as dependency of Luxon CHART.JS date adapter.

    Development

    Source code(tar.gz)
    Source code(zip)
    charba-3.3-gwt-javadoc.jar(4.91 MB)
    charba-3.3-gwt-sources.jar(1.60 MB)
    charba-3.3-gwt.jar(3.05 MB)
    charba-3.3-javadoc.jar(4.71 MB)
    charba-3.3-sources.jar(1.45 MB)
    charba-3.3-sources.zip(1.62 MB)
    charba-3.3.jar(2.87 MB)
  • 3.2(May 22, 2020)

    API JavaDoc: https://pepstock-org.github.io/Charba/3.2/index.html.

    Breaking changes

    • change FormatterCallback interface for DataLabelsPlugin enabling the formatting different kind of values of datasets which can be doubles, strings (for lining datasets) and arrays of doubles (for floating bars datasets).
    • change RenderItem object for LabelsPlugin managing different kinds of values of datasets which can be doubles, strings (for lining datasets) and arrays of doubles (for floating bars datasets).

    Features

    • Charba GWT showcase has been successfully tested on GWT 2.9.0.
    • implement floating-bars for BAR datasets. Thanks @rr22x.
    • change DataPoint class setting void setT(Date) and Date getT() to deprecated. Use void setX(Date) and Date getXAsDate() instead.
    • add setX and getXAsString methods to DataPoint class in order to manage X values as strings.
    • import new MOMENT.js library, version 2.25.3.
    • import new Luxon library, version 1.24.1.
    • import new Luxon adapter, at version 0.2.1.
    • import new Annotation plugin library, currently at master commit id 53630421b5d2e5d6790de3d32c1fb7d3cdc590e2.
    • add rotation property into LineLabel class of Annotation plugin.

    Fixed Bugs

    • #55 implement floating-bars for BAR datasets. Thanks @rr22x.
    Source code(tar.gz)
    Source code(zip)
    charba-3.2-gwt-javadoc.jar(4.91 MB)
    charba-3.2-gwt-sources.jar(1.60 MB)
    charba-3.2-gwt.jar(3.05 MB)
    charba-3.2-javadoc.jar(4.72 MB)
    charba-3.2-sources.jar(1.45 MB)
    charba-3.2-sources.zip(1.62 MB)
    charba-3.2.jar(2.87 MB)
  • 3.1(Mar 21, 2020)

    API JavaDoc: https://pepstock-org.github.io/Charba/3.1/index.html.

    Features

    Development

    • change WrapperPlugin class in order to be a native JsType instead of an exportable one.
    • remove NativeAdapters class because not used anymore.
    • change namespaces of JsType on native objects in order to be aligned with J2CL and Google Closure requirements.
    • reduce visibility of some internal values of Dataset.Property enumeration.
    • add SuppressWarnings("unusable-by-js") to some methods of ArrayObjectContainerList, ArrayIntegerList and ArrayEnumList to avoid J2CL taranspiler warnings, as reported into issue #83 into google/j2cl project
    Source code(tar.gz)
    Source code(zip)
    charba-3.1-gwt-javadoc.jar(4.85 MB)
    charba-3.1-gwt-sources.jar(1.58 MB)
    charba-3.1-gwt.jar(3.01 MB)
    charba-3.1-javadoc.jar(4.66 MB)
    charba-3.1-sources.jar(1.43 MB)
    charba-3.1-sources.zip(1.60 MB)
    charba-3.1.jar(2.84 MB)
  • 3.0(Feb 21, 2020)

    API JavaDoc: https://pepstock-org.github.io/Charba/3.0/index.html.

    Breaking changes

    • remove hard dependency with GWT Web toolkit in order to use Charba into other framework, J2CL - JavaToClosure base.
      • The dependency is still there (at runtime) because Charba is providing anyway the chart objects wrapper by GWT widget in order to maintain the compatibility with GWT features, like UIBinder and code splitting.
      • All GWT classes are now located into org.pepstock.charba.client.gwt in order to enable the release of 2 artifacts for Charba, 1 without any GWT dependencies and 1 with GWT widgets and other few features only for GWT:
        • jar library for J2CL has got the current name, charba-[version.release].jar.
        • jar library for GWT has got the current name, charba-[version.release]-gwt.jar.
      • both artifacts are providing the GWT module (J2Cl without gwt-user inheritance) in order to use on GWT with or without widgets and code splitting.
    • add dependency at runtime (and compile) to JSINTEROP base, version 1.0.0.
    • create new DOM tree manager in order to remove all dependencies from other frameworks (for instance GWT, elemental2, GWT Elemento) but provide some hook (helpers or methods to cast to framework's element) where Charba can be linked with those frameworks. The Charba DOM manager does NOT implement a full DOM engine but only is needed to Charba itself.
      • create base DOM elements (event target, node, element, HTML element, document, HTML document).
      • create specific DOM elements, internally used, for instance div, span, image, table, table row, table cell, heading, line break, text node, canvas, CSS style properties.
      • create canvas items, for instance context 2d, canvas gradient, canvas pattern, text metrics.
      • create base DOM events, base on mouse and touch events and relative event listeners.
      • create a safe html package (GWT like) for HTML escaping.
      • create event handlers classes (GWT like) to manage chart events as is today.
      • implement mutation observer in order to be able to trigger when a chart is attached or detached from DOM document.
    • remove from Meter and Gauge charts the number formatting going to
      • precision number with the amount of decimal digits to use.
      • new ValueCallback in order to customize as the developer wants the value into the charts .
    • remove from PercentageCallback the number formatting going to the precision number with the amount of decimal digits to use.
    • change constructor of ArrayEnumList which was getting a enum class because J2CL doesn't support Class.getEnumConstants.
    • change ArrayListHelper.list method for Key enumerations which was getting a enum class because J2CL doesn't support Class.getEnumConstants.
    • change Key.hasKeyByValue and Key.getKeyByValue methods which were getting a enum class because J2CL doesn't support Class.getEnumConstants.

    Features

    • add adapters.date property into scale options and configuration in order to configure date time adapters.
    • change the injection of CHART.JS, using the Chart.min.js:
      • the Chart.bundle.min.js, used till version 2.8, won't be provided anymore from CHART.JS 3.x.
      • due to the previous item, the java script date time library Moment won't be provided by CHART.JS.
    • enable the options to decide which java script date time library (available for CHART.JS out of the box) to use:
      • the injection of java script date time library (and its CHART.JS adapter) will be provided out of the box by Charba. The different library can be chosen using a different resource client bundle, available both embedded and deferred mode. The current resource client bundle injects MOMENT.js.
      • CHART.JS has got the adapters for:
        • MOMENT.js which remains the default for Charba, enabled by EmbeddedResources or DeferredResources classes.
        • Luxon which can be enabled by LuxonEmbeddedResources or LuxonDeferredResources classes.
        • Date-fns which can be enabled by DatefnsEmbeddedResources or DatefnsDeferredResources classes.
      • change the EntryPointStarter (for deferred injection) in order to accept ONLY deferred resource client bundle.
      • provide some classes in order to use the date time adapter in GWT project as well, to manage, parse and format dates using the same object of CHART.JS.
    • add capability to ZoomPlugin.enable methodsto avoid to inject HammerJS if it is already loaded by another library or used in whatever other part of application.

    Fixed Bugs

    • #53 new charba-[version.release].jar artifact without any GWT dependency is now available.

    Development

    • remove Extensions client bundle moving the text resources of extensions java scripts into the classes which are enabled the capabilities in order to avoid to add the java script sources if not used.
    • change Date storing into native object from JsDate to double.
    • change name to OptionsEnvelop class into Envelop because it can contain a generic object.
    • change from BODY to HEAD element where the resources will be injected.
    • change unique ID of injected resources to avoid to inject the same resource twice, invoking the Injector programmatically.
    • normalize the override method name of a NativeObjectConatiner implementation.
    • improve the DefaultPlugin implementation in order to use the factory and returns an empty options instead of null.
    • change TimeUnit and DefaultFormats to be aligned with new date time library adoption.
    • change format from JsDate to double to store Date into configuration and options element.
    • change and reduce visibility of ClientBundle interfaces in order to avoid any extension on predefined ones.
    • add checking on arguments in JSON class in order to avoid any NullPointerExcpetion.
    • remove toJson method from chart instances.
    • remove FINDBUGS configuration file from project because used internally.
    Source code(tar.gz)
    Source code(zip)
    charba-3.0-gwt-javadoc.jar(4.90 MB)
    charba-3.0-gwt-sources.jar(1.58 MB)
    charba-3.0-gwt.jar(2.99 MB)
    charba-3.0-javadoc.jar(4.71 MB)
    charba-3.0-sources.jar(1.43 MB)
    charba-3.0-sources.zip(1.60 MB)
    charba-3.0.jar(2.81 MB)
  • 2.8(Jan 16, 2020)

    API JavaDoc: https://pepstock-org.github.io/Charba/2.8/index.html.

    Breaking changes

    • move DatasetRangeSelectionEvent and DatasetRangeSelectionEventHandler classes into events package.
    • change getOptions and setOptions methods to store and load plugin options into configuration, global chart, global and dataset options in order to use AbstractPluginOptions and AbstractPluginOptionsFactory classes instead of a simple NativeObjectContainer and NativeObjectContainerFactory ones.
      • new create method signature to create a plugin options by a NativeObject and IsDefaultsPlugin object (for default).
    • change getDefaultChartOptions method signature into IsChart interface in order to get a IsDefaultScaledOptions instead of a ChartOptions instance.
    • change AbstractChart class adding the chart Type as argument of constructor.
      • the getType method has been set as final.
      • add to all charts implementation new protected constructor in order to extend the existing charts passing the controller type.

    Features

    • import last ZOOM CHART.JS plugin version, 0.7.5.
      • import last HAMMER JS version, 2.0.8 as dependency of ZOOM CHART.JS plugin.
      • full implementation of configuration for ZOOM plugin.
    • import ANNOTATION CHART.JS plugin, at master commit id 7037eea71314613a8af83d2298241841cbc34c4f.
      • full implementation of configuration for ANNOTATION plugin.
    • add defaultLineHeight property to options.
    • move drawOnAttach and destroyOnDetach chart property into options in order they can be set globally.
    • add the following hover styles (set by callback as well) on lining datasets, from CHART.JS version 2.9.3 (see PR here and its limitations):
      • hoverBackgroundColor
      • hoverBorderCapStyle
      • hoverBorderColor
      • hoverBorderDash
      • hoverBorderDashOffset
      • hoverBorderJoinStyle
      • hoverBorderWidth
    • add GoogleChartColor enumeration with Google Chart colors.
    • add GoogleChartScheme enumeration with Google Chart colors scheme to use into ColorSchemes plugin.
    • add onBeforeConfigure and onAfterConfigure methods to ChartsLifecycleListener in order to be able to be notified before and after chart configuration setup. Also invoked when the chart is reconfigure.
    • add IsDefaultsPlugin interface to map plugins options defaults.
    • add getWholeOptions method to IsChart interface in order to get the whole options configuration of a chart (merged global, global chart and chart options).
    • add constructors to plugin options in order to create the object relating it to a chart instance to get the default values, if needed.
    • add 2 store methods to AbstractPluginOptions class in order to store the plugin options into a global chart and dataset options.
    • add setOptions, getOptions and getOptionsAsList methods to options, configuration and datasets removing plugin ID as parameter because already set inside the plugin options and factory.
    • add removeOptions methods to options, configuration and datasetss in order to remove the plugin options by plugin id.
    • add borderDashOffset property to DatasetsItemsSelector plugin options.
    • add new use cases to Charba showcase, now there are more than 160 cases.

    Fixed Bugs

    • #29 add a section into Getting Started wiki page how to use polyfill, for IE11 or other aged browsers, without internet connection. Thanks @ssamikk
    • #49 change the implementation in order to maintain correctly the status of chart drawing.
    • #50 add checking on selection track in order to be sure that an area has been selected.
    • #51 change the implementation about plugin options and how to manage defaults values.

    Development

    • add empty protected method to NativeObjectContainer in order to know if there is any property into native object and improving performances.
    • add isValid, isConsistent and checkIfValid static methods to IsColor interface in order to check the consistency of interface when passed as argument, reducing null pointer exception
    • move alpha, toRGBA, toRGB, toHex, toHSLA, toHSL, toRGBs, brighter, brighter, darker and darker methods as default methods into IsColor interface in order that whoever will implement the interface could provide only red, green, blue and alpha values.
    • move some methods of common JsHelper into a dedicated and protected helper in order to hide those methods.
    • add compile dependency with last version 2.0.0 of JSINTEROP annotations.
    • add compile dependency with last version v20200101 of Google Closure Compiler.
    • add 2 load methods to Merger in order to load default and whole options chart instance, removing the previous get.
      • reduce the accessibility to methods by an OptionsEnvelop object
    • add getAllIds method to plugin options and configuration classes in order to get the list of configiured plugin ids.
    • add checking to setOptions, getOptions and getOptionsAsList methods to options, configuration and datasets in order to assure that the plugin id passed as argument is the same of plugin options.
    Source code(tar.gz)
    Source code(zip)
    charba-2.8-javadoc.jar(4.16 MB)
    charba-2.8-sources.jar(1.21 MB)
    charba-2.8-sources.zip(1.31 MB)
    charba-2.8.jar(2.47 MB)
  • 2.7(Dec 16, 2019)

    API JavaDoc: https://pepstock-org.github.io/Charba/2.7/index.html.

    Breaking changes

    • Every dataset sets automatically own type (chart type). This is the first step going to new Chart.JS feature about dataset default options, available from version 2.9.2.
      • add new constructors in order to extend the dataset for new controllers.
      • add new HorizontalBarDataset class.
        • this is a breaking change because now the HorizontalChart class needs that dataset class instead of BarDataset.
      • remove setType method from Dataset class.
    • change the Plugin interface into to have afterInit the native chart instance .
    • change LegendCallback interface in order to return a SafeHtml object instead of use SafeHtmlBuilder.
    • change TooltipTitleCallback, TooltipBodyCallback and TooltipFooterCallback interfaces in order to return a list of strings instead of an array.
    • change LegendLabelsCallback interface in order to return a list of LegendLabelItem instead of an array.
    • change LegendLabelsCallback interface adding a parameter with a list of LegendLabelItem, as default ones provided by CHART.JS.
    • change Labels object in order to load a list of strings and return a list of string instead of an array.
    • change ChartPointer, ColorSchemes and DatasetItemsSelector plugins into a singleton pattern to avoid useless instances because already implemented in order to be added to whatever chart or to the global options.

    Features

    • import last CHART.JS version, 2.9.3
      • add clip property to line dataset object.
    • add toCSSBackgroundProperty methods for Gradient and Pattern into Utilities class in order to get the CSS property value of the canvas object.
    • create HtmlLegend plugin in order to create HTML legend instead of using the CHART.JS one.
      • add some methods to LegendLabelItem class in order to manage text as HTML.
      • add new Html legend builder options (globally and per chart instance).
      • add HtmlLegendTextCallback interface to manage text of legend as HTML.
    • create DefaultPlugin enumeration with CHART.JS default plugin ids.
      • add isForcedlyDisabled and setEnabled methods into Plugins configuration and options object in order to manage DefaultPlugin instances.
    • add capability to TilesFactory to use PointStyle instances as shapes for new tiles.
    • add UpdateConfigurationBuilder class in order to create UpdateConfiguration for chart update.
    • add UiGradient enumeration in order to have a set of gradients out of the box, see UiGrandients.com.
    • add to Default class the invokeLegendOnClick, invokeLegendOnHover and invokeLegendOnLeave methods which enable the invocation of event's callbacks provided out of the box by CHART.JS. These methods can be helpful implementing a custom event handler on legend to delegate CHART.JS to manage the event.
    • add to Default class the invokeChartOnClick and invokeChartOnHover methods which enable the invocation of event's callbacks provided out of the box by CHART.JS. These methods can be helpful implementing a custom event handler on chart to delegate CHART.JS to manage the event.
    • add to Default class the generateLabels methods which enable the invocation of the callback provided out of the box by CHART.JS.
    • add getElement method to IsChart interface in order to get the element of widget.
    • add getBaseType to IsChart interface in order to get the base chart type which if is a ControllerType is the chart type extension or chart type itself.
    • add ensureCssInjected to Injector class in order to enable injection of CSS styles as text resource and not by CSS resource, provided by GWT.
    • add brighter and darker methods on IsColor interface.
    • completely new showcase. with more than 100 cases.

    Fixed Bugs

    • #43 change the implementation in order to manage whatever chart types, based on dataset or data index.
    • #44 check if the plugin is forcedly disable (by boolean) instead of checking if there is at least an option instance. New isForcedlyDisabled method has been added to Plugins classes into options and configuration and the check has been changed into GlobalPlugins class.
    • #45 add specific LegendLabelsCallback implementation for ColorSchemes plugin in order to change the legend when a color scheme is changed during the chart lifecycle.
    • #47 remove useless checks to activate ChartPointer plugin in order to have a cursor also on legend.
    • #48 change selection items taking care if a bar chart has got cartesian axes with offset to true.

    Development

    • implement BarStacker and HasBarStacker classes in order to manage stack property for bar and horizontal bar charts, reducing duplications of code.
    • add size and isEmpty methods into Labels class.
    • rename toFont into toCSSFontProperty method into Utilities class.
    • the ChartBackgroundColor plugin applies the background color (if color or pattern) to the chart GWT widget and not only to canvas.
    • add to Default class the generateLegend method which will invoke the default HTML legend generator (CHART.JS out of the box implementation) for a chart.
    • create CallbackFunctionContext native object to map this of javascript in order to invoke CHART.JS functions.
    • add to Charts object a map to manage Chart native objects and methods to retrive it by chart or its id.
    • add by default to all charts, an internal plugin to track Chart native object instances into Charts.
    • change event for chart and legend adding Chart native object instance as context.
    • create a LegendEventProperty enumeration with all property names to set legend event callbacks.
    • create a ChartEventProperty enumeration with all property names to set chart event callbacks.
    • add isValid, checkIfValid and isAbstractChart static methods to IsChart interface.
    • change JS helpers static names.
    • add AbstractCursorPointerOptions class as options for plugins in order to have a unique options to extend when plugins need to interact with cursor of an element.
    • add checking into ControllerType do not override existing chart types by its name.
    • add checking when a plugin has been added:
      • if plugin id is already loaded in the chart, it overrides the current one.
      • if plugin id is already loaded in the default global plugins, it will be removed from chart instance .
    • add charba prefix to all plugins provided out of the box by Charba.
    • change updateOptions method name of IsChart interface into reconfigure.
    • add isConsistent and checkIfConsistent methods to IsChart interface which checks if not only chart and its id are not null but also other elements (i.e. options, type) .
    • add Constants class with common constants among packages in order to reduce dependencies and improve GWT built module.
    • add retrieveDataset method to Data class in order to get dataset instance by a LegendItem or by TooltipItem.
    • add checks on public methods in order to avoid any NullPointerException.
    • update internal plugin to apply patterns and gradients into datasets in order to apply patterns by onBeforeUpdate method (instead of onBeforeDatasetsDraw) to avoid that the legend will not be updated.
    • add isConsistent method into ChartAreaNode object in order to be aware if the object is already initialized.
    • update default values for font properties, retrieving those from Default.get().getGlobal() instance instead of the constant values.
    • add an internal legend labels callback, wrapping if a user implementation has been set, in order to manage the legend when a dataset uses gradients.
    Source code(tar.gz)
    Source code(zip)
    charba-2.7-javadoc.jar(3.86 MB)
    charba-2.7-sources.jar(1.12 MB)
    charba-2.7-sources.zip(1.21 MB)
    charba-2.7.jar(2.27 MB)
  • 2.6(Nov 3, 2019)

    API JavaDoc: https://pepstock-org.github.io/Charba/2.6/index.html.

    Features

    • import last CHART.JS version, 2.9.2
      • add align property to legend configuration object.
      • add rotation property to legend item object.
      • add spanGaps property to radar chart dataset and to radar options configuration.
      • line and radar datasets are now scriptable by callbacks for following options:
        • backgroundColor
        • borderCapStyle
        • borderColor
        • borderDash
        • borderDashOffset
        • borderJoinStyle
        • borderWidth
        • cubicInterpolationMode (only line chart)
        • fill
      • remove min and maxproperties from Time class (both options and configuration) and add them to CartesianTimeTick (for configuration) and Ticks (for options), as new CHART.JS implemented.
      • implement scaleService to get and set scale defaults by scale type.
      • add z property to gridline configuration object.
      • add z property to tick configuration object.
      • add sampleSize property to cartesian tick configuration object.
      • add display property to point labels configuration object.
      • add angle property to arc configuration object.
      • add rtl and textDirection properties to legend configuration object.
      • add rtl and textDirection properties to tooltips configuration object.
      • add order property to bar, horizontal bar, bubble, line, radar and scatter datasets.
      • add minNotZero property into ScaleItem.
      • remove LABEL and SINGLE from InteractionMode class because obsoleted.
        • SINGLE was replaced setting InteractionMode.NEAREST and intersect options to true.
        • LABEL was replaced setting InteractionMode.INDEX.
      • remove getXLabel and getYLabel methods from TooltipItem class, because obsoleted, and use instead getIndex and getValue methods.
      • move barPercentage, categoryPercentage, barThickness, maxBarThickness and minBarLength options from scale to bar dataset.
      • manage hover property from ScriptableContext class by isActive method in order to reuse the same object between Chart.js and Datalabels plugin scriptable options.
    • import last DATALABELS CHART.JS plugin version, 0.7.0
      • Implement multiple labels per data element
    • add getPointStyleAsImage and isPointStyleAsImage methods to LegendLabelItem class in order to manage images as point styles.
    • add setPointStyle methods, setting a image instance, to LegendLabelItem class in order to manage images as point styles.
    • add methods to get min and max properties as a date from ScaleItem.
    • add methods to get ticks items (not only values) from ScaleItem.
    • add methods updateOptions to charts in order to update the options, mutating the options property in place, and update the whole chart.

    Fixed Bugs

    • #23 add methods updateOptions to charts in order to update the options, mutating the options property in place, and update the whole chart. Thanks @jake1164
    • #36 removed setShowLine method (which it will set always to false the options) from ScatterDataset in order to be able to set it freely. Thanks @elatoskinas
    • #37 added ANT target build-all-sources to create a ZIP file (charba-[version.release]-sources.zip) which will be added to GitHub release page as artifact to be consumed, every time new release will be published. The file will contain all sources (java, js) for security scanning purposes. Thanks @jake1164
    • #40 added scale configuration to the chart one, only for chart with a single scale.
    • #42 added CategoryTickCallbackand TimeTickCallback to manage axes which are managing strings and dates as data types. Thanks @ak80
      • add CategoryTickCallbackand TimeTickCallback to manage axes which are managing strings and dates as data types.
      • add TimeTickItem in order to manage the different signature of CHART.JS callback when there is a cartesian time axis.
      • update AxisBuildTicksCallback adding the list of created ticks as double into onAfterBuildTicks method.
      • add CategoryAxisBuildTicksCallbackand TimeAxisBuildTicksCallback to manage axis build ticks callback which are managing strings and dates as data types.

    Development

    • reduce visibility to StandardKey class constructor in order to use Key.create(String key) method.
    • set private constructor to JSON class in order to avoid any instantiation.
    • add compare and equals methods to Key class.
    • move (from LegenItem class) and change getLineWidth, getStrokeStyle and getPointStyle methods into LegendLabelItem class in order to return a single item instead of a list of them.
    • change default cubicInterpolationMode property to return into LineDataset class.
    • use ARC element to get default background color, border color and border width properties because used by most cases of datasets (reduce code duplications).
    • change visibility to Filler class, making it also extendable, in order to be able to implement fill scriptable callback.
    • reset of callback instances when the property has been set with object object type.
    • improve the single scale options management when a null is passed as argument to chart options.
    • change type from int to double for min and max properties into ScaleItem.
    • remove the inner options from cache of AbstractPluginCachedOptions when chart is destroy.
    • remove BarCategoryAxis class because is not longer needed.
    Source code(tar.gz)
    Source code(zip)
    charba-2.6-javadoc.jar(3.65 MB)
    charba-2.6-sources.jar(1.01 MB)
    charba-2.6-sources.zip(1.09 MB)
    charba-2.6.jar(2.04 MB)
  • 2.5(May 20, 2019)

    API JavaDoc: https://pepstock-org.github.io/Charba/2.5/index.html.

    Features

    • TimeSeriesLineChart and TimeSeriesBarChart to manage time series charts easier.
      • TimeSeriesLineOptions and TimeSeriesBarOptions to manage time series chart configuration.
      • TimeSeriesLineDataset and TimeSeriesBarDataset to manage time series data.
      • TimeSeriesItem to improve setting of the data into a time series chart
    • GWT Material scheme can load a gradient with the sequence of colors

    Documentation

    • improve Wiki removing typo and wrong link to classes
    • add to Wiki new timeseries page
    • fix typo on javadoc

    Development

    • null pointer exception avoidance for set color by IsColor instance
    • null pointer exception avoidance for all public methods where an argument is passed
    • fix setTextStrokeColor and setTextShadowColor methods of DATALABELS plugin option
    • ObjectType default is Undefined instead of Object
    • change IllegalArgumentException into ResouceLoadException into EntryPointStarter
    • apply LABELS plugin pull request #95
    • change the key of injected resources using also their class name to avoid overlaps with custom injection
    • change the name of java script Charba classes adding Charba prefix to avoid conflicts with other java script packages
    Source code(tar.gz)
    Source code(zip)
    charba-2.5-javadoc.jar(3.53 MB)
    charba-2.5-sources.jar(992.93 KB)
    charba-2.5-sources.zip(1.04 MB)
    charba-2.5.jar(1.95 MB)
  • 2.4(Apr 15, 2019)

    API JavaDoc: https://pepstock-org.github.io/Charba/2.4/index.html.

    Features

    • implement new ColorSchemes out-of-the-box plugin to enable to pick the color combination for charts from the predefined or custom color schemes
    • implement TitleClickHandler to catch click events on title of charts
    • implement AxisClickHandler to catch click events on axes of charts
    • update ChartPointer plugin to change cursor on title, axes or legend when the handlers are added
    • create GWT material scheme
    • enable custom number format to NoSelectedDatasetTicksCallback
    • change TilesBuilder into a TilesFactory (no singleton)
    • implement TilesBuilder as sequence of set methods to create a pattern or canvas pattern
    • add CharacterShape for tiles in order to draw a char into a tile, as pattern
    • integration with Sonar.io
    • implement abstract class for tooltips title, body, label and footer callbacks

    Documentation

    • javadoc for all classes
    • wiki pages
      • add ColorSchemes plugin
      • add color scheme out-of-the-box tables
      • add tiles builder and tiles factory
      • add new CharacterShape shape
      • create specific wiki pages for color tables
      • add new event handlers
      • add new configuration for ChartPointer plugin
      • change all samples about callbacks, events, plugins and controller to use new interface IsChart instead of AbstractChart<?,?> and enumeration to uppercase
    • change showcase to implement new features

    Development

    • fix issue about ChartPointer setting cursor
    • getType of dataset returns null is not set
    • change visibility of HovingDataset, HovingFlexDataset and LiningDataset
    • change visibility of Color to checkAlphaWithinBounds method
    • fix type value of default alpha (from 1F to 1D)
    • DatasetsItems selector plugin is not compatible with Dataset selection handler
    • move reading of option of ChartPointer into beforeUpdate method of plugin
    • expose constants of callbacks
    • remove final modifier to methods where class already final
    • changed visibility of some methods, from protected to package
    • change visibility of IsShape and ShapeDrawer classes
    • change key for tile caching to enable also for image and character shape drawers
    • transform and rotate of 180 degrees Star and EmptyStar shapes
    • deprecated some methods of Meter and Gauge datasets and options
    • change internal add and remove handler management
    • improve Pattern and Gradient creation engine
    • rename from methods into Array classes into fromOrEmpty to avoid any conflict with native Array.from javascript implementation
    • fix ScaleLongestTextCacheItem because didn't manage data property properly
    • fix CSS font string creation

    Fixed Sonar Issues

    • squid:S00115 - Constant names should comply with a naming convention
      • change all enumeration name to uppercase
    • javascript:S3403 - Strict equality operators should not be used with dissimilar types
      • change compare into label plugin
    • squid:S2583 - Conditionally executed blocks should be reachable
      • fix addCollection method removing check if new item is added
    • squid:S1192 - String literals should not be duplicated
      • change string into color schemes as constants
    • squid:S2293 - The diamond operator ("<>") should be used
    • squid:EmptyStatementUsageCheck - Empty statements should be removed
    • squid:S1452 - Generic wildcard types should not be used in return parameters
      • change callbacks, events, plugins and controller to use new interface IsChart instead of AbstractChart<?,?>
      • remove type on colors and point style callbacks
    • squid:ModifiersOrderCheck - Reorder the modifiers to comply with the Java Language Specification
    • squid:S1161 - "@Override" should be used on overriding and implementing methods
    • squid:S1604 - Anonymous inner classes containing only one method should become lambdas
    • squid:CommentedOutCodeLine - Sections of code should not be commented out
    • squid:S4784 - Using regular expressions is security-sensitive
    • squid:MissingDeprecatedCheck - Deprecated elements should have both the annotation and the Javadoc tag
    • squid:S3776 - Cognitive Complexity of methods should not be too high
    • common-java:DuplicatedBlocks - Source files should not have any duplicated blocks
    Source code(tar.gz)
    Source code(zip)
    charba-2.4-javadoc.jar(3.44 MB)
    charba-2.4-sources.jar(970.87 KB)
    charba-2.4.jar(1.91 MB)
  • 2.3(Mar 27, 2019)

  • 2.2(Mar 25, 2019)

    API JavaDoc: https://pepstock-org.github.io/Charba/2.2/index.html.

    PAY ATTENTION

    Due to issue #33, this version is broken into MVN repository. Go to version 2.3.

    Features

    • import last CHART.JS version, 2.8.0
      • new enum BorderSkipped has been created in order to manage also a boolean value of property
      • add cubicInterpolationMode line defaults implemented and set by enum instead of string
      • add borderAlign to draw inner border for arc elements
      • new display on scale/axis
      • add midpoint interpolation to steppedLine
      • add minBarLength scale option for bar chart
      • add support for gridLines/angleLines borderDash for polar area and radar charts
      • deprecate tooltip item xLabel and yLabel properties
      • tooltip model adding missing properties
      • add lineHeight to pointLabels and ticks in scale options
      • add onLeave callback to legend.
      • new context for callbacks
      • bar options are now scriptable by callbacks
      • line and Radar options are now scriptable by callbacks
      • pie, doughnut and polararea are options scriptable by callbacks
      • add enabled on Major ticks
      • add lineHeight as string
      • add point labels fontColor as array
      • set default label value at dataset level
      • implement borderWidth object for bar datasets
      • implement tooltip positioner
    • import last DATALABELS CHART.JS plugin version, 0.6.0
      • remove display enum from datalabels plugin
      • change Context for Datalabels plugin, using the CHART.JS one
      • change all callbacks of Datalabels leveraging on CHART.JS ones where applicable
    • implement new features to create tiles to use as patterns into datasets backgrounds
    • re-implement merge method to add custom configuration.
    • implement on before print method to enable or not resizing of all active charts before printing
    • support HSL(A) color format, tranforming it into RGB(A)

    Fixed Bugs

    • #27 optimize injection of javascript resources for GWT code splitting. Thanks @peet-hex
    • #28 re-implement merge method to add custom configuration. Thanks @ezpzlmnsqz1337
    • #29 fix compatibility with IE11. Thanks @ak80
    • #30 Patternomaly in not provided out of the box but implement new features to create tiles to use as patterns into datasets backgrounds. Thanks @FrankW76

    Documentation

    • javadoc for all classes
    • wiki pages
      • change overview and getstarted pages, adding the mandatory code into getstarted
      • add new properties for Chart.JS 2.8.0
      • add scriptable options
      • add tiles builder
      • add matrix with components version on Charba versions
      • add instructions how to build the project
    • change showcase to implement new features

    Development

    • optimize injection of javascript resources for GWT code splitting
    • implement utility to reduce double coding
    • abstract plugin options and factories to reduce double coding
    • add dependency with Google Closure compiler to minify by ANT of CHARBA javascript object
    • minify CHARBA javascript object by ANT during compile task
    • minify LABELS plugin javascript object by ANT during compile task (waiting for pull request approval)
    • move external javascript resources into specific folder, resources, instead of into src
    • add task to get CHART.JS (latest and offical version) minify bundle object into retrieve folder
    • add task to get LABELS plugin (latest and offical version) minify object into retrieve folder
    • fix defaults of label on dataset
    • improve JSFunction defintions
    • improve access to chart instance by chart CHART.JS instance (mainly on plugins), reducing the visibility of charba id method
    • use of common creation pattern method for chart background plugin to improve performance
    • new AbstractPluginOptions which can store itself, by store methods, into defaults or chart plugin options (shortcut)
    • all weight properties set as double
    • time axis support double for stepSize
    • change name context for controllers in ControllerContext
    • rename showlines property into showLine into line dataset
    • rename the methods, into invoke, of scriptable options of LABELS and DATALABELS plugins
    • implement travis integration for CI
    Source code(tar.gz)
    Source code(zip)
    charba-2.2-javadoc.jar(3.17 MB)
    charba-2.2-sources.jar(817.19 KB)
    charba-2.2.jar(1.70 MB)
  • 2.1(Feb 28, 2019)

    API JavaDoc: https://pepstock-org.github.io/Charba/2.1/index.html.

    Features

    • new Pattern implementation for dataset
    • new Gradient implementation for dataset
    • full implementation of DataLabels plugin included as Charba component
    • full implementation of Labels plugin included as Charba component
    • new DataLabels plugin callbacks provided out-of-the-box
    • full implementation of filling mode
    • new AnnotationBuilder utility to add HTML code on chart and its canvas.
    • chart background color plugin accepts Pattern and Gradient
    • replace invalid plugin id and controller type exception with illegal argument exception
    • new charts lifecycle listeners
    • add replacer function into JSON utility
    • add stringifyWithReplacer methods to JSON utility with out-of-the-box replacer to avoid TypeError cycle object
    • add dir and dirxml methods in Console utility
    • set images as point styles in all configuration elements
    • add fireEventOnClearSelection property of the datasets items selector plugin options to enable or disale firing events on clear selection
    • add clearSelection element into datasets items selector plugin options in order to have into chart a point to click for clearing the selection

    Fixed Bugs

    • #17 with new annotation builder you can add HTML to canvas. Thanks @nseb
    • #26 clean of canvas to fix errors, in datasets selector plugin, when chart has got a transparent background color. Thanks @niekvanderkooy

    Documentation

    • new and update Wiki pages
      • DataLabels and Labels plugins
      • implementation out of the box (callbacks)
      • utilities
      • added gradients and filling mode to color page
      • added available color tables to color page
      • changes all links to javadoc instead of source code

    Development

    • null pointer exception avoidance on arrays
    • disable global plugins, imported as component, by default
    • fix toJSON method of ChartNode to avoid TypeError cycle object
    • added chart defaults to dataset entity when created by newDataset chart method
    • fix bug of getValueOrArray of NativeObjectContainer
    • refactoring of Labels dataset object
    • Charba implemented plugins expose the own ID and FACTORY as static references
    • multiple plugin options (as list) stored into chart options
    • add set to padding scale and layout to set the same value for all dimensions
    • fix hasOptions method for plugin options
    • clean up of all handle registrations when chart is destroying
    • add internal property to know the type of plugin options
    • add internal property to know the type of data in a dataset
    • remove merge method to options to add object (was implemented for plugins which not compliant with Chart.js rules)
    • remove setting of the default cursor from chart pointer plugin
    • remove some merge methods from Merger class because not used
    • improve data items selector to change when data url image is changed
    • Charba java script helper minify
    • fix wrong parameter (object type) on events methods of a plugin
    • prevent click event after drawing datasets items selection area
    • new dataset methods to get data, datapoints and datastrings to add items without creating own list or array
    • add sRGB value to IsColor interface and to its implementation.
    Source code(tar.gz)
    Source code(zip)
    charba-2.1-javadoc.jar(2.92 MB)
    charba-2.1-sources.jar(797.81 KB)
    charba-2.1.jar(1.54 MB)
  • 2.0(Jan 25, 2019)

    API JavaDoc: https://pepstock-org.github.io/Charba/2.0/index.html.

    Features

    • Remove GWT JSNI (no native methods implementation by embedded java script code) and GWT JSINTEROP has been implemented
      • GWT JSNI will be removed with GWT 3
      • see wiki about what is changed to compile GWT projects
    • changed the way to import Chart.JS plugins (see wiki)
    • new Helpers class (singleton) which maps the Chart.JS helpers capability
    • new methods signature for Axis* callbacks
    • new method signature for TickCallback callbacks
    • new Charba plugins (in new org.pepstock.charba.client.impl.plugins package)
      • Chart cursor (see wiki)
      • Datasets Items Selector for drill down and range selection (see wiki). Thanks @Eljah
    • gauge and meter Charba charts are controllers implementation instead of plugins ones (in version 1.x)
      • added new animatedDisplay property
    • new java script utilities in org.pepstock.charba.client.utils package, for debugging
      • Window java script object with more methods of GWT ones
      • Console java script object with log method
      • JSON java script object to stringfy objects
    • Time axis element can be configured at global level
    • set images as point styles at dataset level
    • set canvas patterns as background and hover background at dataset level

    Fixed Bugs

    • #21 new datasets items selector plugin for drill down and range selection (see wiki). Thanks @Eljah

    Documentation

    • added package-info
    • complete all java docs on all classes
    • new Wiki pages
      • Colors (and patterns)
      • Implementation out of the box (callbacks, charts, plugins)

    Development

    • use SimplePanel instead of Widget
    • use Canvas instead of CanvasElement
    • new packages and changed ones
      • org.pepstock.charba.client.configuration contains all elements to use to configure a chart instance (know as chart options at instance level).
        • In version 1.x the package was org.pepstock.charba.client.options
      • org.pepstock.charba.client.defaults contains all interfaces need to provide defaults value of the chart options.
      • org.pepstock.charba.client.defaults.chart contains the default values of chart options based on type of chart instance.
      • org.pepstock.charba.client.defaults.globals contains the default values of chart options for all chart types and used in the global options.
      • org.pepstock.charba.client.impl.callbacks contains some callbacks implementations, available out-of-the box.
        • In version 1.x the package was org.pepstock.charba.client.callbacks.impl
      • org.pepstock.charba.client.impl.charts contains METER and GAUGE chart implementations (based on controllers), available out-of-the box.
      • org.pepstock.charba.client.impl.plugins contains some plugins implementations, available out-of-the box.
        • In version 1.x the package was org.pepstock.charba.client.plugins.impl
      • org.pepstock.charba.client.options contains all elements to use to configure charts at global level (know as chart global options).
        • In version 1.x the package was org.pepstock.charba.client.defaults
      • org.pepstock.charba.client.utils contains some java script utilities useful for debugging.
    • class names changed
      • from FilterHandler to FilterCallback
      • from LegendFilterHandler to LegendFilterCallback
      • from TooltipFilterHandler to TooltipFilterCallback
      • from TooltipItemSortHandler to TooltipItemSortCallback
    • new array, and related lists, are changed into org.pepstock.charba.client.commons
    • new base java script object classes
      • from GenericJavaScriptObject to NativeObject
      • from JavaScriptObjectContainer to NativeObjectContainer
    • new ScaleType enum to map all scale types
    • new Type interface
      • new method to get the ScaleType
    • new ChartType enum
      • new method to get the ScaleType for each chart type
    • new ControllerType implementation
      • new constructor with ChartType (if extended) or ScaleType (if new)
    • new Controller interface
      • removed getChartType method
    • new Plugin interface
      • new method onConfigure
      • removed the plugin options as argument object from all methods
    • changed setOptions for plugin options on chart configuration`
      • added the same method into Global options and Dataset
    • Defaults class is a singleton, getting instance by get() static method.
    • changed name of methods to set Axis* callbacks into Axis configuration item
    Source code(tar.gz)
    Source code(zip)
    charba-2.0-javadoc.jar(2.29 MB)
    charba-2.0-sources.jar(626.16 KB)
    charba-2.0.jar(1.19 MB)
  • 1.7(Dec 4, 2018)

    API JavaDoc: https://pepstock-org.github.io/Charba/1.7/index.html.

    Features

    • imported last CHART.JS version, 2.7.3
    • added following methods, available in CHART.JS, in the AbstractChart class: Thanks @niekvanderkooy.
      • getDatasetAtEvent
      • isDatasetVisible
      • getVisibleDatasetCount
    • added property aspectRatio to the options. Thanks @nseb.
    • added property rotation to the point element
    • added property pointRotation to the line, radar and bubble datasets
    • added property precision to the cartesian and radial linear axes
    • added property circular to the grid lines
    • removed final to chart classes in order to extend them by controller implementations

    Fixed Bugs

    • #13 added property aspectRatio to the options. Thanks @nseb.
    • #15 added isDatasetVisible to AbstractChart class. Thanks @niekvanderkooy.
    • internal bug: cartesian log tick managed property min as int instead of double. Changed in double.
    Source code(tar.gz)
    Source code(zip)
    charba-1.7-javadoc.jar(1.68 MB)
    charba-1.7-sources.jar(435.76 KB)
    charba-1.7.jar(863.38 KB)
  • 1.6(Nov 2, 2018)

    API JavaDoc: https://pepstock-org.github.io/Charba/1.6/index.html.

    Features

    • CHART.JS Controllers support.
    • hidden options added to dataset in order to hide it at configuration phase. Thanks @niekvanderkooy.
    • Enable porting to JSINTEROP (for GWT 3.0) instead of JSNI.

    Fixed Bugs

    • #14 hidden options added to dataset in order to hide it at configuration phase. Thanks @niekvanderkooy.
    Source code(tar.gz)
    Source code(zip)
    charba-1.6-javadoc.jar(1.67 MB)
    charba-1.6-sources.jar(434.44 KB)
    charba-1.6.jar(860.63 KB)
  • 1.5(Aug 28, 2018)

    API JavaDoc: https://pepstock-org.github.io/Charba/1.5/index.html.

    Features

    • Imported new CHART.JS version, 2.7.2.
    • New colors management, leveraging on new "colors" package.
    • Added GWT Material colors enumeration. See GwtMaterialColor. Thanks @nseb.
    • Improve the mapping of java script objects of CHART.JS in order to use them on plugins, accessible by getChartNode of chart instance. See ChartNode.
    • LegendClickHandler implementation to avoid to deselect all datasets. Thanks @rodrigobastosv.
    • TickCallback implementation to format the ticks in double format. Thanks @rodrigobastosv.
    • devicePixelRatio options added to global and chart option.
    • Time axes implementation for timeseries charts.

    Fixed Bugs

    • #10 Axis and Datasets items are wrongly mapped to CHART.JS javascript objects. Thanks @nseb.
    • #12 LegendClick and LegendHover events were ignore. Thanks @rodrigobastosv.
    Source code(tar.gz)
    Source code(zip)
    charba-1.5-javadoc.jar(1.61 MB)
    charba-1.5-sources.jar(419.33 KB)
    charba-1.5.jar(832.00 KB)
  • 1.4(May 18, 2018)

Owner
Pepstock.org
Community which develops and maintains JEM, the BEE and Charba
Pepstock.org
Beautiful charts for Angular based on Chart.js

ng2-charts slack Beautiful charts for Angular based on Chart.js Usage & Demo Samples using ng2-charts https://valor-software.com/ng2-charts/ Installat

Valor Software 2.2k Jan 4, 2023
Smoothie Charts: smooooooth JavaScript charts for realtime streaming data

Smoothie Charts is a really small charting library designed for live streaming data. I built it to reduce the headaches I was getting from watching ch

Joe Walnes 2.2k Dec 13, 2022
Chart.js Box Plots and Violin Plot Charts

Chart.js Box and Violin Plot Chart.js module for charting box and violin plots. This is a maintained fork of @datavisyn/chartjs-chart-box-and-violin-p

Samuel Gratzl 61 Dec 14, 2022
Chart.js plugin to create charts with a hand-drawn, sketchy, appearance

chartjs-plugin-rough Chart.js plugin to create charts with a hand-drawn, sketchy, appearance Version 0.2 requires Chart.js 2.7.0 or later, and Rough.j

Akihiko Kusanagi 73 Dec 1, 2022
Chart.js module for creating treemap charts

chartjs-chart-treemap Chart.js v3.6.0 module for creating treemap charts. Implementation for Chart.js v2 is in 2.x branch Documentation You can find d

Jukka Kurkela 99 Dec 18, 2022
A Simple Dashboard Chart in Laravel Nova using Chart JS

A Simple Dashboard Chart in Laravel Nova using Chart JS. Starting create your own dashboard with Chart JS Integration can save your time and help you maintain consistency across standard elements such as Bar, Stacked, Line, Area, Doughnut and Pie Chart.

Kuncoro Wicaksono 177 Jan 4, 2023
Chart.js plugin to defer initial chart updates

Chart.js plugin to defer initial chart updates until the user scrolls and the canvas appears inside the viewport, and thus trigger the initial chart a

Chart.js 97 Nov 9, 2022
Bar Funnel Chart extension for Chart.js

Chart.BarFunnel.js Provides a Bar Funnel Chart for use with Chart.js Documentation To create a Bar Funnel Chart, include Chart.BarFunnel.js after Char

Chart.js 58 Nov 24, 2022
TradeX-chart is a trade chart written in plain (vanilla) JavaScript with minimal dependencies

TradeX-chart is a trade chart written in plain (vanilla) JavaScript with minimal dependencies; use it with any framework or backend.

null 24 Dec 12, 2022
:bar_chart: A D3-based reusable chart library

c3 c3 is a D3-based reusable chart library that enables deeper integration of charts into web applications. Follow the link for more information: http

C3.js 9.2k Jan 2, 2023
:bar_chart: Re-usable, easy interface JavaScript chart library based on D3.js

billboard.js is a re-usable, easy interface JavaScript chart library, based on D3 v4+. The name "billboard" comes from the famous billboard chart whic

NAVER 5.4k Jan 1, 2023
Beautiful and interactive javascript charts for Java-based web applications.

Wicked Charts Beautiful and interactive JavaScript charts for Java-based web applications. Check out the Changelog Check out the Feature Overview with

adesso SE 85 Aug 23, 2022
Django Class Based Views to generate Ajax charts js parameters.

Django Chartjs Django Chartjs lets you manage charts in your Django application. This is compatible with Chart.js and Highcharts JS libraries. Using a

PeopleDoc 377 Dec 25, 2022
Java library for use with Chart.js javascript library

Chart.java Chart.java enables integration with the excellent Chart.js library from within a Java application. Usage example In Java: BarDataset datase

Marceau Dewilde 102 Dec 16, 2022
Ember Charts 3.5 2.3 L2 JavaScript A powerful and easy to use charting library for Ember.js

Ember Charts A charting library built with the Ember.js and d3.js frameworks. It includes time series, bar, pie, and scatter charts which are easy to

Addepar 793 Dec 7, 2022
Simple package to facilitate and automate the use of charts in Laravel 5.x using Chartjs v2 library

laravel-chartjs - Chart.js v2 wrapper for Laravel 5.x Simple package to facilitate and automate the use of charts in Laravel 5.x using the Chart.js v2

Felix Costa 473 Dec 15, 2022
API to generate candlestick chart data for any time period based on transactions data

candel-maker API to generate candlestick chart data for any time period based on transactions data Installation clone repo git clone https://github.co

null 2 Aug 18, 2022
A Phigros chart render based on Pixi.js

A Phigros chart render based on Pixi.js

HIMlaoS_Misa 26 Dec 30, 2022
A jsPlumb-based tree chart implementation for jQuery.

jsPlumbTree A jQuery plugin for generating a tree structure using jsPlumb. The tree is drawn from left to right, top to bottom. Please note that only

Daniele Ricci 4 Jul 27, 2022