(function ($) {
// posisble values needs to be an array of objects which respond to uri and label.
function CubeDimensionDropdown(possibleValues, elementId) {
// private vars
///////////////
var jQueryElement = null
, currentValue = null
;
init();
// private funcs
/////////////////
function init() {
// create the element
jQueryElement = $("");
jQueryElement.addClass("dimension-dropdown");
jQueryElement.attr('id', elementId);
// add all the options
populateOptions(possibleValues);
}
function disable() {
jQueryElement.attr("disabled", "disabled");
return jQueryElement;
}
function enable() {
jQueryElement.removeAttr("disabled");
return jQueryElement;
}
function populateOptions(possibleValues) {
empty();
$.each(possibleValues, function (i, possVal) {
var option = $("");
option.attr("value", possVal.uri);
option.append(possVal.label || possVal.uri);
jQueryElement.append(option);
});
}
function setValue(value) {
jQueryElement.val(value);
return jQueryElement;
}
function getValue() {
return jQueryElement.val();
}
function getSelectedLabel() {
return jQueryElement.find(":selected").text();
}
function empty() {
jQueryElement.empty();
}
// public api.
//////////////////
return {
// properties
"elementId": elementId
, "jQueryElement": jQueryElement
// methods
, "setValue": setValue
, "getValue": getValue
, "getLabel": getSelectedLabel
, "empty": empty
, "populateOptions": populateOptions
, "disable": disable
, "enable": enable
// events
}
}
// Swirrl.DimensionDropdown
$.extend(true, window, { Swirrl: { CubeDimensionDropdown: CubeDimensionDropdown }});
})(jQuery);