pandora/static/js/videoView.js

102 lines
2.8 KiB
JavaScript

'use strict';
// FIXME: remove!
pandora.ui.videoView = function(isEmbed) {
var ui = pandora.user.ui,
itemsQuery,
query,
that = Ox.Element().css({
width: '100%',
hegiht: '100%',
}).update({
sort: function() {
//fixme just update player items
loadPlayer();
}
}),
range = [0, 500],
clips = [],
player;
if (!ui.item) {
itemsQuery = ui.find;
query = {conditions: [], operator: '&'};
// if the item query contains a layer condition,
// then this condition is added to the clip query
itemsQuery.conditions.forEach(function(condition) {
if (
condition.key == 'annotations'
|| Ox.getIndexById(pandora.site.layers, condition.key) > -1
) {
query.conditions.push(condition);
}
});
} else {
itemsQuery = {
conditions:[{key: 'id', value: ui.item, operator: '=='}],
operator: '&'
};
query = {
conditions: ui.itemFind === '' ? [] : [{
key: 'annotations',
value: ui.itemFind,
operator: '='
}],
operator: '&'
};
}
loadPlayer();
function loadPlayer() {
pandora.api.findClips({
query: query,
itemsQuery: itemsQuery,
keys: ['id', 'in', 'out', 'durations', 'parts', 'streams'],
range: range,
sort: pandora.user.ui.listSort
}, function(result) {
pandora.$ui.statusbar && pandora.$ui.statusbar.set('total', {
items: result.data.items.length
});
player && player.remove();
player = Ox.VideoPlayer({
controlsBottom: ['play', 'previous', 'next', 'volume'],
controlsTop: (isEmbed ? [] : ['fullscreen']).concat(['scale']),
enableMouse: true,
height: getHeight(),
paused: true,
position: 0,
video: Ox.flatten(result.data.items.map(function(clip) {
clip.item = clip.id.split('/')[0];
return pandora.getClipVideos(clip);
})),
width: getWidth()
}).appendTo(that);
});
}
function getHeight() {
return isEmbed
? window.innerHeight
: that.height();
}
function getWidth() {
return isEmbed
? window.innerWidth
: that.width();
}
that.reloadList = function() {
loadPlayer();
};
that.size = function() {
player && player.options({
height: getHeight(),
width: getWidth(),
})
}
return that;
};