pandora/static/js/addFilesDialog.js

179 lines
5.4 KiB
JavaScript
Raw Normal View History

2016-09-15 15:20:24 +00:00
'use strict';
pandora.ui.addFilesDialog = function(options) {
var $button = Ox.Button({
id: 'add',
title: Ox._(Ox.toTitleCase(options.action))
}).bindEvent({
click: function() {
$button.options({disabled: true});
(options.action == 'upload' ? uploadVideos : importVideos)(function() {
that.close();
pandora.ui.tasksDialog({
tasks: options.action == 'import' ? 'all' : 'uploads'
}).open();
});
}
});
var $list = Ox.TableList({
columns: [
{
id: 'id',
title: Ox._('ID')
},
{
id: 'index',
title: Ox._('Index')
},
{
format: function(value) {
return Ox.encodeHTMLEntities(value);
},
id: 'title',
title: Ox._('Title'),
visible: true,
width: 256
},
{
format: function(value, data) {
return data.width && data.height
? data.width + ' × ' + data.height + ' px'
: Ox._('unknown')
},
id: 'resolution',
title: Ox._('Resolution'),
align: 'right',
visible: true,
width: 128
},
{
format: function(value) {
return value ? Ox.formatDuration(value) : Ox._('unknown');
},
id: 'duration',
title: Ox._('Duration'),
align: 'right',
visible: true,
width: 128
},
{
format: function(value) {
return value ? Ox.formatValue(value, 'B') : Ox._('unknown');
},
id: 'size',
title: Ox._('Size'),
align: 'right',
visible: true,
2016-09-25 13:22:27 +00:00
width: 128 - Ox.SCROLLBAR_SIZE
2016-09-15 15:20:24 +00:00
},
{
id: 'width',
title: Ox._('Width')
},
{
id: 'height',
title: Ox._('Height')
}
],
columnsResizable: true,
columnsVisible: true,
items: options.items.map(function(value, index) {
return Ox.extend(value, {index: index})
}),
2016-09-23 21:43:28 +00:00
scrollbarVisible: true,
2016-09-15 15:20:24 +00:00
sort: [{key: 'index', operator: '+'}],
sortable: true
}).css({
height: '320px',
width: '640px'
});
var that = Ox.Dialog({
buttons: [$button],
closeButton: true,
content: $list,
height: 320,
removeOnClose: true,
title: Ox._('{0} Video Files', [Ox.toTitleCase(options.action)]),
width: 640
});
var $select = Ox.Select({
items: [
{
id: 'one',
title: Ox._(
'Create one {0} with multiple parts',
[pandora.site.itemName.singular.toLowerCase()]
)
},
{
id: 'multiple',
title: Ox._(
'Create multiple {0}',
[pandora.site.itemName.plural.toLowerCase()]
)
}
],
width: 256
}).css({
display: options.items.length > 1 ? 'block' : 'none',
margin: '4px'
});
$($select.find('.OxButton')[0]).css({margin: '-1px'});
$button.parent().parent().append($select);
function importVideos(callback) {
var id;
Ox.serialForEach(options.items, function(item, index, items, callback) {
var isNewItem = index == 0 || $select.value() == 'multiple';
(isNewItem ? pandora.api.add : Ox.noop)({
title: item.title
}, function(result) {
if (isNewItem) {
id = result.data.id;
}
(isNewItem ? pandora.api.edit : Ox.noop)(Ox.extend(
Ox.filter(item, function(value, key) {
2016-09-19 17:56:42 +00:00
return key != 'title' &&
Object.keys(pandora.site.importMetadata).indexOf(key) > -1;
2016-09-15 15:20:24 +00:00
}),
{'id': id}
), function(result) {
pandora.api.addMediaUrl({
url: item.url,
item: id
}, callback);
});
});
}, callback);
}
function uploadVideos(callback) {
var id;
Ox.serialForEach(options.items, function(item, index, items, callback) {
var isNewItem = index == 0 || $select.value() == 'multiple';
var title = items[$select.value() == 'one' ? 0 : index].title;
(isNewItem ? pandora.api.add : Ox.noop)({
title: title
}, function(result) {
if (isNewItem) {
id = result.data.id;
}
pandora.uploadQueue.add(Ox.extend(item, {
item: {
id: id,
title: title
}
}));
callback();
});
}, callback);
}
return that;
};