mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
chromecast updates
This commit is contained in:
parent
2e25b47fb2
commit
f6995379a2
5 changed files with 41 additions and 161 deletions
|
@ -211,6 +211,11 @@
|
||||||
$(this).trigger('connect');
|
$(this).trigger('connect');
|
||||||
|
|
||||||
MediaController.setActivePlayer(PlayerName);
|
MediaController.setActivePlayer(PlayerName);
|
||||||
|
|
||||||
|
this.sendMessage({
|
||||||
|
options: {},
|
||||||
|
command: 'Identify'
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -288,6 +293,22 @@
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var endpointInfo;
|
||||||
|
function getEndpointInfo() {
|
||||||
|
|
||||||
|
if (endpointInfo) {
|
||||||
|
|
||||||
|
var deferred = $.Deferred();
|
||||||
|
deferred.resolveWith(null, [endpointInfo]);
|
||||||
|
return deferred.promise();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ApiClient.getJSON(ApiClient.getUrl('System/Endpoint')).done(function (info) {
|
||||||
|
|
||||||
|
endpointInfo = info;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
CastPlayer.prototype.sendMessage = function (message) {
|
CastPlayer.prototype.sendMessage = function (message) {
|
||||||
|
|
||||||
var player = this;
|
var player = this;
|
||||||
|
@ -299,19 +320,18 @@
|
||||||
serverAddress: ApiClient.serverAddress()
|
serverAddress: ApiClient.serverAddress()
|
||||||
});
|
});
|
||||||
|
|
||||||
// If the user is on localhost we need a different address to send to the receiver
|
getEndpointInfo().done(function (endpoint) {
|
||||||
var address = message.serverAddress.toLowerCase();
|
|
||||||
if (address.indexOf('localhost') != -1 || address.indexOf('127.0.0') != -1) {
|
|
||||||
|
|
||||||
ApiClient.getSystemInfo().done(function (info) {
|
if (endpoint.IsLocal || endpoint.IsInNetwork) {
|
||||||
|
ApiClient.getSystemInfo().done(function (info) {
|
||||||
|
|
||||||
message.serverAddress = info.WanAddress;
|
message.serverAddress = info.LocalAddress;
|
||||||
|
player.sendMessageInternal(message);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
player.sendMessageInternal(message);
|
player.sendMessageInternal(message);
|
||||||
});
|
}
|
||||||
|
});
|
||||||
} else {
|
|
||||||
player.sendMessageInternal(message);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
CastPlayer.prototype.sendMessageInternal = function (message) {
|
CastPlayer.prototype.sendMessageInternal = function (message) {
|
||||||
|
@ -375,18 +395,8 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (this.castPlayerState) {
|
this.currentMediaSession.play(null, this.mediaCommandSuccessCallback.bind(this, "playing started for " + this.currentMediaSession.sessionId), this.errorHandler);
|
||||||
case PLAYER_STATE.LOADED:
|
//this.currentMediaSession.addUpdateListener(this.mediaStatusUpdateHandler);
|
||||||
case PLAYER_STATE.PAUSED:
|
|
||||||
this.currentMediaSession.play(null,
|
|
||||||
this.mediaCommandSuccessCallback.bind(this, "playing started for " + this.currentMediaSession.sessionId),
|
|
||||||
this.errorHandler);
|
|
||||||
this.currentMediaSession.addUpdateListener(this.mediaStatusUpdateHandler);
|
|
||||||
this.castPlayerState = PLAYER_STATE.PLAYING;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -398,12 +408,7 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.castPlayerState == PLAYER_STATE.PLAYING) {
|
this.currentMediaSession.pause(null, this.mediaCommandSuccessCallback.bind(this, "paused " + this.currentMediaSession.sessionId), this.errorHandler);
|
||||||
this.castPlayerState = PLAYER_STATE.PAUSED;
|
|
||||||
this.currentMediaSession.pause(null,
|
|
||||||
this.mediaCommandSuccessCallback.bind(this, "paused " + this.currentMediaSession.sessionId),
|
|
||||||
this.errorHandler);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -719,8 +724,7 @@
|
||||||
"Mute",
|
"Mute",
|
||||||
"Unmute",
|
"Unmute",
|
||||||
"ToggleMute",
|
"ToggleMute",
|
||||||
"SetVolume",
|
"SetVolume"]
|
||||||
"DisplayContent"]
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -182,126 +182,6 @@
|
||||||
return counts.join(' • ');
|
return counts.join(' • ');
|
||||||
},
|
},
|
||||||
|
|
||||||
getSongHeaderCellHtml: function (text, cssClass, enableSorting, sortField, selectedSortField, sortDirection) {
|
|
||||||
|
|
||||||
var html = cssClass ? '<th class="' + cssClass + '">' : '<th>';
|
|
||||||
|
|
||||||
if (text && enableSorting) {
|
|
||||||
html += '<a class="lnkColumnSort" data-sortfield="' + sortField + '" href="#" style="text-decoration:underline;">';
|
|
||||||
}
|
|
||||||
|
|
||||||
html += text;
|
|
||||||
|
|
||||||
if (text && enableSorting) {
|
|
||||||
|
|
||||||
html += '</a>';
|
|
||||||
|
|
||||||
if (sortField == selectedSortField) {
|
|
||||||
|
|
||||||
if (sortDirection == "Descending") {
|
|
||||||
html += '<span style="font-weight:bold;margin-left:5px;vertical-align:top;font-size:12px;">↓</span>';
|
|
||||||
} else {
|
|
||||||
html += '<span style="font-weight:bold;margin-left:5px;vertical-align:top;font-size:12px;">↑</span>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
html += '</th>';
|
|
||||||
|
|
||||||
return html;
|
|
||||||
},
|
|
||||||
|
|
||||||
getSongTableHtml: function (items, options) {
|
|
||||||
|
|
||||||
options = options || {};
|
|
||||||
|
|
||||||
var html = '';
|
|
||||||
|
|
||||||
var cssClass = "detailTable";
|
|
||||||
|
|
||||||
html += '<div class="detailTableContainer"><table class="' + cssClass + '"><thead>';
|
|
||||||
|
|
||||||
html += '<tr>';
|
|
||||||
|
|
||||||
html += LibraryBrowser.getSongHeaderCellHtml('Track', '', options.enableColumnSorting, 'Name', options.sortBy, options.sortOrder);
|
|
||||||
|
|
||||||
if (options.showAlbum) {
|
|
||||||
html += LibraryBrowser.getSongHeaderCellHtml('Album', '', options.enableColumnSorting, 'Album,SortName', options.sortBy, options.sortOrder);
|
|
||||||
}
|
|
||||||
if (options.showArtist) {
|
|
||||||
html += LibraryBrowser.getSongHeaderCellHtml('Artist', 'tabletColumn', options.enableColumnSorting, 'Artist,Album,SortName', options.sortBy, options.sortOrder);
|
|
||||||
}
|
|
||||||
if (options.showAlbumArtist) {
|
|
||||||
html += LibraryBrowser.getSongHeaderCellHtml('Album Artist', 'tabletColumn', options.enableColumnSorting, 'AlbumArtist,Album,SortName', options.sortBy, options.sortOrder);
|
|
||||||
}
|
|
||||||
|
|
||||||
html += LibraryBrowser.getSongHeaderCellHtml('Runtime', 'tabletColumn', options.enableColumnSorting, 'Runtime,AlbumArtist,Album,SortName', options.sortBy, options.sortOrder);
|
|
||||||
html += LibraryBrowser.getSongHeaderCellHtml('Plays', 'desktopColumn', options.enableColumnSorting, 'PlayCount,AlbumArtist,Album,SortName', options.sortBy, options.sortOrder);
|
|
||||||
|
|
||||||
html += LibraryBrowser.getSongHeaderCellHtml('', '', options.enableColumnSorting);
|
|
||||||
|
|
||||||
html += '</tr></thead>';
|
|
||||||
|
|
||||||
html += '<tbody>';
|
|
||||||
|
|
||||||
for (var i = 0, length = items.length; i < length; i++) {
|
|
||||||
|
|
||||||
var item = items[i];
|
|
||||||
|
|
||||||
html += '<tr>';
|
|
||||||
|
|
||||||
html += '<td><a href="' + LibraryBrowser.getHref(item, "music") + '">' + (item.Name || "") + '</a></td>';
|
|
||||||
|
|
||||||
if (options.showAlbum) {
|
|
||||||
if (item.Album && item.ParentId) {
|
|
||||||
html += '<td><a href="itemdetails.html?id=' + item.ParentId + '">' + item.Album + '</a></td>';
|
|
||||||
} else {
|
|
||||||
html += '<td>' + (item.Album || '') + '</td>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.showArtist) {
|
|
||||||
|
|
||||||
if (item.Artists && item.Artists.length) {
|
|
||||||
|
|
||||||
var artistLinksHtml = LibraryBrowser.getArtistLinksHtml(item.Artists);
|
|
||||||
|
|
||||||
html += '<td class="tabletColumn">' + artistLinksHtml + '</td>';
|
|
||||||
} else {
|
|
||||||
html += '<td class="tabletColumn"></td>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.showAlbumArtist) {
|
|
||||||
|
|
||||||
if (item.AlbumArtist) {
|
|
||||||
|
|
||||||
html += '<td class="tabletColumn">' + LibraryBrowser.getArtistLinksHtml([item.AlbumArtist]) + '</td>';
|
|
||||||
|
|
||||||
} else {
|
|
||||||
html += '<td class="tabletColumn"></td>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var time = Dashboard.getDisplayTime(item.RunTimeTicks || 0);
|
|
||||||
|
|
||||||
html += '<td class="tabletColumn">' + time + '</td>';
|
|
||||||
|
|
||||||
html += '<td class="desktopColumn">' + (item.UserData ? item.UserData.PlayCount : 0) + '</td>';
|
|
||||||
|
|
||||||
html += '<td class="detailTableButtonsCell">';
|
|
||||||
html += '<button class="btnPlay" data-icon="ellipsis-v" type="button" data-iconpos="notext" onclick="LibraryBrowser.showPlayMenu(this, \'' + item.Id + '\', \'Audio\', false, \'Audio\', null, true);" data-inline="true" title="Play">Play</button>';
|
|
||||||
html += '</td>';
|
|
||||||
|
|
||||||
html += '</tr>';
|
|
||||||
}
|
|
||||||
|
|
||||||
html += '</tbody>';
|
|
||||||
html += '</table></div>';
|
|
||||||
|
|
||||||
return html;
|
|
||||||
},
|
|
||||||
|
|
||||||
getArtistLinksHtml: function (artists) {
|
getArtistLinksHtml: function (artists) {
|
||||||
|
|
||||||
var html = [];
|
var html = [];
|
||||||
|
|
|
@ -444,7 +444,7 @@
|
||||||
html += '<input type="radio" class="radioSelectPlayerTarget" name="radioSelectPlayerTarget" data-mirror="' + mirror + '" data-commands="' + target.supportedCommands.join(',') + '" data-mediatypes="' + target.playableMediaTypes.join(',') + '" data-playername="' + target.playerName + '" data-targetid="' + target.id + '" data-targetname="' + target.name + '" data-devicename="' + (target.deviceName || '') + '" id="' + id + '" value="' + target.id + '"' + checkedHtml + '>';
|
html += '<input type="radio" class="radioSelectPlayerTarget" name="radioSelectPlayerTarget" data-mirror="' + mirror + '" data-commands="' + target.supportedCommands.join(',') + '" data-mediatypes="' + target.playableMediaTypes.join(',') + '" data-playername="' + target.playerName + '" data-targetid="' + target.id + '" data-targetname="' + target.name + '" data-devicename="' + (target.deviceName || '') + '" id="' + id + '" value="' + target.id + '"' + checkedHtml + '>';
|
||||||
html += '<label for="' + id + '" style="font-weight:normal;">' + target.name;
|
html += '<label for="' + id + '" style="font-weight:normal;">' + target.name;
|
||||||
|
|
||||||
if (target.appName) {
|
if (target.appName && target.appName != target.name) {
|
||||||
html += '<br/><span>' + target.appName + '</span>';
|
html += '<br/><span>' + target.appName + '</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -433,8 +433,7 @@ var Dashboard = {
|
||||||
|
|
||||||
refreshSystemInfoFromServer: function () {
|
refreshSystemInfoFromServer: function () {
|
||||||
|
|
||||||
// TODO: Eventually remove the currentUserId check
|
if (Dashboard.getAccessToken()) {
|
||||||
if (Dashboard.getAccessToken() || Dashboard.getCurrentUserId()) {
|
|
||||||
ApiClient.getSystemInfo().done(function (info) {
|
ApiClient.getSystemInfo().done(function (info) {
|
||||||
|
|
||||||
Dashboard.updateSystemInfo(info);
|
Dashboard.updateSystemInfo(info);
|
||||||
|
|
|
@ -58,18 +58,15 @@
|
||||||
|
|
||||||
updateFilterControls(page);
|
updateFilterControls(page);
|
||||||
|
|
||||||
html += LibraryBrowser.getSongTableHtml(result.Items, {
|
html += LibraryBrowser.getListViewHtml({
|
||||||
showAlbum: true,
|
items: result.Items,
|
||||||
showArtist: true,
|
smallIcon: true,
|
||||||
showAlbumArtist: true,
|
showIndex: true
|
||||||
enableColumnSorting: true,
|
|
||||||
sortBy: query.SortBy,
|
|
||||||
sortOrder: query.SortOrder
|
|
||||||
});
|
});
|
||||||
|
|
||||||
html += pagingHtml;
|
html += pagingHtml;
|
||||||
|
|
||||||
$('#items', page).html(html).trigger('create');
|
$('#items', page).html(html).trigger('create').createCardMenus();
|
||||||
|
|
||||||
$('.btnNextPage', page).on('click', function () {
|
$('.btnNextPage', page).on('click', function () {
|
||||||
query.StartIndex += query.Limit;
|
query.StartIndex += query.Limit;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue