1
0
Fork 0
forked from 0x2620/oxjs

support audio and subtitle tracks (multiple languages etc), first round

This commit is contained in:
rolux 2014-07-23 15:55:09 +02:00
commit 07fdb094dd
5 changed files with 328 additions and 124 deletions

View file

@ -91,6 +91,11 @@ Ox.AnnotationPanel = function(options, self) {
self.editing = false;
self.languages = getLanguages();
self.enabledLanguages = self.languages.map(function(language) {
return language.code;
});
if (self.options.showUsers) {
self.users = getUsers();
self.enabledUsers = self.users;
@ -170,6 +175,21 @@ Ox.AnnotationPanel = function(options, self) {
return folder;
}
function getLanguages() {
return Ox.sortBy(Ox.map(Ox.unique(Ox.flatten(
self.options.layers.map(function(layer) {
return layer.items.map(function(item) {
return item.languages;
});
})
)), function(language) {
return {
code: language,
name: Ox.getLanguageNameByCode(language)
};
}), 'name');
}
function getUsers() {
return Ox.sort(Ox.unique(Ox.flatten(
self.options.layers.map(function(layer) {
@ -419,6 +439,15 @@ Ox.AnnotationPanel = function(options, self) {
{id: 'text', title: Ox._('By Text'), checked: self.options.sort == 'text'}
]}
],
self.languages.length > 1 ? [
{},
{id: 'languages', title: Ox._('Show Languages'), disabled: true},
{group: 'languages', min: 1, max: -1, items: self.languages.map(function(language) {
return {id: language.code, title: Ox._(language.name), checked:
self.enabledLanguages.indexOf(language.code) > -1
};
})}
] : [],
self.options.showUsers && self.users.length ? [
{},
{id: 'users', title: Ox._('Show Users'), disabled: true},
@ -438,7 +467,14 @@ Ox.AnnotationPanel = function(options, self) {
.bindEvent({
change: function(data) {
var set = {};
if (data.id == 'users') {
if (data.id == 'languages') {
self.enabledLanguages = data.checked.map(function(checked) {
return checked.id;
});
self.$folder.forEach(function($folder) {
$folder.options({languages: self.enabledLanguages});
});
} else if (data.id == 'users') {
self.enabledUsers = data.checked.map(function(checked) {
return checked.id;
});
@ -529,6 +565,7 @@ Ox.AnnotationPanel = function(options, self) {
// called from addannotation callback
var i = Ox.getIndexById(self.options.layers, layer);
self.$folder[i].addItem(item);
self.languages = getLanguages();
self.users = getUsers();
if (self.enabledUsers != 'all' && self.enabledUsers.indexOf(item.user) == -1) {
self.enabledUsers.push(item.user);
@ -584,6 +621,7 @@ Ox.AnnotationPanel = function(options, self) {
} else {
// called from removeannotation callback
self.options.selected = '';
self.languages = getLanguages();
self.users = getUsers();
renderOptionsMenu();
renderEditMenu();