forked from 0x2620/oxjs
support audio and subtitle tracks (multiple languages etc), first round
This commit is contained in:
parent
0f6d70766f
commit
07fdb094dd
5 changed files with 328 additions and 124 deletions
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue