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

chromecast updates

This commit is contained in:
Luke Pulverenti 2014-08-19 18:28:35 -04:00
parent 2e25b47fb2
commit f6995379a2
5 changed files with 41 additions and 161 deletions

View file

@ -211,6 +211,11 @@
$(this).trigger('connect');
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) {
var player = this;
@ -299,19 +320,18 @@
serverAddress: ApiClient.serverAddress()
});
// If the user is on localhost we need a different address to send to the receiver
var address = message.serverAddress.toLowerCase();
if (address.indexOf('localhost') != -1 || address.indexOf('127.0.0') != -1) {
getEndpointInfo().done(function (endpoint) {
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);
}
});
};
CastPlayer.prototype.sendMessageInternal = function (message) {
@ -375,18 +395,8 @@
return;
}
switch (this.castPlayerState) {
case PLAYER_STATE.LOADED:
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;
}
this.currentMediaSession.play(null, this.mediaCommandSuccessCallback.bind(this, "playing started for " + this.currentMediaSession.sessionId), this.errorHandler);
//this.currentMediaSession.addUpdateListener(this.mediaStatusUpdateHandler);
};
/**
@ -398,12 +408,7 @@
return;
}
if (this.castPlayerState == PLAYER_STATE.PLAYING) {
this.castPlayerState = PLAYER_STATE.PAUSED;
this.currentMediaSession.pause(null,
this.mediaCommandSuccessCallback.bind(this, "paused " + this.currentMediaSession.sessionId),
this.errorHandler);
}
this.currentMediaSession.pause(null, this.mediaCommandSuccessCallback.bind(this, "paused " + this.currentMediaSession.sessionId), this.errorHandler);
};
/**
@ -719,8 +724,7 @@
"Mute",
"Unmute",
"ToggleMute",
"SetVolume",
"DisplayContent"]
"SetVolume"]
};
};

View file

@ -182,126 +182,6 @@
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;">&darr;</span>';
} else {
html += '<span style="font-weight:bold;margin-left:5px;vertical-align:top;font-size:12px;">&uarr;</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) {
var html = [];

View file

@ -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 += '<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>';
}

View file

@ -433,8 +433,7 @@ var Dashboard = {
refreshSystemInfoFromServer: function () {
// TODO: Eventually remove the currentUserId check
if (Dashboard.getAccessToken() || Dashboard.getCurrentUserId()) {
if (Dashboard.getAccessToken()) {
ApiClient.getSystemInfo().done(function (info) {
Dashboard.updateSystemInfo(info);

View file

@ -58,18 +58,15 @@
updateFilterControls(page);
html += LibraryBrowser.getSongTableHtml(result.Items, {
showAlbum: true,
showArtist: true,
showAlbumArtist: true,
enableColumnSorting: true,
sortBy: query.SortBy,
sortOrder: query.SortOrder
html += LibraryBrowser.getListViewHtml({
items: result.Items,
smallIcon: true,
showIndex: true
});
html += pagingHtml;
$('#items', page).html(html).trigger('create');
$('#items', page).html(html).trigger('create').createCardMenus();
$('.btnNextPage', page).on('click', function () {
query.StartIndex += query.Limit;