forked from 0x2620/pandora
87 lines
2.7 KiB
JavaScript
87 lines
2.7 KiB
JavaScript
// vim: et:ts=4:sw=4:sts=4:ft=javascript
|
|
|
|
'use strict';
|
|
|
|
pandora.ui.sortElement = function(isNavigationView) {
|
|
|
|
var ui = pandora.user.ui,
|
|
isClipView = pandora.isClipView(),
|
|
isEmbed = pandora.isEmbedURL(),
|
|
items = (
|
|
isClipView ? pandora.site.clipKeys.map(function(key) {
|
|
return Ox.extend(Ox.clone(key), {
|
|
title: Ox._((!ui.item ? 'Sort by Clip {0}' : 'Sort by {0}'), [Ox._(key.title)])
|
|
});
|
|
}) : []
|
|
).concat(
|
|
!ui.item ? pandora.site.sortKeys.map(function(key) {
|
|
return Ox.extend(Ox.clone(key), {
|
|
title: Ox._('Sort by {0}', [Ox._(key.title)])
|
|
});
|
|
}) : []
|
|
),
|
|
sortKey = !ui.item ? 'listSort' : 'itemSort',
|
|
|
|
$sortSelect = Ox.Select({
|
|
items: items,
|
|
value: ui[sortKey][0].key,
|
|
width: !isEmbed && isNavigationView && ui.clipColumns == 1 ? 120 + Ox.UI.SCROLLBAR_SIZE : 144
|
|
})
|
|
.bindEvent({
|
|
change: function(data) {
|
|
var key = data.value;
|
|
pandora.UI.set(sortKey, [{
|
|
key: key,
|
|
operator: pandora.getSortOperator(key)
|
|
}]);
|
|
}
|
|
}),
|
|
|
|
$orderButton = Ox.Button({
|
|
overlap: 'left',
|
|
title: getButtonTitle(),
|
|
tooltip: getButtonTooltip(),
|
|
type: 'image'
|
|
})
|
|
.bindEvent({
|
|
click: function() {
|
|
pandora.UI.set(sortKey, [{
|
|
key: ui[sortKey][0].key,
|
|
operator: ui[sortKey][0].operator == '+' ? '-' : '+'
|
|
}]);
|
|
}
|
|
}),
|
|
|
|
that = Ox.FormElementGroup({
|
|
elements: [$sortSelect, $orderButton],
|
|
float: 'right'
|
|
})
|
|
.css({
|
|
float: isNavigationView ? 'right' : 'left',
|
|
margin: isNavigationView ? '4px 4px 0 0' : '4px 0 0 4px'
|
|
})
|
|
.bindEvent('pandora_' + sortKey.toLowerCase(), updateElement);
|
|
|
|
function getButtonTitle() {
|
|
return ui[sortKey][0].operator == '+' ? 'up' : 'down';
|
|
}
|
|
|
|
function getButtonTooltip() {
|
|
return Ox._(ui[sortKey][0].operator == '+' ? 'Ascending' : 'Descending');
|
|
}
|
|
|
|
function updateElement() {
|
|
$sortSelect.value(ui[sortKey][0].key);
|
|
$orderButton.options({
|
|
title: getButtonTitle(),
|
|
tooltip: getButtonTooltip()
|
|
});
|
|
}
|
|
|
|
that.resizeElement = function(size) {
|
|
$sortSelect.options({width: size});
|
|
};
|
|
|
|
return that;
|
|
|
|
};
|