openmedialibrary/static/js/statusbar.js

68 lines
2.1 KiB
JavaScript

'use strict';
oml.ui.statusbar = function() {
var ui = oml.user.ui,
data = {
loading: true,
selected: {items: 0, size: 0},
total: {items: 0, size: 0},
},
$status = Ox.Element()
.css({
margin: '2px 4px',
fontSize: '9px',
overflow: 'hidden',
textOverflow: 'ellipsis'
}),
that = Ox.Bar({size: 16})
.css({textAlign: 'center'})
.append($status)
.bindEvent({
oml_find: function(data) {
that.set('loading', true);
},
oml_listselection: function(data) {
if (ui.listSelection.length) {
oml.api.find({
query: {
conditions: [{
key: 'id',
operator: '&',
value: ui.listSelection
}],
operator: '&'
}
}, function(result) {
that.set('selected', result.data);
});
} else {
that.set('selected', {items: 0, size: 0});
}
}
});
that.set = function(key, value) {
var hasSelection;
data[key] = value;
if (key != 'loading') {
data.loading = false;
}
hasSelection = data.selected.items
&& data.selected.items < data.total.items;
$status.html(data.loading ? Ox._('Loading...') : ((
hasSelection ? Ox.formatNumber(data.selected.items) + ' of ' : ''
) + Ox.toTitleCase(Ox.formatCount(data.total.items, 'book')) + (
data.total.items ? ', ' + (
hasSelection ? Ox.formatValue(data.selected.size, 'B') + ' of ' : ''
) + Ox.formatValue(data.total.size, 'B') : ''
)));
};
return that;
};