diff --git a/pandora/config.indiancinema.jsonc b/pandora/config.indiancinema.jsonc index a8b896d40..7b78a233e 100644 --- a/pandora/config.indiancinema.jsonc +++ b/pandora/config.indiancinema.jsonc @@ -670,8 +670,8 @@ "sort": true }, { - "id": "keyword", - "title": "Keyword", + "id": "topic", + "title": "Topic", "type": ["string"], "autocomplete": true, "filter": true, @@ -683,6 +683,380 @@ "type": "text", "find": true }, + { + "id": "releasedate", + "title": "Release Date", + "type": "date" + }, + { + "id": "censorshipcertificatenumber", + "title": "Censorship Certificate Number", + "type": "integer" + }, + { + "id": "dateofcensorcertificate", + "title": "Date of Censor Certificate", + "type": "date" + }, + { + "id": "ratingcertificate", + "title": "Rating/Certificate", + "type": "string" + }, + { + "id": "length", + "title": "Length", + "type": "integer" + }, + { + "id": "numberofreels", + "title": "Number of Reels", + "type": "integer" + }, + { + "id": "format", + "title": "Format", + "type": "string" + }, + { + "id": "presentedby", + "title": "Presented by", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "coproducer", + "title": "Co-Producer", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "associateproducer", + "title": "Associate Producer", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "executiveproducer", + "title": "Executive Producer", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "associatedirector", + "title": "Associate Director", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "chiefassistantdirector", + "title": "Chief Assistant Director", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "assistantdirector", + "title": "Assistant Director", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "story", + "title": "Story", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "screenplay", + "title": "Screenplay", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "dialogue", + "title": "Dialogue", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "adaptation", + "title": "Adaptation", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "musicdirector", + "title": "Music Director", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "backgroundmusic", + "title": "Background Music", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "orchestration", + "title": "Orchestration", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "arranger", + "title": "Arranger", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "sounddesign", + "title": "Sound design", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "soundrecording", + "title": "Sound recording", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "rerecording", + "title": "Re-Recording", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "musiclabel", + "title": "Music Label", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "assistantcinematographer", + "title": "Assistant Cinematographer", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "artdirector", + "title": "Art Director", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "costumedesign", + "title": "Costume design", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "productiondesign", + "title": "Production design", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "specialeffects", + "title": "Special Effects", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "animation", + "title": "Animation", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "singer", + "title": "Singer", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "coeditor", + "title": "Co-Editor", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "stills", + "title": "Stills", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "publicitydesign", + "title": "Publicity Design", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "makeup", + "title": "Make-Up", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "hairstyles", + "title": "Hair Styles", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "dancedirector", + "title": "Dance Director", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "productioncontroller", + "title": "Production Controller", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "stuntdirector", + "title": "Stunt Director", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "continuity", + "title": "Continuity", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "publicity", + "title": "Publicity", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "courtesy", + "title": "Courtesy", + "type": ["string"], + "advanced": true, + "columnWidth": 180, + "find": true, + "sortType": "person" + }, + { + "id": "songs", + "title": "Song Titles", + "type": "text", + "find": true + }, { "id": "id", "title": "ID", @@ -747,6 +1121,13 @@ "type": "layer", "find": true }, + { + "id": "numberofannotations", + "title": "Number of Annotations", + "type": "integer", + "columnWidth": 60, + "sort": true + }, { "id": "duration", "title": "Duration", diff --git a/static/js/infoView.indiancinema.js b/static/js/infoView.indiancinema.js index ea7b822d7..044a456d3 100644 --- a/static/js/infoView.indiancinema.js +++ b/static/js/infoView.indiancinema.js @@ -318,7 +318,7 @@ pandora.ui.infoView = function(data) { renderGroup(['actor']); - renderGroup(canSeeAllMetadata ? ['genre', 'keyword'] : ['genre']); + renderGroup(canSeeAllMetadata ? ['genre', 'topic'] : ['genre']); renderGroup(['imdbId', 'links']); @@ -363,6 +363,90 @@ pandora.ui.infoView = function(data) { .appendTo($text); } + // Extra Metadata + renderGroup([ + 'censorshipcertificatenumber', + 'dateofcensorcertificate', + 'ratingcertificate', + 'length', + 'numberofreels', + 'format' + ]); + renderGroup([ + 'presentedby', + 'coproducer', + 'associateproducer', + 'executiveproducer', + 'associatedirector', + 'chiefassistantdirector', + 'assistantdirector', + 'story', + 'screenplay', + 'dialogue', + 'adaptation' + ]); + renderGroup([ + 'musicdirector', + 'backgroundmusic', + 'orchestration', + 'arranger', + 'sounddesign', + 'soundrecording', + 'rerecording', + 'musiclabel' + ]); + renderGroup([ + 'assistantcinematographer', + 'artdirector', + 'costumedesign', + 'productiondesign', + 'specialeffects', + 'animation', + 'singer', + 'coeditor', + 'stills', + 'publicitydesign', + 'makeup', + 'hairstyles', + 'dancedirector', + 'productioncontroller', + 'stuntdirector', + 'continuity', + 'publicity', + 'courtesy', + ]); + + // Songs + if (data.songs || canEdit) { + Ox.EditableContent({ + clickLink: pandora.clickLink, + collapseToEnd: false, + editable: canEdit, + format: function(value) { + return value.replace( + /').attr({id: 'descriptions'}).appendTo($text); @@ -371,55 +455,89 @@ pandora.ui.infoView = function(data) { $('
').css({height: '16px'}).appendTo($text); - // Duration, Aspect Ratio -------------------------------------------------- + if (data.parts && data.rendered) { + // Duration, Aspect Ratio -------------------------------------------------- + + ['duration', 'aspectratio'].forEach(function(key) { + var itemKey = Ox.getObjectById(pandora.site.itemKeys, key), + value = data[key] || 0; + $('
') + .css({marginBottom: '4px'}) + .append(formatKey(itemKey.title, 'statistics')) + .append( + Ox.Theme.formatColor(null, 'gradient') + .css({textAlign: 'right'}) + .html( + Ox['format' + Ox.toTitleCase(itemKey.format.type)] + .apply(null, [value].concat(itemKey.format.args)) + ) + ) + .appendTo($statistics); + }); + + // Hue, Saturation, Lightness, Volume -------------------------------------- + + ['hue', 'saturation', 'lightness', 'volume'].forEach(function(key) { + var value = data[key] || 0; + $('
') + .css({marginBottom: '4px'}) + .append(formatKey(key, 'statistics')) + .append( + Ox.Theme.formatColor(value, key == 'volume' ? 'lightness' : key) + .css({textAlign: 'right'}) + ) + .appendTo($statistics); + }); + + // Cuts per Minute, Words per Minute --------------------------------------- + + ['cutsperminute', 'wordsperminute'].forEach(function(key) { + var value = data[key] || 0; + $('
') + .css({marginBottom: '4px'}) + .append( + formatKey(Ox.toTitleCase(key.slice(0, -9)) + ' per Minute', 'statistics') + ) + .append( + Ox.Theme.formatColor(null, 'gradient') + .css({textAlign: 'right'}) + .html(Ox.formatNumber(value, 3)) + ) + .appendTo($statistics); + }); - ['duration', 'aspectratio'].forEach(function(key) { - var itemKey = Ox.getObjectById(pandora.site.itemKeys, key), - value = data[key] || 0; $('
') .css({marginBottom: '4px'}) - .append(formatKey(itemKey.title, 'statistics')) + .append(formatKey('Annotations', 'statistics')) .append( Ox.Theme.formatColor(null, 'gradient') .css({textAlign: 'right'}) - .html( - Ox['format' + Ox.toTitleCase(itemKey.format.type)] - .apply(null, [value].concat(itemKey.format.args)) - ) + .html(Ox.formatNumber(data.numberofannotations || 0)) ) .appendTo($statistics); - }); + } else { + // no video placeholder + } - // Hue, Saturation, Lightness, Volume -------------------------------------- + $('
') + .css({marginBottom: '4px'}) + .append(formatKey('Documents', 'statistics')) + .append( + Ox.Theme.formatColor(null, 'gradient') + .css({textAlign: 'right'}) + .html(Ox.formatNumber(data.numberofdocuments || 0)) + ) + .on({ + click: function() { + if (data.numberofdocuments) { + pandora.UI.set({ + itemView: 'documents' + }); + } + } + }) + .appendTo($statistics); - ['hue', 'saturation', 'lightness', 'volume'].forEach(function(key) { - var value = data[key] || 0; - $('
') - .css({marginBottom: '4px'}) - .append(formatKey(key, 'statistics')) - .append( - Ox.Theme.formatColor(value, key == 'volume' ? 'lightness' : key) - .css({textAlign: 'right'}) - ) - .appendTo($statistics); - }); - - // Cuts per Minute, Words per Minute --------------------------------------- - - ['cutsperminute', 'wordsperminute'].forEach(function(key) { - var value = data[key] || 0; - $('
') - .css({marginBottom: '4px'}) - .append( - formatKey(Ox.toTitleCase(key.slice(0, -9)) + ' per Minute', 'statistics') - ) - .append( - Ox.Theme.formatColor(null, 'gradient') - .css({textAlign: 'right'}) - .html(Ox.formatNumber(value, 3)) - ) - .appendTo($statistics); - }); // Rights Level ------------------------------------------------------------ @@ -792,7 +910,7 @@ pandora.ui.infoView = function(data) { .css({marginLeft: '52px'}) .bindEvent({ click: function() { - pandora.UI.set({page: 'rights'}); + pandora.UI.set({page: 'copyrights'}); } }) .appendTo($line); @@ -998,8 +1116,10 @@ pandora.ui.infoView = function(data) { }) .appendTo($rightsLevel); } - $capabilities = $('
').appendTo($rightsLevel); - renderCapabilities(data.rightslevel); + if (data.parts) { + $capabilities = $('
').appendTo($rightsLevel); + renderCapabilities(data.rightslevel); + } } function toggleIconSize() { diff --git a/static/js/item.js b/static/js/item.js index beb5cab60..20eb7b725 100644 --- a/static/js/item.js +++ b/static/js/item.js @@ -36,18 +36,38 @@ pandora.ui.item = function() { if (!result.data.rendered && [ 'clips', 'timeline', 'player', 'editor', 'map', 'calendar' ].indexOf(pandora.user.ui.itemView) > -1) { + var html = Ox._('Sorry, {0}' + + ' currently doesn\'t have ' + + (['a', 'e', 'i', 'o'].indexOf( + pandora.user.ui.itemView.slice(0, 1) + ) > -1 ? 'an': 'a') + ' ' + +'{1} view.', [result.data.title, Ox._(pandora.user.ui.itemView)]); pandora.$ui.contentPanel.replaceElement(1, Ox.Element() .css({marginTop: '32px', fontSize: '12px', textAlign: 'center'}) - .html( - Ox._('Sorry, {0}' - + ' currently doesn\'t have ' - + (['a', 'e', 'i', 'o'].indexOf( - pandora.user.ui.itemView.slice(0, 1) - ) > -1 ? 'an': 'a') + ' ' - +'{1} view.', [result.data.title, Ox._(pandora.user.ui.itemView)]) - ) + .html(html) ); + pandora.site.itemViews.filter(function(view) { + return view.id == 'documents'; + }).length && pandora.api.get({ + id: pandora.user.ui.item, + keys: ['numberofdocuments'] + }, function(result) { + if (result.data.numberofdocuments) { + var $text = Ox.Element() + .css({marginTop: '32px', fontSize: '12px', textAlign: 'center'}) + .html( + html + + '
' + + Ox._('There are {1}', [ + '/' + pandora.user.ui.item + '/documents', + Ox.formatCount(result.data.numberofdocuments, 'document') + ]) + ) + pandora.$ui.contentPanel.replaceElement(1, $text); + pandora.createLinks($text); + } + }); result.data.parts > 0 && pandora.updateStatus(pandora.user.ui.item); } else if (pandora.user.ui.itemView == 'info') {