mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
add metadata editor info endpoint
This commit is contained in:
parent
8a641ab831
commit
723e217a6f
4 changed files with 100 additions and 75 deletions
|
@ -205,9 +205,12 @@
|
|||
</div>
|
||||
</div>
|
||||
<br />
|
||||
<div data-role="collapsible" data-mini="true" data-collapsed="false" id="collapsibleDvdEpisodeInfo" style="display: none; margin-top: 1em;">
|
||||
<h3>${HeaderAlternateEpisodeNumbers}</h3>
|
||||
<div>
|
||||
|
||||
<div class="detailSection" id="collapsibleDvdEpisodeInfo" style="display: none;">
|
||||
<div class="detailSectionHeader">
|
||||
${HeaderAlternateEpisodeNumbers}
|
||||
</div>
|
||||
<div class="detailSectionContent" style="padding: 0 .5em;">
|
||||
<br />
|
||||
<div>
|
||||
<label for="txtDvdSeasonNumber">${LabelDvdSeasonNumber}</label>
|
||||
|
@ -223,9 +226,12 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-role="collapsible" data-mini="true" data-collapsed="false" id="collapsibleSpecialEpisodeInfo" style="display: none; margin-top: 1em;">
|
||||
<h3>${HeaderSpecialEpisodeInfo}</h3>
|
||||
<div>
|
||||
|
||||
<div class="detailSection" id="collapsibleSpecialEpisodeInfo" style="display: none;">
|
||||
<div class="detailSectionHeader">
|
||||
${HeaderSpecialEpisodeInfo}
|
||||
</div>
|
||||
<div class="detailSectionContent" style="padding: 0 .5em;">
|
||||
<br />
|
||||
<div>
|
||||
<label for="txtAirsBeforeSeason">${LabelAirsBeforeSeason}</label>
|
||||
|
@ -241,6 +247,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="detailSection">
|
||||
<div class="detailSectionHeader">
|
||||
${HeaderExternalIds}
|
||||
|
|
|
@ -2,14 +2,6 @@
|
|||
|
||||
var currentItem;
|
||||
|
||||
var languagesPromise;
|
||||
var countriesPromise;
|
||||
|
||||
function ensureLanguagePromises() {
|
||||
languagesPromise = languagesPromise || ApiClient.getCultures();
|
||||
countriesPromise = countriesPromise || ApiClient.getCountries();
|
||||
}
|
||||
|
||||
function updateTabs(page, item) {
|
||||
|
||||
var query = MetadataEditor.getEditQueryString(item);
|
||||
|
@ -23,13 +15,10 @@
|
|||
|
||||
Dashboard.showLoadingMsg();
|
||||
|
||||
ensureLanguagePromises();
|
||||
|
||||
var promise1 = MetadataEditor.getItemPromise();
|
||||
var promise2 = languagesPromise;
|
||||
var promise3 = countriesPromise;
|
||||
var promise2 = ApiClient.getJSON(ApiClient.getUrl('Items/' + MetadataEditor.currentItemId + '/MetadataEditor'));
|
||||
|
||||
$.when(promise1, promise2, promise3).done(function (response1, response2, response3) {
|
||||
$.when(promise1, promise2).done(function (response1, response2) {
|
||||
|
||||
var item = response1[0];
|
||||
|
||||
|
@ -41,12 +30,12 @@
|
|||
} else {
|
||||
$('.editPageInnerContent', page).show();
|
||||
}
|
||||
var languages = response2[0];
|
||||
var countries = response3[0];
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl("Items/" + item.Id + "/ExternalIdInfos")).done(function (idList) {
|
||||
loadExternalIds(page, item, idList);
|
||||
});
|
||||
var metadataEditorInfo = response2[0];
|
||||
var languages = metadataEditorInfo.Cultures;
|
||||
var countries = metadataEditorInfo.Countries;
|
||||
|
||||
loadExternalIds(page, item, metadataEditorInfo.ExternalIdInfos);
|
||||
|
||||
Dashboard.populateLanguages($('#selectLanguage', page), languages);
|
||||
Dashboard.populateCountries($('#selectCountry', page), countries);
|
||||
|
@ -62,7 +51,7 @@
|
|||
updateTabs(page, item);
|
||||
|
||||
setFieldVisibilities(page, item);
|
||||
fillItemInfo(page, item);
|
||||
fillItemInfo(page, item, metadataEditorInfo.ParentalRatingOptions);
|
||||
|
||||
if (item.Type == "BoxSet") {
|
||||
$('#btnEditCollectionTitles', page).show();
|
||||
|
@ -410,22 +399,19 @@
|
|||
}
|
||||
}
|
||||
|
||||
function fillItemInfo(page, item) {
|
||||
function fillItemInfo(page, item, parentalRatingOptions) {
|
||||
|
||||
ApiClient.getParentalRatings().done(function (result) {
|
||||
var select = $('#selectOfficialRating', page);
|
||||
|
||||
var select = $('#selectOfficialRating', page);
|
||||
populateRatings(parentalRatingOptions, select, item.OfficialRating);
|
||||
|
||||
populateRatings(result, select, item.OfficialRating);
|
||||
select.val(item.OfficialRating || "").selectmenu('refresh');
|
||||
|
||||
select.val(item.OfficialRating || "").selectmenu('refresh');
|
||||
select = $('#selectCustomRating', page);
|
||||
|
||||
select = $('#selectCustomRating', page);
|
||||
populateRatings(parentalRatingOptions, select, item.CustomRating);
|
||||
|
||||
populateRatings(result, select, item.CustomRating);
|
||||
|
||||
select.val(item.CustomRating || "").selectmenu('refresh');
|
||||
});
|
||||
select.val(item.CustomRating || "").selectmenu('refresh');
|
||||
|
||||
var selectStatus = $('#selectStatus', page);
|
||||
populateStatus(selectStatus);
|
||||
|
|
|
@ -32,6 +32,10 @@
|
|||
node.li_attr.loadedFromServer = true;
|
||||
}
|
||||
|
||||
if (selected) {
|
||||
selectedNodeId = item.Id;
|
||||
}
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
|
@ -119,11 +123,6 @@
|
|||
itemtype: 'mediafolders',
|
||||
loadedFromServer: true
|
||||
},
|
||||
children: [
|
||||
{
|
||||
text: 'Loading...',
|
||||
icon: false
|
||||
}],
|
||||
icon: false
|
||||
});
|
||||
|
||||
|
@ -150,9 +149,7 @@
|
|||
|
||||
callback.call(scope, nodes);
|
||||
|
||||
setTimeout(function () {
|
||||
$.jstree.reference(".libraryTree", page).load_node('MediaFolders');
|
||||
}, 300);
|
||||
nodesToLoad.push('MediaFolders');
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -174,7 +171,7 @@
|
|||
|
||||
}
|
||||
|
||||
function loadMediaFolders(page, openItems, callback) {
|
||||
function loadMediaFolders(page, scope, openItems, callback) {
|
||||
|
||||
ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders")).done(function (result) {
|
||||
|
||||
|
@ -186,22 +183,12 @@
|
|||
|
||||
});
|
||||
|
||||
callback(nodes);
|
||||
callback.call(scope, nodes);
|
||||
|
||||
for (var i = 0, length = nodes.length; i < length; i++) {
|
||||
if (nodes[i].state.opened) {
|
||||
|
||||
var nodeId = nodes[i].id;
|
||||
setTimeout(function () {
|
||||
$.jstree.reference(".libraryTree", page).load_node(nodeId);
|
||||
}, 300);
|
||||
}
|
||||
|
||||
if (nodes[i].state.selected) {
|
||||
var scrollNodeId = nodes[i].id;
|
||||
setTimeout(function () {
|
||||
scrollToNode(page, scrollNodeId);
|
||||
}, 300);
|
||||
nodesToLoad.push(nodes[i].id);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -227,7 +214,7 @@
|
|||
|
||||
if (id == 'MediaFolders') {
|
||||
|
||||
loadMediaFolders(page, openItems, callback);
|
||||
loadMediaFolders(page, scope, openItems, callback);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -257,17 +244,7 @@
|
|||
for (var i = 0, length = nodes.length; i < length; i++) {
|
||||
if (nodes[i].state.opened) {
|
||||
|
||||
var nodeId = nodes[i].id;
|
||||
setTimeout(function () {
|
||||
$.jstree.reference(".libraryTree", page).load_node(nodeId);
|
||||
}, 300);
|
||||
}
|
||||
|
||||
if (nodes[i].state.selected) {
|
||||
var scrollNodeId = nodes[i].id;
|
||||
setTimeout(function () {
|
||||
scrollToNode(page, scrollNodeId);
|
||||
}, 300);
|
||||
nodesToLoad.push(nodes[i].id);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -288,6 +265,11 @@
|
|||
|
||||
function initializeTree(page, currentUser, openItems, selectedId) {
|
||||
|
||||
nodesToLoad = [];
|
||||
selectedNodeId = null;
|
||||
|
||||
$.jstree.destroy();
|
||||
|
||||
$('.libraryTree', page).jstree({
|
||||
|
||||
"plugins": ["wholerow"],
|
||||
|
@ -322,18 +304,68 @@
|
|||
|
||||
var node = data.node;
|
||||
|
||||
if (!node.li_attr.loadedFromServer) {
|
||||
if (node.children && node.children) {
|
||||
loadNodesToLoad(page, node);
|
||||
}
|
||||
|
||||
if (node.li_attr && node.id != '#' && !node.li_attr.loadedFromServer) {
|
||||
|
||||
node.li_attr.loadedFromServer = true;
|
||||
|
||||
setTimeout(function () {
|
||||
$.jstree.reference(".libraryTree", page).load_node(node.id);
|
||||
}, 500);
|
||||
$.jstree.reference(".libraryTree", page).load_node(node.id, loadNodeCallback);
|
||||
}
|
||||
|
||||
}).off('load_node.jstree').on('load_node.jstree', function (event, data) {
|
||||
|
||||
var node = data.node;
|
||||
|
||||
if (node.children && node.children) {
|
||||
loadNodesToLoad(page, node);
|
||||
}
|
||||
|
||||
if (node.li_attr && node.id != '#' && !node.li_attr.loadedFromServer) {
|
||||
|
||||
node.li_attr.loadedFromServer = true;
|
||||
|
||||
$.jstree.reference(".libraryTree", page).load_node(node.id, loadNodeCallback);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function loadNodesToLoad(page, node) {
|
||||
|
||||
var children = node.children;
|
||||
|
||||
for (var i = 0, length = children.length; i < length; i++) {
|
||||
|
||||
var child = children[i];
|
||||
|
||||
if (nodesToLoad.indexOf(child) != -1) {
|
||||
|
||||
nodesToLoad = nodesToLoad.filter(function (n) {
|
||||
return n != child;
|
||||
});
|
||||
|
||||
$.jstree.reference(".libraryTree", page).load_node(child, loadNodeCallback);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function loadNodeCallback(node) {
|
||||
|
||||
if (selectedNodeId && node.children && node.children.indexOf(selectedNodeId) != -1) {
|
||||
|
||||
setTimeout(function() {
|
||||
|
||||
scrollToNode($.mobile.activePage, selectedNodeId);
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
|
||||
var nodesToLoad = [];
|
||||
var selectedNodeId;
|
||||
|
||||
function updateEditorNode(page, item) {
|
||||
|
||||
var elem = $('#' + item.Id + '>a', page)[0];
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
|
||||
}
|
||||
|
||||
function tryConnect(url) {
|
||||
function tryConnect(url, timeout) {
|
||||
|
||||
return $.ajax({
|
||||
|
||||
|
@ -67,7 +67,7 @@
|
|||
url: url + "/mediabrowser/system/info/public",
|
||||
dataType: "json",
|
||||
|
||||
timeout: 15000
|
||||
timeout: timeout || 15000
|
||||
|
||||
});
|
||||
}
|
||||
|
@ -704,7 +704,7 @@
|
|||
|
||||
//onLocalTestDone();
|
||||
// Try to connect to the local address
|
||||
tryConnect(server.LocalAddress).done(function (result) {
|
||||
tryConnect(server.LocalAddress, 5000).done(function (result) {
|
||||
onLocalTestDone(result, MediaBrowser.ConnectionMode.Local);
|
||||
}).fail(function () {
|
||||
onLocalTestDone();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue