KineticGrid - A High-Performance Flex DataGrid

The high-performance datagrid is designed for Rich Internet Applications supporting highly dynamic models of information, such as trader desktop applications in the financial industry. Users in these industries place strong demands on the responsiveness of their applications, especially in times of greatest volatility.

When developing client applications, it is critical for UI components to minimize their use of CPU resources to maintain responsiveness. UI components do not exist in a vacuum and must also share the processing window with communications to and from the server, maintenance of local data, and all other views in the user application. Current implementation of datagrids in Flex are highly CPU-intensive when required to update the display - not just when underlying data changes but from user operations like scrolling. This impacts the performance, not just of the datagrid itself, but of the rest of the application.

The KineticGrid component was created to meet both the performance and visualization requirements of demanding end-users, and of application designers that need to be able to customize and extend the functionality of what is often the most critical component of a Financial desktop application - the blotter.

There are two demos currently available - one illustrating the capabilities of the datagrid within a highly dynamic, financials environment, and the other is a more general-purpose demonstration illustrating more user-oriented features of the grid. Both are available as either an Online Flex Demo or a downloadable AIR demo. One important aspect of the demos is to illustrate the comparative processing time for the different Data Grid implementations. By increasing the frame rate to as high as possible (Online Flex demo is browser restricted to 60 FPS but the AIR demo can run at 250 FPS), you can accurately compare the amount of time a single Data Grid uses to update its visual state.

Performance Features

  • Designed and written from scratch for dynamic data models
  • Support for thousands of underlying model changes per second while maintaining frame rate and responsiveness
  • Optimized handling of data set changes out of visual range
  • Row-based with configurable renderer caching at both row and column level

For Users

  • Full support for nested column groups
  • Live dragging support for both columns and column groups
  • Live resizing of columns
  • Live resizing of rows
  • Supports locked and scrolling columns
  • Pixel-based horizontal and vertical scrolling
  • Drag selection with live scrolling
  • Optional headers and footers
  • Support for row-anchoring when rows are added, removed or moved
  • Column group expansion and summary modes
  • Keyboard navigation
  • Multi-level sorting

For Application Developers

  • Fully supports Flex 4 spark components and layout paradigms
  • Each row can fully manage it's own layout, use the primary column layout or specify individual column renderers
  • Variable height rows based on data, not on rendering
  • Designed for extension - factory classes can be easily defined to extend or override default behavior
  • Designed using composition rather inheritance with over 60 interfaces and 50 user-definable factory classes
  • Every factory instance has optional access to a grid context where it can reference any other part of the grid model and view
  • Easy to reuse existing list/columns renderers from other components
  • All data is referenced by row index rather than data identity and these indices are maintained automatically through all data changes
  • Some or all of the state of the grid can be persisted to XML and re-applied to restore the grid to a previous state
  • A column selector component can be specified for above the vertical scroll bar to access column operations

 

Note on FPS (Frames per Second)

Flex applications work on a short execution window tied to the frame rate of the associated application. The accepted minimum frame rate for a responsive application is 24 frames per second (FPS), equivalent to appropriately 43 milliseconds of execution per frame. Any processing that takes longer than this will cause the Flash player to reduce the frame rate as a frame will not be rendered until all processing is complete.

Adobe, Flex, and the Flash Platform are trademarks or registered trademarks of Adobe, Inc. in the United States and/or other countries.