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

update metadata editor

This commit is contained in:
Luke Pulverenti 2015-09-19 22:06:56 -04:00
parent c08a709ad1
commit 0db16cad5a
44 changed files with 1125 additions and 438 deletions

View file

@ -1378,6 +1378,12 @@
});
}
menuItems.push({
name: Globalize.translate('ButtonEditImages'),
id: 'editimages',
ironIcon: 'photo'
});
require(['actionsheet'], function () {
ActionSheetElement.show({
@ -1393,6 +1399,9 @@
case 'delete':
LibraryBrowser.deleteItem(currentItem.Id);
break;
case 'editimages':
LibraryBrowser.editImages(currentItem.Id);
break;
default:
break;
}
@ -1443,8 +1452,6 @@
if (data.id != currentItem.Id) {
//Dashboard.navigate('edititemmetadata.html?id=' + data.id);
//$.mobile.urlHistory.ignoreNextHashChange = true;
window.location.hash = 'editItemMetadataPage?id=' + data.id;
reload(page);

View file

@ -244,6 +244,17 @@
Events.on(page.querySelector('.btnTakeTour'), 'click', function () {
takeTour(page, Dashboard.getCurrentUserId());
});
});
pageIdOn('pageshowready', "indexPage", function () {
var page = this;
});
pageIdOn('pagebeforehide', "indexPage", function () {
var page = this;
});

View file

@ -752,6 +752,16 @@
});
},
editMetadata: function (itemId) {
Dashboard.navigate('edititemmetadata.html?id=' + itemId);
return;
require(['components/metadataeditor/metadataeditor'], function () {
MetadataEditor.show(itemId);
});
},
showMoreCommands: function (positionTo, itemId, commands) {
var items = [];
@ -861,7 +871,7 @@
break;
}
case 'edit':
Dashboard.navigate('edititemmetadata.html?id=' + itemId);
LibraryBrowser.editMetadata(itemId);
break;
case 'editsubtitles':
LibraryBrowser.editSubtitles(itemId);
@ -2345,26 +2355,19 @@
getSyncIndicator: function (item) {
if (item.SyncPercent) {
if (item.SyncStatus == 'Synced') {
if (item.SyncPercent >= 100) {
return '<div class="syncIndicator"><iron-icon icon="refresh"></iron-icon></div>';
}
var degree = (item.SyncPercent / 100) * 360;
return '<div class="pieIndicator"><iron-icon icon="refresh"></iron-icon><div class="pieBackground"></div><div class="hold"><div class="pie" style="-webkit-transform: rotate(' + degree + 'deg);-moz-transform: rotate(' + degree + 'deg);-o-transform: rotate(' + degree + 'deg);transform: rotate(' + degree + 'deg);"></div></div></div>';
return '<div class="syncIndicator"><iron-icon icon="sync"></iron-icon></div>';
}
if (item.SyncStatus) {
if (item.SyncStatus == 'Queued' || item.SyncStatus == 'Converting' || item.SyncStatus == 'ReadyToTransfer' || item.SyncStatus == 'Transferring') {
var syncPercent = item.SyncPercent;
if (syncPercent) {
return '<div class="workingSyncIndicator syncIndicator"><iron-icon icon="sync"></iron-icon></div>';
}
return '<div class="syncIndicator syncWorkingIndicator"><iron-icon icon="refresh"></iron-icon></div>';
}
if (item.SyncStatus == 'Queued' || item.SyncStatus == 'Converting' || item.SyncStatus == 'ReadyToTransfer' || item.SyncStatus == 'Transferring') {
if (item.SyncStatus == 'Synced') {
return '<div class="syncIndicator"><iron-icon icon="refresh"></iron-icon></div>';
}
return '<div class="workingSyncIndicator syncIndicator"><iron-icon icon="sync"></iron-icon></div>';
}
return '';

View file

@ -428,7 +428,7 @@
break;
}
case 'edit':
Dashboard.navigate('edititemmetadata.html?id=' + itemId);
LibraryBrowser.editMetadata(itemId);
break;
case 'refresh':
ApiClient.refreshItem(itemId, {
@ -796,7 +796,7 @@
contentHtml += '<paper-button data-href="' + LibraryBrowser.getHref(item, context) + '" raised class="submit" style="background-color: #673AB7;" onclick="Dashboard.navigate(this.getAttribute(\'data-href\'));"><iron-icon icon="folder-open"></iron-icon><span>' + Globalize.translate('ButtonOpen') + '</span></paper-button>';
if (SyncManager.isAvailable(item, user)) {
contentHtml += '<paper-button raised class="submit btnSync"><iron-icon icon="refresh"></iron-icon><span>' + Globalize.translate('ButtonSync') + '</span></paper-button>';
contentHtml += '<paper-button raised class="submit btnSync"><iron-icon icon="sync"></iron-icon><span>' + Globalize.translate('ButtonSync') + '</span></paper-button>';
}
contentHtml += '</div>';
@ -1273,7 +1273,6 @@
$('<div class="playedIndicator"></div>').insertAfter($('.cardOverlayTarget', card));
}
$('.playedIndicator', card).html('<iron-icon icon="check"></iron-icon>');
$('.cardProgress', card).remove();
}
else if (userData.UnplayedItemCount) {
@ -1283,13 +1282,23 @@
}
$('.playedIndicator', card).html(userData.UnplayedItemCount);
}
var progressHtml = LibraryBrowser.getItemProgressBarHtml(userData);
if (progressHtml) {
var cardProgress = card.querySelector('.cardProgress');
if (!cardProgress) {
cardProgress = document.createElement('div');
cardProgress.classList.add('cardProgress');
$('.cardFooter', card).append(cardProgress);
}
cardProgress.innerHTML = progressHtml;
}
else {
$('.playedIndicator', card).remove();
var progressHtml = LibraryBrowser.getItemProgressBarHtml(userData);
$('.cardProgress', card).html(progressHtml);
$('.cardProgress', card).remove();
}
}

View file

@ -40,7 +40,7 @@
var viewMenuBar = document.createElement('div');
viewMenuBar.classList.add('viewMenuBar');
viewMenuBar.classList.add('ui-bar-b');
viewMenuBar.classList.add('ui-body-b');
viewMenuBar.innerHTML = html;
document.body.appendChild(viewMenuBar);
@ -356,7 +356,7 @@
html += '<a class="sidebarLink lnkMediaFolder lnkMySettings" onclick="return LibraryMenu.onLinkClicked(event, this);" data-itemid="mysync" href="mypreferencesmenu.html?userId=' + user.localUser.Id + '"><iron-icon icon="settings" class="sidebarLinkIcon"></iron-icon><span class="sidebarLinkText">' + Globalize.translate('ButtonSettings') + '</span></a>';
}
html += '<a class="sidebarLink lnkMediaFolder lnkMySync" data-itemid="mysync" onclick="return LibraryMenu.onLinkClicked(event, this);" href="mysync.html"><iron-icon icon="refresh" class="sidebarLinkIcon"></iron-icon><span class="sidebarLinkText">' + Globalize.translate('ButtonSync') + '</span></a>';
html += '<a class="sidebarLink lnkMediaFolder lnkMySync" data-itemid="mysync" onclick="return LibraryMenu.onLinkClicked(event, this);" href="mysync.html"><iron-icon icon="sync" class="sidebarLinkIcon"></iron-icon><span class="sidebarLinkText">' + Globalize.translate('ButtonSync') + '</span></a>';
if (Dashboard.isConnectMode()) {
html += '<a class="sidebarLink lnkMediaFolder" data-itemid="selectserver" onclick="return LibraryMenu.onLinkClicked(event, this);" href="selectserver.html"><iron-icon icon="wifi" class="sidebarLinkIcon"></iron-icon><span class="sidebarLinkText">' + Globalize.translate('ButtonSelectServer') + '</span></a>';

View file

@ -1,6 +1,7 @@
(function () {
var syncPromise;
var lastStart = 0;
window.LocalSync = {
@ -13,6 +14,7 @@
if (!syncPromise) {
require(['multiserversync'], function () {
lastStart = new Date().getTime();
syncPromise = new MediaBrowser.MultiServerSync(ConnectionManager).sync().done(function () {
syncPromise = null;
@ -34,15 +36,23 @@
}
};
Dashboard.ready(function () {
var syncInterval = 1800000;
function restartInterval() {
if (LocalSync.isSupported) {
setInterval(function () {
LocalSync.startSync();
}, 3600000);
}, syncInterval);
if (lastStart > 0 && (now - lastStart) >= syncInterval) {
LocalSync.startSync();
}
}
//LocalSync.startSync();
});
}
Dashboard.ready(restartInterval);
document.addEventListener("resume", restartInterval, false);
})();

View file

@ -5,7 +5,6 @@
var self = this;
var currentProgressInterval;
var canClientSeek;
var currentPlaylistIndex = 0;
self.currentMediaRenderer = null;
@ -513,17 +512,19 @@
return supportsTextTracks;
};
self.updateCanClientSeek = function (mediaRenderer) {
// Returns true if the player can seek using native client-side seeking functions
function canPlayerSeek() {
var mediaRenderer = self.currentMediaRenderer;
var currentSrc = self.getCurrentSrc(mediaRenderer);
if ((currentSrc || '').indexOf('.m3u8') != -1) {
canClientSeek = true;
return true;
} else {
var duration = mediaRenderer.duration();
canClientSeek = duration && !isNaN(duration) && duration != Number.POSITIVE_INFINITY && duration != Number.NEGATIVE_INFINITY;
return duration && !isNaN(duration) && duration != Number.POSITIVE_INFINITY && duration != Number.NEGATIVE_INFINITY;
}
};
}
self.getCurrentSrc = function (mediaRenderer) {
return mediaRenderer.currentSrc();
@ -610,7 +611,7 @@
var mediaRenderer = self.currentMediaRenderer;
if (canClientSeek && params == null) {
if (canPlayerSeek() && params == null) {
mediaRenderer.currentTime(ticks / 10000);
return;
@ -664,8 +665,6 @@
$(mediaRenderer).one("play", function () {
self.updateCanClientSeek(this);
Events.on(this, 'ended', self.onPlaybackStopped);
$(this).one('ended', self.playNextAfterEnded);
@ -742,7 +741,7 @@
if (positionSlider) {
positionSlider.disabled = !((self.currentDurationTicks || 0) > 0 || canClientSeek);
positionSlider.disabled = !((self.currentDurationTicks || 0) > 0 || canPlayerSeek());
}
if (currentTimeElement) {
@ -1600,7 +1599,7 @@
RunTimeTicks: mediaSource.RunTimeTicks
};
state.PlayState.CanSeek = (mediaSource.RunTimeTicks || 0) > 0 || canClientSeek;
state.PlayState.CanSeek = (mediaSource.RunTimeTicks || 0) > 0 || canPlayerSeek();
}
if (item) {
@ -1694,8 +1693,6 @@
self.onPlaybackStart = function (mediaRenderer, item, mediaSource) {
self.updateCanClientSeek(mediaRenderer);
var state = self.getPlayerStateInternal(mediaRenderer, item, mediaSource);
Events.trigger(self, 'playbackstart', [state]);

View file

@ -117,12 +117,12 @@ var Dashboard = {
}
},
onPopupOpen: function(){
onPopupOpen: function () {
Dashboard.popupCount = (Dashboard.popupCount || 0) + 1;
document.body.classList.add('bodyWithPopupOpen');
},
onPopupClose: function(){
onPopupClose: function () {
Dashboard.popupCount = (Dashboard.popupCount || 1) - 1;
@ -1592,7 +1592,7 @@ var Dashboard = {
}
},
getAppInfo: function (appName, deviceId, deviceName) {
getAppInfo: function (appName, appVersion, deviceId, deviceName) {
function generateDeviceName() {
@ -1624,7 +1624,7 @@ var Dashboard = {
return name;
}
var appVersion = window.dashboardVersion;
appVersion = appVersion || window.dashboardVersion;
appName = appName || "Emby Web Client";
deviceName = deviceName || generateDeviceName();
@ -1991,7 +1991,7 @@ var AppInfo = {};
}
}
function init(deferred, capabilities, appName, deviceId, deviceName) {
function init(deferred, capabilities, appName, appVersion, deviceId, deviceName) {
requirejs.config({
urlArgs: "v=" + window.dashboardVersion,
@ -2174,7 +2174,7 @@ var AppInfo = {};
}
require(deps, function () {
$.extend(AppInfo, Dashboard.getAppInfo(appName, deviceId, deviceName));
$.extend(AppInfo, Dashboard.getAppInfo(appName, appVersion, deviceId, deviceName));
initAfterDependencies(deferred, capabilities);
});
@ -2300,11 +2300,13 @@ var AppInfo = {};
require(['cordova/imagestore']);
var capablities = Dashboard.capabilities();
cordova.getAppVersion.getVersionNumber(function (appVersion) {
var capablities = Dashboard.capabilities();
var name = $.browser.android ? "Emby for Android" : ($.browser.safari ? "Emby for iOS" : "Emby Mobile");
var name = $.browser.android ? "Emby for Android" : ($.browser.safari ? "Emby for iOS" : "Emby Mobile");
init(deferred, capablities, name, deviceId, device.model);
init(deferred, capablities, name, appVersion, deviceId, device.model);
});
}
function initCordova(deferred) {
@ -2398,13 +2400,13 @@ pageClassOn('pageshow', "page", function () {
if (currentTheme == 'a') {
docElem.classList.add('background-theme-a');
docElem.classList.remove('background-theme-b');
docElem.classList.add('ui-body-a');
docElem.classList.remove('ui-body-b');
page.classList.add('ui-body-a');
page.classList.remove('ui-body-b');
} else {
docElem.classList.add('background-theme-b');
docElem.classList.remove('background-theme-a');
docElem.classList.add('ui-body-b');
docElem.classList.remove('ui-body-a');
page.classList.add('ui-body-b');
page.classList.remove('ui-body-a');
}
if (currentTheme != 'a' && !$.browser.mobile) {

View file

@ -236,7 +236,7 @@
html += '<div class="formFields"></div>';
html += '<p>';
html += '<button type="submit" data-role="none" class="clearButton"><paper-button raised class="submit block"><iron-icon icon="refresh"></iron-icon><span>' + Globalize.translate('ButtonSync') + '</span></paper-button></button>';
html += '<button type="submit" data-role="none" class="clearButton"><paper-button raised class="submit block"><iron-icon icon="sync"></iron-icon><span>' + Globalize.translate('ButtonSync') + '</span></paper-button></button>';
html += '</p>';
html += '</form>';

View file

@ -55,7 +55,7 @@
html += '<div class="cardImage coveredCardImage lazy" data-src="' + imgUrl + '" style="' + style + '">';
if (job.Progress && job.Progress < 100) {
html += '<div class="cardFooter">';
html += '<div class="cardFooter fullCardFooter lightCardFooter">';
html += "<div class='cardText cardProgress'>";
html += '<progress class="itemProgressBar" min="0" max="100" value="' + job.Progress + '"></progress>';
html += "</div>";
@ -147,31 +147,36 @@
var cardBoxCssClass = 'cardBox visualCardBox';
var syncJobPage = 'syncjob.html';
var showTargetName = true;
if ($(page).hasClass('mySyncPage')) {
syncJobPage = 'mysyncjob.html';
showTargetName = !hasLocalSync();
}
for (var i = 0, length = jobs.length; i < length; i++) {
var job = jobs[i];
var targetName = job.TargetName || 'Unknown';
if (showTargetName) {
var targetName = job.TargetName || 'Unknown';
if (targetName != lastTargetName) {
if (targetName != lastTargetName) {
if (lastTargetName) {
html += '<br/>';
html += '<br/>';
html += '<br/>';
if (lastTargetName) {
html += '<br/>';
html += '<br/>';
html += '<br/>';
}
lastTargetName = targetName;
html += '<div class="detailSectionHeader">';
html += '<div>' + targetName + '</div>';
html += '</div>';
}
lastTargetName = targetName;
html += '<div class="detailSectionHeader">';
html += '<div style="display:inline-block;vertical-align:middle;">' + targetName + '</div>';
html += '</div>';
}
html += getSyncJobHtml(page, job, cardBoxCssClass, syncJobPage);
@ -236,6 +241,10 @@
});
}
function hasLocalSync() {
return Dashboard.capabilities().SupportsSync;
}
function reloadData(page) {
Dashboard.showLoadingMsg();
@ -246,6 +255,10 @@
if ($(page).hasClass('mySyncPage')) {
options.UserId = Dashboard.getCurrentUserId();
if (hasLocalSync()) {
options.TargetId = ApiClient.deviceId();
}
}
ApiClient.getJSON(ApiClient.getUrl('Sync/Jobs', options)).done(function (response) {
@ -263,7 +276,16 @@
var page = $.mobile.activePage;
if (msg.MessageType == "SyncJobs") {
loadData(page, msg.Data);
var data = msg.Data;
if (hasLocalSync()) {
var targetId = ApiClient.deviceId();
data = data.filter(function (j) {
return TargetId = targetId;
});
}
loadData(page, data);
}
}

View file

@ -64,7 +64,7 @@
html += '<paper-fab class="listAvatar blue" style="background-image:url(\'' + imgUrl + '\');background-repeat:no-repeat;background-position:center center;background-size: cover;" item-icon></paper-fab>';
}
else {
html += '<paper-fab class="listAvatar blue" icon="refresh" item-icon></paper-fab>';
html += '<paper-fab class="listAvatar blue" icon="sync" item-icon></paper-fab>';
}
html += '<paper-item-body three-line>';

View file

@ -78,7 +78,7 @@ $.fn.taskButton = function (options) {
var id = button.getAttribute('data-taskid');
var key = 'scheduledTaskButton' + options.taskKey;
var expectedValue = '4';
var expectedValue = new Date().getMonth() + '5';
if (appStorage.getItem(key) == expectedValue) {
onScheduledTaskMessageConfirmed(button, id);
@ -86,8 +86,9 @@ $.fn.taskButton = function (options) {
var msg = Globalize.translate('ConfirmMessageScheduledTaskButton');
msg += '<br/>';
msg += '<br/>';
msg += '<a href="scheduledtasks.html">' + Globalize.translate('ButtonScheduledTasks') + '</a>';
msg += '<div style="margin-top:1em;">';
msg += '<a class="clearLink" href="scheduledtasks.html"><paper-button style="color:#3f51b5!important;margin:0;">' + Globalize.translate('ButtonScheduledTasks') + '</paper-button></a>';
msg += '</div>';
Dashboard.confirm(msg, Globalize.translate('HeaderConfirmation'), function (result) {