1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

sync updates

This commit is contained in:
Luke Pulverenti 2014-12-17 00:30:31 -05:00
parent 7c25aaa69a
commit ae74dfb031
4 changed files with 84 additions and 20 deletions

View file

@ -141,6 +141,7 @@
<div class="detailButtonsContainer desktopDetailButtons" style="text-align: left;"> <div class="detailButtonsContainer desktopDetailButtons" style="text-align: left;">
<button class="btnPlay hide" type="button" data-icon="play" data-inline="true" data-mini="true">${ButtonPlay}</button> <button class="btnPlay hide" type="button" data-icon="play" data-inline="true" data-mini="true">${ButtonPlay}</button>
<button class="btnMoreCommands hide" type="button" data-icon="ellipsis-v" data-inline="true" data-mini="true">${ButtonOptions}</button> <button class="btnMoreCommands hide" type="button" data-icon="ellipsis-v" data-inline="true" data-mini="true">${ButtonOptions}</button>
<a class="btnSync hide" data-role="button" data-icon="refresh" data-inline="true" data-mini="true" href="#">${ButtonSync}</a>
</div> </div>
</td> </td>
</tr> </tr>
@ -149,9 +150,10 @@
<div class="detailButtonsContainer mobileDetailButtons"> <div class="detailButtonsContainer mobileDetailButtons">
<button class="btnPlay hide" type="button" data-icon="play" data-inline="true" data-mini="true">${ButtonPlay}</button> <button class="btnPlay hide" type="button" data-icon="play" data-inline="true" data-mini="true">${ButtonPlay}</button>
<button class="btnMoreCommands hide" type="button" data-icon="ellipsis-v" data-inline="true" data-mini="true">${ButtonOptions}</button> <button class="btnMoreCommands hide" type="button" data-icon="ellipsis-v" data-inline="true" data-mini="true">${ButtonOptions}</button>
<a class="btnSync hide" data-role="button" data-icon="refresh" data-inline="true" data-mini="true" href="#">${ButtonSync}</a>
</div> </div>
<p class="itemOverview mobileOverview"></p> <p class="itemOverview mobileOverview"></p>
<div data-role="content" style="padding-top: 0;"> <div data-role="content" style="padding-top: 0;">
<div id="itemTabs" style="text-align: center; margin: 0 0 1em;"></div> <div id="itemTabs" style="text-align: center; margin: 0 0 1em;"></div>
<div class="viewSettings"> <div class="viewSettings">

View file

@ -82,6 +82,12 @@
$('.btnPlay', page).hide(); $('.btnPlay', page).hide();
} }
if (SyncManager.isAvailable(item, user)) {
$('.btnSync', page).removeClass('hide');
} else {
$('.btnSync', page).addClass('hide');
}
var editImagesHref = user.Configuration.IsAdministrator ? 'edititemimages.html' + editQuery : null; var editImagesHref = user.Configuration.IsAdministrator ? 'edititemimages.html' + editQuery : null;
$('#itemImage', page).html(LibraryBrowser.getDetailImageHtml(item, editImagesHref, true)); $('#itemImage', page).html(LibraryBrowser.getDetailImageHtml(item, editImagesHref, true));
@ -389,7 +395,7 @@
SortOrder: "Ascending", SortOrder: "Ascending",
IncludeItemTypes: "", IncludeItemTypes: "",
Recursive: true, Recursive: true,
Fields: "AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio", Fields: "AudioInfo,SeriesInfo,ParentId,PrimaryImageAspectRatio,SyncInfo",
Limit: LibraryBrowser.getDefaultPageSize(), Limit: LibraryBrowser.getDefaultPageSize(),
StartIndex: 0, StartIndex: 0,
CollapseBoxSetItems: false CollapseBoxSetItems: false
@ -536,6 +542,13 @@
}); });
}); });
$('.btnSync', page).on('click', function () {
SyncManager.showMenu({
items: [currentItem]
});
});
}).on('pageshow', "#itemByNameDetailPage", function () { }).on('pageshow', "#itemByNameDetailPage", function () {
var page = this; var page = this;

View file

@ -252,7 +252,10 @@
closeContextMenu(); closeContextMenu();
SyncManager.showMenu({ SyncManager.showMenu({
items: [id] items: [
{
Id: id
}]
}); });
return false; return false;

View file

@ -40,7 +40,8 @@
Name: $('#txtSyncJobName', form).val(), Name: $('#txtSyncJobName', form).val(),
SyncNewContent: $('#chkSyncNewContent', form).checked(), SyncNewContent: $('#chkSyncNewContent', form).checked(),
UnwatchedOnly: $('#chkUnwatchedOnly', form).checked() UnwatchedOnly: $('#chkUnwatchedOnly', form).checked(),
ItemLimit: $('#txtItemLimit').val() || null
}; };
ApiClient.ajax({ ApiClient.ajax({
@ -62,11 +63,16 @@
var userId = Dashboard.getCurrentUserId(); var userId = Dashboard.getCurrentUserId();
ApiClient.getJSON(ApiClient.getUrl('Sync/Targets', { ApiClient.getJSON(ApiClient.getUrl('Sync/Options', {
UserId: userId UserId: userId,
ItemIds: options.items.map(function (i) {
return i.Id || i;
}).join(',')
})).done(function (targets) { })).done(function (result) {
var targets = result.Targets;
var html = '<div data-role="panel" data-position="right" data-display="overlay" class="syncPanel" data-position-fixed="true" data-theme="a">'; var html = '<div data-role="panel" data-position="right" data-display="overlay" class="syncPanel" data-position-fixed="true" data-theme="a">';
@ -75,7 +81,7 @@
html += '<form class="formSubmitSyncRequest">'; html += '<form class="formSubmitSyncRequest">';
if (options.items.length > 1) { if (result.Options.indexOf('Name') != -1) {
html += '<p>'; html += '<p>';
html += '<label for="txtSyncJobName">' + Globalize.translate('LabelSyncJobName') + '</label>'; html += '<label for="txtSyncJobName">' + Globalize.translate('LabelSyncJobName') + '</label>';
@ -119,19 +125,32 @@
//html += '<h2>' + Globalize.translate('HeaderSettings') + '</h2>'; //html += '<h2>' + Globalize.translate('HeaderSettings') + '</h2>';
//html += '<div style="margin:0 -.5em 0 -.25em;">'; //html += '<div style="margin:0 -.5em 0 -.25em;">';
html += '<br/>'; if (result.Options.indexOf('UnwatchedOnly') != -1) {
html += '<div>'; html += '<br/>';
html += '<label for="chkSyncNewContent">' + Globalize.translate('OptionAutomaticallySyncNewContent') + '</label>'; html += '<div>';
html += '<input type="checkbox" id="chkSyncNewContent" data-mini="true" />'; html += '<label for="chkUnwatchedOnly">' + Globalize.translate('OptionSyncUnwatchedVideosOnly') + '</label>';
html += '<div class="fieldDescription">' + Globalize.translate('OptionAutomaticallySyncNewContentHelp') + '</div>'; html += '<input type="checkbox" id="chkUnwatchedOnly" data-mini="true" />';
html += '</div>'; html += '<div class="fieldDescription">' + Globalize.translate('OptionSyncUnwatchedVideosOnlyHelp') + '</div>';
html += '</div>';
}
html += '<br/>'; if (result.Options.indexOf('SyncNewContent') != -1) {
html += '<div>'; html += '<br/>';
html += '<label for="chkUnwatchedOnly">' + Globalize.translate('OptionSyncUnwatchedVideosOnly') + '</label>'; html += '<div>';
html += '<input type="checkbox" id="chkUnwatchedOnly" data-mini="true" />'; html += '<label for="chkSyncNewContent">' + Globalize.translate('OptionAutomaticallySyncNewContent') + '</label>';
html += '<div class="fieldDescription">' + Globalize.translate('OptionSyncUnwatchedVideosOnlyHelp') + '</div>'; html += '<input type="checkbox" id="chkSyncNewContent" data-mini="true" />';
html += '</div>'; html += '<div class="fieldDescription">' + Globalize.translate('OptionAutomaticallySyncNewContentHelp') + '</div>';
html += '</div>';
}
if (result.Options.indexOf('ItemLimit') != -1) {
html += '<br/>';
html += '<div>';
html += '<label for="txtItemLimit">' + Globalize.translate('LabelItemLimit') + '</label>';
html += '<input type="number" id="txtItemLimit" data-mini="true" step="1" min="1" />';
html += '<div class="fieldDescription">' + Globalize.translate('LabelItemLimitHelp') + '</div>';
html += '</div>';
}
//html += '</div>'; //html += '</div>';
//html += '</div>'; //html += '</div>';
@ -159,6 +178,33 @@
}); });
} }
function showUnwatchedFilter(items) {
return items.filter(function (i) {
return i.MediaType == "Video" || i.IsFolder || i.Type == "Person" || i.Type == "Genre" || i.Type == "MusicGenre" || i.Type == "GameGenre" || i.Type == "Studio" || i.Type == "MusicArtist";
}).length > 0;
}
function showItemLimit(items) {
return items.length > 1 || items.filter(function (i) {
return i.IsFolder || i.Type == "Person" || i.Type == "Genre" || i.Type == "MusicGenre" || i.Type == "GameGenre" || i.Type == "Studio" || i.Type == "MusicArtist";
}).length > 0;
}
function showSyncNew(items) {
return items.filter(function (i) {
return i.IsFolder || i.Type == "Person" || i.Type == "Genre" || i.Type == "MusicGenre" || i.Type == "GameGenre" || i.Type == "Studio" || i.Type == "MusicArtist";
}).length > 0;
}
function isAvailable(item, user) { function isAvailable(item, user) {
//return false; //return false;