openmedialibrary/static/js/sortElement.js

77 lines
2.0 KiB
JavaScript

'use strict';
oml.ui.sortElement = function() {
var ui = oml.user.ui,
$sortSelect = Ox.Select({
items: oml.config.sortKeys.map(function(key) {
return Ox.extend({}, key, {
title: Ox._('Sort by {0}', [Ox._(key.title)])
});
}),
style: 'squared',
value: ui.listSort[0].key,
width: 160
})
.bindEvent({
change: function(data) {
var key = data.value;
oml.UI.set({
listSort: [{key: key, operator: oml.getSortOperator(key)}]
});
}
}),
$orderButton = Ox.Button({
overlap: 'left',
style: 'squared',
title: getButtonTitle(),
tooltip: getButtonTooltip(),
type: 'image'
})
.bindEvent({
click: function() {
oml.UI.set({
listSort: [{
key: ui.listSort[0].key,
operator: ui.listSort[0].operator == '+' ? '-' : '+'
}]
});
}
}),
that = Ox.FormElementGroup({
elements: [$sortSelect, $orderButton],
float: 'right'
})
.css({
float: 'left',
margin: '4px 2px'
})
.bindEvent({
oml_listsort: function() {
that.updateElement();
}
});
function getButtonTitle() {
return ui.listSort[0].operator == '+' ? 'up' : 'down';
}
function getButtonTooltip() {
return Ox._(ui.listSort[0].operator == '+' ? 'Ascending' : 'Descending');
}
that.updateElement = function() {
$sortSelect.value(ui.listSort[0].key);
$orderButton.options({
title: getButtonTitle(),
tooltip: getButtonTooltip()
});
return that;
};
return that.updateElement();
};