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"
}