working around Ember.Select performance issues

See:

https://github.com/emberjs/ember.js/issues/2386

In our "VM Commission" and "Add Physical" workflows, we were generating bulk build lists, each member of which included several usages of Embers.Select in the template. The particulars of the "VM Commission" workflow, for example, were introducing approximately 600 ms of blocking execution (i.e., total browser freeze) per host.

The workaround:

The "template" page, i.e., the first page in the workflow, remains unchanged (aside from the omission of disclaimer language about the delays which we've fixed). The subsequent page (the commissionVm.specs route state) now employs Ember.TextField for all input fields, even those fields whose values are not open-ended. For those fields, we added some Ember View "onclick" foo (App.OnClickSelectRevealer) that transforms them into an appropriate Ember.Select instance when clicked.

What this does:

Rather than automatically generating and inserting the Ember.Select instances into the DOM, we're now doing so "on-demand". The upside is that progressing through the "VM Commission" and "Add Physical" workflows is seamless. No more 5 second (or worse) delays. The downside is that build jobs requiring heavy customization in the build list will need an extra mouse click for each <select> field that needs to be manually selected. This shouldn't be a common occurence, as those fields (Hypervisor Pool, OS, Disk Layout, Application Type, Production Type, Business Unit, Chef Role) are usually propogated commonly across all hosts. Compared to the presence of obvious application non-responsiveness, this is a win overall.