Wijmo's first major release of 2017 has landed, and it's full of exciting new controls and developments— a new JavaScript TreeView control, a new multi-autocomplete that you have to see to believe, a mobile JavaScript report viewer, and OLAP server support!

MultiAutoComplete Control

MultiAutoComplete is a unique control that blends multiple selection with auto-completion, hence the name. This type of control is often used for aggregate lists like “tags” in a blog, for example. We have added MultiAutoComplete to our input module.

Server-side OLAP

Wijmo’s Pivot controls were created for analyzing datasets on the client. Our client-side OLAP engine can handle relatively large amounts of data (in the order of hundreds of thousands of records), but it requires the raw data to be downloaded to the client, and that makes it impractical to analyze really large datasets (millions of records).

In this release, we have added server-side support to our OLAP controls. You can now use a URL in the itemSource property that will instruct the OLAP controls to query a web API on the server instead of analyzing an array on the client. The server-side engine is part of our ASP.NET MVC product line and must be installed and licensed separately. We recommend purchasing Ultimate so that you have both server and client side components for our OLAP controls.

Gradient Support in FlexChart

FlexChart now has support for applying gradient colors to plot elements. Gradients can be either radial or linear and support multiple colors as well as opacity. Add some style to your charts with our new gradient support.

Improve Component Inheritance in Angular 2

After adding a support for Angular Ahead-of-Time compiler and removal of @WjComponent decorator, creation of custom components by inheriting them from Wijmo components became a challenge. We addressed this issue in this release by adding two means that simplify creation and maintaining of derived Wijmo components:

Special variables that stores Wijmo @Component metadata.

The special ‘created’ method which is called from every Wijmo component’s constructor and can be overridden to define or re-define component’s defaults, instead of declaring a component constructor and maintaining its parameters list.

Every Wijmo component/directive now have a corresponding variable exported from the component's module that represents its @Component/@Directive decorator properties. The name of the variable is

constructed as Meta. For example, wjInputNumberMeta variable represents metadata of the WjInputNumber component. Such a variable is useful when you create a custom component derived from a Wijmo component, where you have to provide a @Component decorator whose properties should replicate most of the properties of the base class @Component decorator.

You also have an option to not declare your custom component’s constructor at all, thus eliminating the need to define and maintain its parameters to by in synch with base Wijmo component’s constructor parameters. Instead, you can just override the “created” method and perform here necessary initializations that you usually do in a class constructor.

Here's an example of the MyGrid component that inherits from the WjFlexGrid component, and adds 'myProperty' property and corresponding 'myPropertyChange' event:

FlexGrid FilterPanel

ServerCollectionView

ServerCollectionView is another sample we have created based on customer requests. We previously created ODataCollectionView, but many people ask how to bind to an arbitrary server-side API. The ServerCollectionView demonstrates how to do that, including how to customize it to your needs.

FlexGrid Finance Sample

We have also added new Finance sample that shows a simulated live data feed of stock quotes for the FTSE 100 companies in a FlexGrid. The sample simulates batches of transactions at a given interval and updates the information on a grid changing only the cells that have changed.

Use the SampleExplorer to search, filter by framework and even browse source code for all of our samples.

Breaking Changes

[Angular1/Angular2] An ngModel directive specified on a WjMultiSelect directive/component is now mapped to the 'checkedItems' property, instead of the 'selectedValue' property. The previously used mapping to the 'selectedValue' property didn't have any practical sense, so this change should not hurt your code.

Angular 2 WjFlexGrid component - added the following constructor parameter: @Inject(ChangeDetectorRef) cdRef: ChangeDetectorRef This change may affect your code in case if you use custom components derived from WjFlexGrid. You need to add this last constructor parameter to these components if this is the case.

Added server-side support for wijmo.olap. To use server-side data providers, set the itemsSource property to a URL string pointing to a WebAPI service.

Add mobile support to reportviewer control. Added a thresholdWidth property to switch mobile or PC UI template. If width of control is smaller than thresholdWidth, mobile UI will be applied. If width of control is equal or greater than thresholdWidth, PC template will be applied. If thresholdWidth is set to 0, then only PC template is applied and if it's set to a large number e.g. 9999, then only mobile template is applied.

[Angular2] Improved Wijmo components inheritance experience. Every Wijmo component/directive now have a corresponding variable exported from the component's module that represents its @Component/@Directive decorator properties.

[Angular 2] Every Wijmo component constructor now calls the special 'created' method. If you create a custom component inherited from a Wijmo component, and need to perform some initializations in its constructor then instead of declaring a constructor you can just override the 'created' method and perform initializations in it. This will prevent you from the necessity to maintain constructor parameters and keep them in synch with parameters of the base Wijmo component. The details of how Angular processes components inheritance can be found here: https://github.com/angular/angular/commit/f5c8e09

Removed deprecated properties 'disabled' and 'required'. These were replaced in build 5.20162.192 with 'isDisabled' and 'isRequired', in order to avoid conflicts with standard HTML attributes in the markup.

Chris Bannon is a corny dad, a lighthearted guy, and a hard-working programmer. He takes his work very seriously, but not himself.

While his work is important, he values his family most. He spends most of his time with his wife and daughters. You can also find him playing amateur ice hockey for the Pittsburgh Pharaohs.

Chris Bannon is currently the Global Product Manager of Wijmo at GrapeCity. He started working at ComponentOne, a division of GrapeCity, in 2007 as their Lead Web Developer. After rebuilding ComponentOne’s entire web stack, he moved to product management to create a web product of his own: Wijmo. Wijmo is now a multi-million dollar developer tool and is used by fortune 500 Companies like Microsoft, Thomson Reuters, NASA and Tesla. Chris started his education by becoming a Certified Internet Webmaster. He went to college, but most of what he has learned has been in the field. Chris travels to speak around the world. If you ever see him, please don't hesitate to say hi.