At KapLab, we are not only a classic product seller, we implement our products for our clients, we build to our customers applications centered on our product and we give a great concern to our support clients feedback. We rely on that to learn from such implementations and to hear from you in order to feed our roadmap with the useful bunch of features, corrections and improvements. The 2.5 version of Kalileo is born from such context to give response to several integration and implementation concerns. We will focus on this article on some of these features that level up Kalileo 2.5.
Kalileo 2.5 Improvements
Level of detail handling
In several implementation of Kalileo, mainly in geo-based applications, we have been faced to the famous demand of level of detail support. Item renderers (nodes and decorators) should be able to change their visual output (or state) according to the current Kalileo context (Zoom, bounds, children....). Even though, such functionality can be implemented via some hacking, the bounds of flexibility are very limited. Groups bounds , zoom ratio and position changes are difficult to detect on item renderers and thus the implementation become highly complicated.
We have taken into consideration such functional requirement while maintaining the same logic for item renderers creation (interface based). IMorphable interface have been introduced. It should be implemented on any context-aware item renderer in Kalileo. At any context change, the isMorphDirty property is set to true, enabling the item renderer to consider changing its state or visual output. The clippingShape property is provided in the interface implementation to indicate to Kalileo while processing the in/out links the way links clipping is performed (circular or rectangular based clipping). The interface can be applied on node, group and decorators.
In order to enhance the level of detail implementation flexibility, we have introduced several properties dealing with the graph scaling aspects and constraints :
- Node zoom limit and decorator zoom limit used to control the maximum ratio of nodes and decorators and extremely useful for geo-based applications. Nodes and decorators will stop to be scaled at such a limit while being centered on their original position (Example : Long/Lat position).
- View Constraints used to include refinements to zoom and pan operations in the case where a custom layer containing children.
Data Driven graph control
In Kalileo 2.5, we have introduced the concept of monitoring the visual output and graph structure via a data input. Two properties are sufficient to do so :
- nodesDataProvider : An ICollectionView containing the list of node objects. Each node is referenced via its unique identifier (using nodeIDField). A node object can be considered visually as a Group if it has children (via groupChildrenField).
- linksDataProvider : An ICollectionView containing the list of link objects. Each link is identified via its unique identifier (using linkIDField). Its extremities are extracted via linkSourceField or linkSourceFunction and linkTargetField or linkTargetFunction.
The position of nodes can be inferred directly from the node objects given their x/y fields on the data :
- nodeXField or nodeXPositionFunction ;
- nodeYField or nodeYPositionFunction.
Such input type can be used to monitor the graph and synchronize its content with the visual output. Kalileo infers any data changes on the rendered graph :
- Structural modifications (add, remove, update, scope changes, grouping...);
- Link extremities changes in the case where the source/target fields are Bindable (CollectionEvent dispatched in this case);
- Position changes in the case where X/Y fields are Bindable (CollectionEvent dispatched in this case);
- Link Styling in the case where link data is Bindable and a custom link style function is used;
- Item renderers synchronization with unit data.
When the graph become dense and links highly over-number nodes, it becomes hard to the graph to convey a real, clear and useful information. A graph drawing technique named edge bundling have been a research subject for the last two years. Kalileo 2.5 provide two edge bundling algorithms that are commonly used in graph drawing field :
- Hierarchical Edge Bundling : Suited for hierarchies that have been already computationally positioned using circular, balloon or radial graph layout.
- Force Directed Edge Bundling commonly named FDEB : Suited for general graph and having a clearer and nicer output by applying forced on link segments.
In this article, we gave an overview of the major features added to Kalileo 2.5. Several other features and corrections have been added to this version dealing especially with border panning and dragging, link routing, decorators user interaction, anchor handling and much more. We invite you to read the release notes, give Kalileo 2.5 a try and give us your feedback as usual to learn from your experience and to make your satisfaction with our products bigger and bigger.
Technical Lead on Kalileo