Archive for August, 2009

Implementation Spotlight: Eaton’s Intelligent Power Manager

Monday, August 31st, 2009

I recently had an opportunity to sit down with the very talented developers at Eaton to discuss their recent software release. Read how Eaton’s superstars Jonathan Bonzy, Sebastien Volle, and their team implemented an amazing RIA for managing power with Ext JS.

Eaton Corporation is a diversified power management company, with 75,000 employees, that sells products to customers in more than 150 countries. Eaton’s electrical business is a global leader in power distribution, power quality, control and industrial automation products and services.

What is Intelligent Power?

Eaton’s Intelligent Power® Manager is a robust and scalable program that can substantially lower costs for supervising networked uninterruptible power systems (UPSs) and associated equipment compared to using major network management system platforms. The Ext JS Framework is used as a core UI component in Intelligent Power Manager where all views, boxes or grids are rendered through Ext methods.

Intelligent Power Manager main view with node list and details for selected node

Did you evaluate other JavaScript frameworks for the Intelligent Power Manager? Why did you choose Ext?

We compared Ext JS to many popular libraries (jQuery, Prototype, MooTools, Script.aculo.us, Dojo, Rialto, Qooxdoo, etc.). We found Ext JS to be fully open source with a strong community combined with great technical support from the authors themselves. The Ext JS cross-browser widgets set is huge, which allowed us to complete our entire interface for Intelligent Power Manager. Moreover, Ext JS’s small footprint and low memory consumption surpassed our IT environment constraints where Intelligent Power Manager can run for months on low-cost appliances.

Equally attractive, the Ext JS Framework offers royalty free use — a key criteria for our client library in Intelligent Power Manager. Due to our strong constraints with commercial usage and our long-term supervising role having a trusted partner was key.

After comparing several JavaScript frameworks, Ext JS appeared as the most adapted solution to our needs. Ext JS is a very well designed, lightweight framework which integrates core JavaScript language improvements, DOM manipulation helpers, and high level widgets – saving us several months worth of development. A few days were enough to acquire the basics of the API thanks to fantastic documentation. A huge thank to all Ext JS development team and the great community.

How does Ext fit into your overall technical architecture?

Intelligent Power Manager is a single page rich internet application. Ext JS is used for all client side needs from AJAX requests to data rendering. Ext JS’s State Manager allows us to keep information on selected views or on hidden, expanded and collapsed panels. Our server receives state information from Ext JS Client, keeps it in a View Manager component, stores it in a database and sends events to Ext JS Client when structure changes.


User can drag and drop devices on custom maps and view their status

How have your customers responded to your new interface?

They love it! Intelligent Power Manager is a giant leap from our previous supervision tool.


Power Source view is a custom implementation of the Ext portal example

What are some of the key Ext features that you found useful in building your product?

Viewport, grids, accordion, dialog box and state manager are key features of Ext JS that were building blocks of Intelligent Power Manager. Our software is built on a three-part interface with tree views on the left side, grids with devices or applications called nodes in the center and selected node details on right side. The State Manager keeps user interface changes in memory. The grid component quickly renders data. Lastly, the dialog boxes are used for settings and the accordion allows the user to customize information.


Dialog boxes are used to assign action settings

What features could we add to Ext to make building a rich application like Intelligent Power Manager easier in the future?

Ext custom theme generator could be a great feature for applications that need more than blue and gray colors. Intelligent Power Manager uses Ext blue theme with its own icons for its look and feel. Ext graphical resources aren’t available to custom CSS sprites and there isn’t any clear documentation on CSS rules to change.

Do you have any advice for developers just starting out with Ext for the first time?

Ext JS’s learning curve may be tough if you’re building a one page application, but samples and the forum will be the answer to all your needs. As a first step, developers could start with an HTML base with some Ext JS mixed in their code before using directly viewports and layouts.

Eaton and Intelligent Power are trademarks of Eaton Corporation.

Ext JS 3.0 – Be Outstanding

Monday, August 10th, 2009

On behalf of the Ext Team, I am pleased to announce the final release of Ext JS 3.0. This release is the culmination of tens of thousands of hours of architecture, development and community feedback. A change log and online documentation can be found on the download page. Together we’ve accomplished a level of excellence to be proud of, but we want to enable you to be even better. We want you to be Outstanding.

Excellence

My all-time favorite quote is from Aristotle: “We are what we repeatedly do. Excellence, then, is not an act, but a habit.” Sometimes, however, to reach new heights we need new habits.

As one of the world’s greatest golfers, Tiger Woods underwent an extensive swing change when he was already ranked number one in the sport. While Tiger struggled through the process, he would emerge as the greatest that ever played. Tiger would go on to a record-setting season, where he would win three consecutive majors, nine PGA Tour events, and set or tie 27 Tour records – and that was just the beginning. Tiger’s decision to modify his swing, at the top of his game, enabled him to be outstanding.

Likewise, Ext has spent the past few months modifying our “swing” so you can achieve a new level of greatness.

Assurance

For quite some time we have offered SVN access to our support subscribers. This enabled many of you to access the latest and greatest features of Ext JS for your project. At the same time, it also introduced some unforeseen bugs due to ongoing development. While this might have been exciting to some, many of us with existing projects wanted just the “fixes” without the “feature enhancements”. In order to accommodate this level of quality, we’ve had to make a significant investment in our internal processes.

Ext JS Public Commit Log

In an effort to have more transparency with our community we have created a Public Commit Log reflecting recent commits by the team. Our community can expect to have these commits in our next public release.

Our new commit template will assist us in building more interactive change logs for future releases. Component authors that extend existing Ext base components will be able to sort and locate fixes to improve their extensions stability faster using a grouping grid. In addition, the convention “ref #” and “fixes #” within the commit allow us to automate our internal QA ticket workflow.

Release Cycle

As we continue to grow our product offering, not adhering to a strict release schedule has presented issues. We want to exceed your expectations by releasing software you’ve helped support. We want to “Release Soon, Release Often.” Therefore the Ext Team will be releasing Quarterly public releases of Minor Revisions. To strengthen our support offering, we are now introducing “Monthly Patch Builds” to our support subscribers with just the “fixes”.

JS Builder 2

We have created a new build tool along with a new file format for Ext 3.0. JS Builder was a great tool for managing your Ext projects but it had a severe limitation that it could only run on Windows. We have implemented a cross-platform Java application named JS Builder 2 to replace JS Builder. In the past, you had to build multiple jsb files in order to build an entire Ext build. This process was repetitive and could become quickly time consuming if you did not write a batch script. The new jsb2 file format is able to handle multiple build targets in a single file and makes building a breeze.

Consistency

There have been some changes to the folder structure of Ext JS to be more consistent with our development going forward. Within the Ext 3.0.0 download you will now find that the “source/” directory has been renamed to “src/”. This change was made to mirror what is retrieved from the SVN repository is what you will find in a packaged download.

CSS Refactor & Improvements

Theming has now become easier than ever due to the separation of structural and visual CSS. Each component now has its own visual CSS file which describes its appearance. To create your own complete theme, simply override each rule for colors and images in the visual css directory.

Ext JS Theme

CSS Scoping

Placing standard HTML into an Ext.Panel has become easier with the new configuration preventBodyReset. When preventBodyReset is set to true your HTML will get the standard W3C suggested styling. This means that your standard HTML items will look the way you would expect them to if you loaded them up within a browser without any custom CSS.

Layout Managers

Up until now we have demonstrated only the user interface specific features which are new to Ext JS 3.0. There are also many features which aren’t UI specific. First off, both Menu and Toolbar have been updated to be proper containers with their own custom layout managers. By implementing these custom layout managers we were able to achieve the complex overflow enhancements. We have also introduced 2 new layout managers for general use named hbox and vbox. The hbox and vbox layouts enable developers to layout components horizontally and vertically based on ratios for incredibly complex interfaces.

Ext.data Improvements

The Ext.data package has been improved to incorporate Ext.data.DataWriters which can write back changes which occur client side back to the server-side. Writers are configured similarly to a DataReader and are now one of the constituent pieces of a store. The store exposes several methods like save and create which will trigger communication with the server-side based on the configuration of the writer.

// The new DataWriter component.  Elegance in simplicity.
var writer = new Ext.data.JsonWriter({
    encode: true,
    writeAllFields: false
});

Memory Management Improvements

Ext 3.0 has a new memory management model for Ext Components. This new approach eliminates many of memory consumptions issues encountered in long running Ext 1.x and 2.x applications. This new model exposes a function, mon(), which you can use to bind listeners to external objects which will be automatically cleaned up at the end of the component’s lifecycle. This new method to Ext.Component called mon(), which you can use to bind events to external objects, either DOM elements or Ext classes. mon() adds the listener to an internal collection which is destroyed when the object is destroyed, assisting you in memory management. All Ext Components have been changed to use this method where appropriate.

//Old Style
this.el.on('click', this.onClick, this);
 
//New Style
this.mon(this.el, 'click', this.onClick, this);

Innovation

In order to stay at the top of our game, we will to continue innovate. We will continue to provide elegant solutions to existing problems and lead where others have faltered. This is our promise to you and to ourselves.

Accessibility

We are 100% committed to supporting and incorporating improvements to help you build accessible applications by offering keyboard navigation, screen reader support, and a new high contrast theme for your entire application.

While Ext has always had native support for key binding for our most popular components, traversing your application using a keyboard was left up you to develop. With the new Focus Manager component, coupled with the new class inspection, you won’t need to write a line of code.

ARIA support is an evolving standard. Ext is working on adding ARIA support to the major components like Panel, Tree, Menu, Window, Grid. Using a screen reader like NVDA, with this tree example, will show how elegant accessibility can be for everyone.

Designer Preview

Constructing your interfaces in code will be a thing of the past. We are releasing a Designer Preview that will allow you to experiment with the designer interface and to explore how configs affect your layout. Soon, you will be able to build your application components using base Ext components and Certified User Extensions.

Code generation is currently not available. Our intentions are to charge a fee for this service and to enable our community to create and sell their creations on our marketplace. Our goals are lofty. We want to be the iTunes of Web App Development.


Summary

While many of the features of Ext JS 3.0 have been covered in previous posts, we’ve really just touched the surface of the power of Ext JS 3. Its been an amazing journey thus far, and we have a clear view of where we are going. We aim to provide you the tools to be Outstanding.