Open Media Library
This commit is contained in:
commit
2ee2bc178a
228 changed files with 85988 additions and 0 deletions
106
static/js/browser.js
Normal file
106
static/js/browser.js
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
'use strict';
|
||||
|
||||
oml.ui.browser = function() {
|
||||
|
||||
var ui = oml.user.ui,
|
||||
|
||||
that = Ox.IconList({
|
||||
centered: true,
|
||||
defaultRatio: oml.config.coverRatio,
|
||||
draggable: true,
|
||||
item: function(data, sort, size) {
|
||||
var color = oml.getFileTypeColor(data).map(function(rgb) {
|
||||
return rgb.concat(0.8)
|
||||
}),
|
||||
ratio = data.coverRatio || oml.config.coverRatio,
|
||||
width = Math.round(ratio >= 1 ? size : size * ratio),
|
||||
height = Math.round(ratio <= 1 ? size : size / ratio),
|
||||
sortKey = sort[0].key,
|
||||
info = Ox.getObjectById(oml.config.sortKeys, sortKey).format(
|
||||
Ox.contains(['title', 'random'], sortKey)
|
||||
? (data.author || '') : data[sortKey]
|
||||
);
|
||||
size = size || 64;
|
||||
return {
|
||||
extra: ui.showFileInfo ? $('<div>')
|
||||
.css({
|
||||
width: width + 'px',
|
||||
height: Math.round(size / 12.8) + 'px',
|
||||
borderWidth: Math.round(size / 64) + 'px 0',
|
||||
borderStyle: 'solid',
|
||||
borderColor: 'rgba(' + color[1].join(', ') + ')',
|
||||
margin: Math.round(size / 18) + 'px ' + Math.round(width / 3) + 'px',
|
||||
fontSize: Math.round(size / 16) + 'px',
|
||||
textAlign: 'center',
|
||||
color: 'rgba(' + color[1].join(', ') + ')',
|
||||
backgroundColor: 'rgba(' + color[0].join(', ') + ')',
|
||||
WebkitTransform: 'rotate(45deg)'
|
||||
})
|
||||
.html(
|
||||
ui.fileInfo == 'extension'
|
||||
? data.extension.toUpperCase()
|
||||
: Ox.formatValue(data.size, 'B')
|
||||
) : null,
|
||||
height: height,
|
||||
id: data.id,
|
||||
info: info,
|
||||
title: data.title,
|
||||
url: '/' + data.id + '/cover128.jpg',
|
||||
width: width
|
||||
};
|
||||
},
|
||||
items: function(data, callback) {
|
||||
oml.api.find(Ox.extend(data, {
|
||||
query: ui.find
|
||||
}), callback);
|
||||
},
|
||||
keys: [
|
||||
'author', 'coverRatio', 'extension',
|
||||
'id', 'size', 'textsize', 'title'
|
||||
],
|
||||
max: 1,
|
||||
min: 1,
|
||||
orientation: 'horizontal',
|
||||
// FIXME: is this correct?:
|
||||
selected: ui.item ? [ui.item]
|
||||
: ui.listSelection.length ? [ui.listSelection[0]]
|
||||
: [],
|
||||
size: 64,
|
||||
sort: ui.listSort,
|
||||
unique: 'id'
|
||||
})
|
||||
.bindEvent({
|
||||
open: function() {
|
||||
oml.UI.set({itemView: 'book'});
|
||||
},
|
||||
select: function(data) {
|
||||
oml.UI.set({
|
||||
item: data.ids[0],
|
||||
itemView: 'info',
|
||||
listSelection: data.ids
|
||||
});
|
||||
},
|
||||
oml_find: function() {
|
||||
that.reloadList();
|
||||
},
|
||||
oml_item: function(data) {
|
||||
if (data.value && !data.previousValue) {
|
||||
that.gainFocus();
|
||||
}
|
||||
},
|
||||
oml_listselection: function(data) {
|
||||
if (data.value.length) {
|
||||
that.options({selected: [data.value[0]]});
|
||||
}
|
||||
},
|
||||
oml_listsort: function(data) {
|
||||
that.options({sort: data.value});
|
||||
},
|
||||
oml_sidebarsize: function(data) {
|
||||
that.size(); // FIXME: DOESN'T CENTER
|
||||
}
|
||||
});
|
||||
|
||||
return that;
|
||||
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue