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

update context menu

This commit is contained in:
Luke Pulverenti 2016-07-16 19:08:21 -04:00
parent 289b252066
commit 0ce19d6e79
7 changed files with 148 additions and 29 deletions

View file

@ -15,12 +15,12 @@
}, },
"devDependencies": {}, "devDependencies": {},
"ignore": [], "ignore": [],
"version": "1.4.86", "version": "1.4.87",
"_release": "1.4.86", "_release": "1.4.87",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.4.86", "tag": "1.4.87",
"commit": "ddbdeddbe5f3fec3e7024a009077256d14f2ec0b" "commit": "66ba0bbe4db51edaebe898f5672e6da45aafbed9"
}, },
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.0", "_target": "^1.2.0",

View file

@ -48,6 +48,8 @@
positionTo: button, positionTo: button,
item: item item: item
}); });
// TODO: playallfromhere, queueallfromhere
}); });
}); });
} }

View file

@ -1,4 +1,4 @@
define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter'], function (appHost, globalize, connectionManager, itemHelper, embyRouter) { define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter', 'playbackManager'], function (appHost, globalize, connectionManager, itemHelper, embyRouter, playbackManager) {
function getCommands(options) { function getCommands(options) {
@ -48,38 +48,86 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter']
}); });
} }
if (item.MediaType == "Audio" || item.Type == "MusicAlbum" || item.Type == "MusicArtist" || item.Type == "MusicGenre" || item.CollectionType == "music") {
if (options.instantMix !== false) {
commands.push({
name: globalize.translate('sharedcomponents#InstantMix'),
id: 'instantmix'
});
}
}
if (options.open !== false) { if (options.open !== false) {
commands.push({ commands.push({
name: globalize.translate('Open'), name: globalize.translate('sharedcomponents#Open'),
id: 'open' id: 'open'
}); });
} }
if (options.play) {
commands.push({
name: globalize.translate('sharedcomponents#Play'),
id: 'resume'
});
}
if (options.playAllFromHere) {
commands.push({
name: globalize.translate('sharedcomponents#PlayAllFromHere'),
id: 'playallfromhere'
});
}
if (playbackManager.canQueueMediaType(item.MediaType)) {
if (options.queue) {
commands.push({
name: globalize.translate('sharedcomponents#Queue'),
id: 'queue'
});
}
if (options.queueAllFromHere) {
commands.push({
name: globalize.translate('sharedcomponents#QueueAllFromHere'),
id: 'queueallfromhere'
});
}
}
if (user.Policy.IsAdministrator) { if (user.Policy.IsAdministrator) {
commands.push({ commands.push({
name: globalize.translate('Refresh'), name: globalize.translate('sharedcomponents#Refresh'),
id: 'refresh' id: 'refresh'
}); });
} }
if (item.Type != 'Timer' && user.Policy.EnablePublicSharing && appHost.supports('sharing')) { if (item.Type != 'Timer' && user.Policy.EnablePublicSharing && appHost.supports('sharing')) {
commands.push({ commands.push({
name: globalize.translate('Share'), name: globalize.translate('sharedcomponents#Share'),
id: 'share' id: 'share'
}); });
} }
if (item.IsFolder || item.Type == "MusicArtist" || item.Type == "MusicGenre") {
if (options.shuffle !== false) {
commands.push({
name: globalize.translate('sharedcomponents#Shuffle'),
id: 'shuffle'
});
}
}
if (options.openAlbum !== false && item.AlbumId) { if (options.openAlbum !== false && item.AlbumId) {
commands.push({ commands.push({
name: Globalize.translate('ViewAlbum'), name: Globalize.translate('sharedcomponents#ViewAlbum'),
id: 'album' id: 'album'
}); });
} }
if (options.openArtist !== false && item.ArtistItems && item.ArtistItems.length) { if (options.openArtist !== false && item.ArtistItems && item.ArtistItems.length) {
commands.push({ commands.push({
name: Globalize.translate('ViewArtist'), name: Globalize.translate('sharedcomponents#ViewArtist'),
id: 'artist' id: 'artist'
}); });
} }
@ -88,6 +136,17 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter']
}); });
} }
function getResolveFunction(resolve, id, changed, deleted) {
return function () {
resolve({
command: id,
updated: changed,
deleted: deleted
});
};
}
function executeCommand(item, id) { function executeCommand(item, id) {
var itemId = item.Id; var itemId = item.Id;
@ -106,7 +165,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter']
items: [itemId], items: [itemId],
serverId: serverId serverId: serverId
}).then(reject, reject); }).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
}); });
break; break;
} }
@ -118,7 +177,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter']
items: [itemId], items: [itemId],
serverId: serverId serverId: serverId
}).then(reject, reject); }).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
}); });
break; break;
} }
@ -136,7 +195,7 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter']
serverId: serverId serverId: serverId
}]); }]);
reject(); getResolveFunction(getResolveFunction(resolve, id), id)();
}); });
break; break;
@ -146,27 +205,61 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter']
require(['subtitleEditor'], function (subtitleEditor) { require(['subtitleEditor'], function (subtitleEditor) {
var serverId = apiClient.serverInfo().Id; var serverId = apiClient.serverInfo().Id;
subtitleEditor.show(itemId, serverId).then(resolve, reject); subtitleEditor.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));
}); });
break; break;
} }
case 'refresh': case 'refresh':
{ {
refresh(apiClient, itemId); refresh(apiClient, itemId);
reject(); getResolveFunction(resolve, id)();
break; break;
} }
case 'open': case 'open':
{ {
embyRouter.showItem(item); embyRouter.showItem(item);
reject(); getResolveFunction(resolve, id)();
break;
}
case 'play':
{
playbackManager.play({
items: [item]
});
getResolveFunction(resolve, id)();
break;
}
case 'resume':
{
playbackManager.play({
items: [item]
});
getResolveFunction(resolve, id)();
break;
}
case 'queue':
{
playbackManager.queue({
items: [item]
});
getResolveFunction(resolve, id)();
break;
}
case 'shuffle':
{
playbackManager.shuffle(item);
getResolveFunction(resolve, id)();
break;
}
case 'instantmix':
{
playbackManager.instantMix(item);
getResolveFunction(resolve, id)();
break; break;
} }
case 'delete': case 'delete':
{ {
deleteItem(apiClient, itemId).then(function () { deleteItem(apiClient, itemId).then(getResolveFunction(resolve, id, true, true), getResolveFunction(resolve, id));
resolve(true);
});
break; break;
} }
case 'share': case 'share':
@ -176,20 +269,30 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'embyRouter']
serverId: serverId, serverId: serverId,
itemId: itemId itemId: itemId
}).then(reject); }).then(getResolveFunction(resolve, id));
}); });
break; break;
} }
case 'album': case 'album':
{ {
embyRouter.showItem(item.AlbumId, item.ServerId); embyRouter.showItem(item.AlbumId, item.ServerId);
reject(); getResolveFunction(resolve, id)();
break; break;
} }
case 'artist': case 'artist':
{ {
embyRouter.showItem(item.ArtistItems[0].Id, item.ServerId); embyRouter.showItem(item.ArtistItems[0].Id, item.ServerId);
reject(); getResolveFunction(resolve, id)();
break;
}
case 'playallfromhere':
{
getResolveFunction(resolve, id)();
break;
}
case 'queueallfromhere':
{
getResolveFunction(resolve, id)();
break; break;
} }
default: default:

View file

@ -179,6 +179,10 @@ div.listItem {
@supports (display: flex) { @supports (display: flex) {
.listItem > * {
display: flex;
}
.listItem, .listItemBody, .listItemMediaInfo { .listItem, .listItemBody, .listItemMediaInfo {
display: flex; display: flex;
} }

View file

@ -121,6 +121,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
var clickEntireItem = layoutManager.tv ? true : false; var clickEntireItem = layoutManager.tv ? true : false;
var outerTagName = clickEntireItem ? 'button' : 'div'; var outerTagName = clickEntireItem ? 'button' : 'div';
var enableSideMediaInfo = options.enableSideMediaInfo != null ? options.enableSideMediaInfo : clickEntireItem;
var outerHtml = ''; var outerHtml = '';
@ -234,7 +235,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
} }
var lineCount = textlines.length; var lineCount = textlines.length;
if (!options.enableSideMediaInfo) { if (!enableSideMediaInfo) {
lineCount++; lineCount++;
} }
if (enableOverview && item.Overview) { if (enableOverview && item.Overview) {
@ -268,7 +269,7 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
} }
} }
if (!options.enableSideMediaInfo) { if (!enableSideMediaInfo) {
html += '<div class="secondary listItemMediaInfo">' + mediaInfo.getPrimaryMediaInfoHtml(item) + '</div>'; html += '<div class="secondary listItemMediaInfo">' + mediaInfo.getPrimaryMediaInfoHtml(item) + '</div>';
} }
@ -280,6 +281,10 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
html += '</div>'; html += '</div>';
if (enableSideMediaInfo) {
html += '<div class="secondary listItemMediaInfo">' + mediaInfo.getPrimaryMediaInfoHtml(item) + '</div>';
}
if (!clickEntireItem) { if (!clickEntireItem) {
html += '<button is="paper-icon-button-light" class="menuButton autoSize"><i class="md-icon">&#xE5D4;</i></button>'; html += '<button is="paper-icon-button-light" class="menuButton autoSize"><i class="md-icon">&#xE5D4;</i></button>';
html += '<span class="listViewUserDataButtons">'; html += '<span class="listViewUserDataButtons">';
@ -287,10 +292,6 @@ define(['itemHelper', 'mediaInfo', 'indicators', 'connectionManager', 'layoutMan
html += '</span>'; html += '</span>';
} }
if (options.enableSideMediaInfo) {
html += '<div class="secondary listItemMediaInfo">' + mediaInfo.getPrimaryMediaInfoHtml(item) + '</div>';
}
html += '</' + outerTagName + '>'; html += '</' + outerTagName + '>';
index++; index++;

View file

@ -100,6 +100,12 @@
"Played": "Played", "Played": "Played",
"RefreshDialogHelp": "Metadata is refreshed based on settings and internet services that are enabled in the Emby Server dashboard.", "RefreshDialogHelp": "Metadata is refreshed based on settings and internet services that are enabled in the Emby Server dashboard.",
"Open": "Open", "Open": "Open",
"Play": "Play",
"Queue": "Queue",
"Shuffle": "Shuffle",
"InstantMix": "Instant Mix",
"ViewAlbum": "View Album", "ViewAlbum": "View Album",
"ViewArtist": "View Artist" "ViewArtist": "View Artist",
"QueueAllFromHere": "Queue All from Here",
"PlayAllFromHere": "Play All from Here"
} }

View file

@ -2029,6 +2029,9 @@ var AppInfo = {};
}, },
currentPlaylistIndex: function (options) { currentPlaylistIndex: function (options) {
return MediaController.currentPlaylistIndex(options); return MediaController.currentPlaylistIndex(options);
},
canQueueMediaType: function(mediaType) {
return MediaController.canQueueMediaType(mediaType);
} }
}; };
}); });