Changeset View
Changeset View
Standalone View
Standalone View
externals/javelin/src/ext/view/ViewInterpreter.js
- This file was added.
| /** | |||||
| * Experimental interpreter for nice views. | |||||
| * This is CoffeeScript: | |||||
| * | |||||
| * d = declare | |||||
| * selectable: false | |||||
| * boxOrientation: Orientation.HORIZONTAL | |||||
| * additionalClasses: ['some-css-class'] | |||||
| * MultiAvatar ref: 'avatars' | |||||
| * div | |||||
| * flex: 1 | |||||
| * div( | |||||
| * span className: 'some-css-class', ref: 'actorTargetLine' | |||||
| * span className: 'message-css', ref: 'message' | |||||
| * ) | |||||
| * | |||||
| * div | |||||
| * boxOrientation: Orientation.HORIZONTAL | |||||
| * className: 'attachment-css-class' | |||||
| * div | |||||
| * className: 'attachment-image-css-class' | |||||
| * ref: 'attachmentImageContainer' | |||||
| * boxOrientation: Orientation.HORIZONTAL | |||||
| * div className: 'inline attachment-text', ref: 'attachmentText', | |||||
| * div | |||||
| * className: 'attachment-title' | |||||
| * ref: 'attachmentTitle' | |||||
| * flex: 1 | |||||
| * div | |||||
| * className: 'attachment-subtitle' | |||||
| * ref: 'attachmentSubtitle' | |||||
| * flex: 1 | |||||
| * div className: 'clear' | |||||
| * MiniUfi ref: 'miniUfi' | |||||
| * FeedbackFlyout ref: 'feedbackFlyout' | |||||
| * | |||||
| * It renders to nested function calls of the form: | |||||
| * view({....options...}, child1, child2, ...); | |||||
| * | |||||
| * This view interpreter is meant to make it work. | |||||
| * | |||||
| * @provides javelin-view-interpreter | |||||
| * @requires javelin-view | |||||
| * javelin-install | |||||
| * | |||||
| */ | |||||
| JX.install('ViewInterpreter', { | |||||
| members : { | |||||
| register : function(name, view_cls) { | |||||
| this[name] = function(/* [properties, ]children... */) { | |||||
| var properties = arguments[0] || {}; | |||||
| var children = Array.prototype.slice.call(arguments, 1); | |||||
| // Passing properties is optional | |||||
| if (properties instanceof JX.View || | |||||
| properties instanceof JX.HTML || | |||||
| properties.nodeType || | |||||
| typeof properties === "string") { | |||||
| children.unshift(properties); | |||||
| properties = {}; | |||||
| } | |||||
| var result = new view_cls(properties).setName(name); | |||||
| result.addChildren(children); | |||||
| return result; | |||||
| } | |||||
| } | |||||
| } | |||||
| }); | |||||