pandora/static/js/sortElement.js

88 lines
2.7 KiB
JavaScript
Raw Normal View History

// vim: et:ts=4:sw=4:sts=4:ft=javascript
'use strict';
2013-03-01 06:40:24 +00:00
pandora.ui.sortElement = function(isNavigationView) {
2014-01-07 07:52:22 +00:00
var ui = pandora.user.ui,
isClipView = pandora.isClipView(),
2013-03-01 11:19:55 +00:00
isEmbed = pandora.isEmbedURL(),
items = (
isClipView ? pandora.site.clipKeys.map(function(key) {
return Ox.extend(Ox.clone(key), {
2014-01-07 07:52:22 +00:00
title: Ox._((!ui.item ? 'Sort by Clip {0}' : 'Sort by {0}'), [Ox._(key.title)])
});
}) : []
).concat(
2014-01-07 07:52:22 +00:00
!ui.item ? pandora.site.sortKeys.map(function(key) {
return Ox.extend(Ox.clone(key), {
2013-05-09 10:13:58 +00:00
title: Ox._('Sort by {0}', [Ox._(key.title)])
});
}) : []
),
2014-01-07 07:52:22 +00:00
sortKey = !ui.item ? 'listSort' : 'itemSort',
$sortSelect = Ox.Select({
items: items,
2014-01-07 07:52:22 +00:00
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)
}]);
}
}),
2013-03-01 06:58:19 +00:00
$orderButton = Ox.Button({
overlap: 'left',
title: getButtonTitle(),
tooltip: getButtonTooltip(),
type: 'image'
})
.bindEvent({
click: function() {
pandora.UI.set(sortKey, [{
2014-01-07 07:52:22 +00:00
key: ui[sortKey][0].key,
operator: ui[sortKey][0].operator == '+' ? '-' : '+'
}]);
}
}),
that = Ox.FormElementGroup({
2013-03-01 06:58:19 +00:00
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() {
2014-01-07 07:52:22 +00:00
return ui[sortKey][0].operator == '+' ? 'up' : 'down';
}
function getButtonTooltip() {
2014-01-07 07:52:22 +00:00
return Ox._(ui[sortKey][0].operator == '+' ? 'Ascending' : 'Descending');
}
function updateElement() {
2014-01-07 07:52:22 +00:00
$sortSelect.value(ui[sortKey][0].key);
$orderButton.options({
2013-03-01 06:58:19 +00:00
title: getButtonTitle(),
tooltip: getButtonTooltip()
});
}
that.resizeElement = function(size) {
$sortSelect.options({width: size});
};
return that;
2013-05-09 10:13:58 +00:00
};