diff --git a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js index 8dc2cffe58..ee3d5aac4a 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js +++ b/dashboard-ui/bower_components/emby-webcomponents/guide/guide.js @@ -171,7 +171,8 @@ return c.Id; }).join(','), ImageTypeLimit: 1, - EnableImageTypes: layoutManager.tv ? "Primary,Backdrop" : "Primary", + EnableImages: false, + //EnableImageTypes: layoutManager.tv ? "Primary,Backdrop" : "Primary", SortBy: "StartDate", EnableTotalRecordCount: false, EnableUserData: false diff --git a/dashboard-ui/components/syncjoblist/syncjoblist.js b/dashboard-ui/components/syncjoblist/syncjoblist.js index 3a2ae08d8b..4d9e2cf4f8 100644 --- a/dashboard-ui/components/syncjoblist/syncjoblist.js +++ b/dashboard-ui/components/syncjoblist/syncjoblist.js @@ -57,7 +57,7 @@ globalize.translate('CancelSyncJobConfirmation'); statusIcon.classList.remove('status-text-icon'); statusIcon.classList.add('zeroProgressStatus'); } else if (progress >= 100) { - statusIcon.innerHTML = 'file_download'; + statusIcon.innerHTML = 'check'; statusIcon.classList.add('md-icon'); statusIcon.classList.remove('status-text-icon'); statusIcon.classList.remove('zeroProgressStatus'); @@ -80,7 +80,7 @@ globalize.translate('CancelSyncJobConfirmation'); if (progress === 0) { html += 'file_download'; } else if (progress >= 100) { - html += 'file_download'; + html += 'check'; } else { html += '' + (Math.round(progress)) + '%'; } @@ -139,7 +139,8 @@ globalize.translate('CancelSyncJobConfirmation'); var html = ''; var lastTargetName = ''; - var showTargetName = !listInstance.options.isLocalSync; + var isLocalSync = listInstance.options.isLocalSync; + var showTargetName = !isLocalSync; var hasOpenSection = false; @@ -179,6 +180,15 @@ globalize.translate('CancelSyncJobConfirmation'); } var elem = listInstance.options.element; + + if (!html) { + if (isLocalSync) { + html = '
' + globalize.translate('MessageDownloadsFound') + '
'; + } else { + html = '
' + globalize.translate('MessageNoSyncJobsFound') + '
'; + } + } + elem.innerHTML = html; imageLoader.lazyChildren(elem); diff --git a/dashboard-ui/itemdetails.html b/dashboard-ui/itemdetails.html index 2befbdee9d..81bfa95b60 100644 --- a/dashboard-ui/itemdetails.html +++ b/dashboard-ui/itemdetails.html @@ -160,12 +160,12 @@
-

- ${HeaderScenes} - - - -

+
+

+ ${HeaderScenes} +

+ +
diff --git a/dashboard-ui/scripts/itemdetailpage.js b/dashboard-ui/scripts/itemdetailpage.js index 48e1640c8a..d25c1381c6 100644 --- a/dashboard-ui/scripts/itemdetailpage.js +++ b/dashboard-ui/scripts/itemdetailpage.js @@ -2229,6 +2229,10 @@ } + view.querySelector('.chapterSettingsButton').addEventListener('click', function () { + Dashboard.navigate('librarysettings.html'); + }); + view.addEventListener('viewbeforeshow', function () { var page = this; reload(page, params); diff --git a/dashboard-ui/scripts/sync.js b/dashboard-ui/scripts/sync.js index 5b64f95f95..0e60f8ec30 100644 --- a/dashboard-ui/scripts/sync.js +++ b/dashboard-ui/scripts/sync.js @@ -23,7 +23,7 @@ require(['toast'], function (toast) { toast(Globalize.translate('MessagePleaseSelectDeviceToSyncTo')); }); - return; + return false; } var options = { @@ -55,9 +55,14 @@ dialogHelper.close(dlg); require(['toast'], function (toast) { - toast(Globalize.translate('MessageSyncJobCreated')); + + var msg = target == ApiClient.deviceId() ? Globalize.translate('MessageDownloadScheduled') : Globalize.translate('MessageSyncJobCreated'); + + toast(msg); }); }); + + return true; } function setJobValues(job, form) { @@ -221,7 +226,7 @@ return new Promise(function (resolve, reject) { - requirejs(["registrationservices", 'dialogHelper', 'formDialogStyle'], function (registrationServices, dialogHelper) { + require(["registrationservices", 'dialogHelper', 'formDialogStyle'], function (registrationServices, dialogHelper) { registrationServices.validateFeature('sync').then(function () { showSyncMenuInternal(dialogHelper, options).then(resolve, reject); @@ -289,10 +294,12 @@ dlg.innerHTML = html; document.body.appendChild(dlg); + var submitted = false; $('form', dlg).on('submit', function () { - submitJob(dlg, userId, options, this, dialogHelper); + submitted = submitJob(dlg, userId, options, this, dialogHelper); + return false; }); @@ -308,7 +315,12 @@ dialogOptionsFn: getTargetDialogOptionsFn(dialogOptionsQuery) }); - return promise; + return promise.then(function () { + if (submitted) { + return Promise.resolve(); + } + return Promise.reject(); + }); }); } diff --git a/dashboard-ui/scripts/syncjob.js b/dashboard-ui/scripts/syncjob.js index 20d444e4e8..4673d68d94 100644 --- a/dashboard-ui/scripts/syncjob.js +++ b/dashboard-ui/scripts/syncjob.js @@ -1,4 +1,4 @@ -define(['jQuery', 'datetime', 'listViewStyle', 'paper-icon-button-light', 'emby-button'], function ($, datetime) { +define(['datetime', 'dom', 'listViewStyle', 'paper-icon-button-light', 'emby-button'], function (datetime, dom) { function renderJob(page, job, dialogOptions) { @@ -119,10 +119,6 @@ var elem = page.querySelector('.jobItems'); elem.innerHTML = html; ImageLoader.lazyChildren(elem); - - $('.btnJobItemMenu', elem).on('click', function () { - showJobItemMenu(this); - }); } function parentWithClass(elem, className) { @@ -273,16 +269,36 @@ txtSyncJobName.value = job.Name; } - $('#selectProfile', page).val(job.Profile || '').trigger('change'); - $('#selectQuality', page).val(job.Quality || '').trigger('change'); - $('#chkUnwatchedOnly', page).checked(job.UnwatchedOnly); - $('#chkSyncNewContent', page).checked(job.SyncNewContent); - $('#txtItemLimit', page).val(job.ItemLimit); + var selectProfile = page.querySelector('#selectProfile'); + if (selectProfile) { + selectProfile.value = job.Profile || ''; + } + var selectQuality = page.querySelector('#selectQuality'); + if (selectQuality) { + selectQuality.value = job.Quality || ''; + } + + var chkUnwatchedOnly = page.querySelector('#chkUnwatchedOnly'); + if (chkUnwatchedOnly) { + chkUnwatchedOnly.checked = job.UnwatchedOnly; + } + + var chkSyncNewContent = page.querySelector('#chkSyncNewContent'); + if (chkSyncNewContent) { + chkSyncNewContent.checked = job.SyncNewContent; + } + + var txtItemLimit = page.querySelector('#txtItemLimit'); + if (txtItemLimit) { + txtItemLimit.value = job.ItemLimit; + } + + var txtBitrate = page.querySelector('#txtBitrate'); if (job.Bitrate) { - $('#txtBitrate', page).val(job.Bitrate / 1000000); + txtBitrate.value = job.Bitrate / 1000000; } else { - $('#txtBitrate', page).val(''); + txtBitrate.value = ''; } var target = editOptions.Targets.filter(function (t) { @@ -290,7 +306,10 @@ })[0]; var targetName = target ? target.Name : ''; - $('#selectSyncTarget', page).val(targetName); + var selectSyncTarget = page.querySelector('#selectSyncTarget'); + if (selectSyncTarget) { + selectSyncTarget.value = targetName; + } } var _jobOptions; @@ -401,6 +420,13 @@ } + view.querySelector('.jobItems').addEventListener('click', function (e) { + var btnJobItemMenu = dom.parentWithClass(e.target, 'btnJobItemMenu'); + if (btnJobItemMenu) { + showJobItemMenu(btnJobItemMenu); + } + }); + view.addEventListener('viewshow', function () { var page = this; loadJob(page); diff --git a/dashboard-ui/strings/en-US.json b/dashboard-ui/strings/en-US.json index 95902d3d85..8b1a4c2ad9 100644 --- a/dashboard-ui/strings/en-US.json +++ b/dashboard-ui/strings/en-US.json @@ -1582,7 +1582,8 @@ "ButtonTakeTheTour": "Take the tour", "HeaderWelcomeBack": "Welcome back!", "ButtonTakeTheTourToSeeWhatsNew": "Take the tour to see what's new", - "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the web interface.", + "MessageNoSyncJobsFound": "No sync jobs found. Create sync jobs using the Sync buttons found throughout the app.", + "MessageDownloadsFound": "No offline downloads. Make your media available offline by clicking Make Available Offline throughout the app.", "HeaderSelectDevices": "Select Devices", "ButtonCancelItem": "Cancel item", "ButtonQueueForRetry": "Queue for retry", @@ -2315,5 +2316,6 @@ "MakeAvailableOffline": "Make available offline", "ConfirmRemoveDownload": "Remove download?", "SyncToOtherDevices": "Sync to other devices", - "ManageOfflineDownloads": "Manage offline downloads" + "ManageOfflineDownloads": "Manage offline downloads", + "MessageDownloadScheduled": "Download scheduled" }