Changeset View
Changeset View
Standalone View
Standalone View
webroot/rsrc/js/core/Prefab.js
| Show All 13 Lines | |||||
| */ | */ | ||||
| /** | /** | ||||
| * Utilities for client-side rendering (the greatest thing in the world). | * Utilities for client-side rendering (the greatest thing in the world). | ||||
| */ | */ | ||||
| JX.install('Prefab', { | JX.install('Prefab', { | ||||
| statics : { | statics : { | ||||
| renderSelect : function(map, selected, attrs) { | renderSelect : function(map, selected, attrs, order) { | ||||
| var select = JX.$N('select', attrs || {}); | var select = JX.$N('select', attrs || {}); | ||||
| for (var k in map) { | |||||
| // Callers may optionally pass "order" to force options into a specific | |||||
| // order. Although most browsers do retain order, maps in Javascript | |||||
| // aren't technically ordered. Safari, at least, will reorder maps with | |||||
| // numeric keys. | |||||
| order = order || JX.keys(map); | |||||
| var k; | |||||
| for (var ii = 0; ii < order.length; ii++) { | |||||
| k = order[ii]; | |||||
| select.options[select.options.length] = new Option(map[k], k); | select.options[select.options.length] = new Option(map[k], k); | ||||
| if (k == selected) { | if (k == selected) { | ||||
| select.value = k; | select.value = k; | ||||
| } | } | ||||
| } | } | ||||
| select.value = select.value || JX.keys(map)[0]; | |||||
| select.value = select.value || order[0]; | |||||
| return select; | return select; | ||||
| }, | }, | ||||
| newTokenizerFromTemplate: function(markup, config) { | newTokenizerFromTemplate: function(markup, config) { | ||||
| var template = JX.$H(markup).getFragment().firstChild; | var template = JX.$H(markup).getFragment().firstChild; | ||||
| var container = JX.DOM.find(template, 'div', 'tokenizer-container'); | var container = JX.DOM.find(template, 'div', 'tokenizer-container'); | ||||
| container.id = ''; | container.id = ''; | ||||
| ▲ Show 20 Lines • Show All 286 Lines • Show Last 20 Lines | |||||