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!
Let's dive in.
Display hierarchical lists in Wijmo's new TreeView, which includes checkboxes, icons, drag and drop, lazy-loading, node editing, and more. TreeView is part of a new wijmo.nav module.
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.
New Multi-AutoComplete Control
Input Intro Sample | MultiAutoComplete Sample
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.
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.
Wijmo FlexChart with Gradients
We're also pleased to release mobile support for ReportViewer. Our ReportViewer control now features responsive design and will adapt to fit different screen sizes on mobile devices.
Mobile JavaScript Report Viewer
ReportViewerIntro Sample | ReportViewer Tutorial
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:
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:
import { WjFlexGrid, wjFlexGridMeta } from 'wijmo/wijmo.angular2.grid';
@Component({
selector: 'my-grid',
template: wjFlexGridMeta.template,
inputs: [...wjFlexGridMeta.inputs, 'myProperty'],
outputs: [...wjFlexGridMeta.outputs, 'myPropertyChange'],
providers: [
{ provide: 'WjComponent', useExisting: forwardRef(() => MyGrid) },
...wjFlexGridMeta.providers
]
})
export class MyGrid extends WjFlexGrid {
private _myProperty: string;
myPropertyChange = new EventEmitter(false);
constructor( @Inject(ElementRef) elRef: ElementRef,
@Inject(Injector) injector: Injector,
@Inject('WjComponent') @SkipSelf() @Optional() parentCmp: any,
@Inject(ChangeDetectorRef) cdRef: ChangeDetectorRef) {
super(elRef, injector, parentCmp, cdRef);
}
get myProperty(): string {
return this._myProperty;
}
set myProperty(value: string) {
if (this._myProperty !== value) {
this._myProperty = value;
this.myPropertyChange.emit(value);
}
}
}
We recently worked with a customer to create this new feature for handling filters with ease.
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.
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.
A fun sample that turns the traditional periodic table of elements into a Sunburst chart.
PeriodicSunburst sample | Rethinking the Periodic Table with Wijmo’s Sunburst blog
Use the SampleExplorer to search, filter by framework and even browse source code for all of our samples.