Merlin
A cross-project UI framework
Timur Sufiev, Mirantis
Drago Rosson, Rackspace
Where do OpenStack UIs fail
How should good UI behave
Provide a tool, not a solution
Assisted Editing UI pattern
The forms view: hinted template editing - input restriction, validations and autocompletions
Switch between YAML and Graph view
The YAML view: raw
template editing
Live Demo!
Merlin-powered UI in action
Under the hood, the model
Merlin classes
list
dictionary
string/number/text
frozendict/panel
Barricade.js classes
Primitive
ImmutableObj
MutableObj
Array
subclassing
Under the hood, the view
Angular factory
Merlin classes
definitions
Angular controller
root-level object
added to $scope
server-side
YAML
=value @type
Final HTML template
.create()
Angular
filters
Mistral WB DOM
<panel>
<group>
<typed-field>
ng-repeat
Render the right template based on model type passed within the scope (postpone template dispatch to directive’s linking phase).
recursively
Horizon integration
Merlin
hz
Mistral
base.html Template
Directives
Filters
Factories
Factories
Controllers
Workbook Builder Template
Merlin Framework
Workbook Builder
Horizon Framework
Contacts