mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update action sheet
This commit is contained in:
parent
a81a127cc6
commit
d1842ae4e3
24 changed files with 246 additions and 98 deletions
|
@ -1,12 +1,12 @@
|
||||||
(function (globalScope) {
|
(function (globalScope) {
|
||||||
|
|
||||||
globalScope.AjaxApi = {
|
globalScope.HttpClient = {
|
||||||
|
|
||||||
param: function (params) {
|
param: function (params) {
|
||||||
return jQuery.param(params);
|
return jQuery.param(params);
|
||||||
},
|
},
|
||||||
|
|
||||||
ajax: function (request) {
|
send: function (request) {
|
||||||
|
|
||||||
request.timeout = request.timeout || 30000;
|
request.timeout = request.timeout || 30000;
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
(function (globalScope, angular) {
|
(function (globalScope, angular) {
|
||||||
|
|
||||||
globalScope.AjaxApi = {
|
globalScope.HttpClient = {
|
||||||
|
|
||||||
param: function(params) {
|
param: function(params) {
|
||||||
return serialize(params);
|
return serialize(params);
|
||||||
},
|
},
|
||||||
|
|
||||||
ajax: function(options) {
|
send: function(options) {
|
||||||
var request = getAngularRequest(options),
|
var request = getAngularRequest(options),
|
||||||
defer = globalScope.DeferredBuilder.Deferred();
|
defer = globalScope.DeferredBuilder.Deferred();
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@
|
||||||
for (var key in jParams) {
|
for (var key in jParams) {
|
||||||
if (!paramMap[key]) {
|
if (!paramMap[key]) {
|
||||||
// This parameter hasn't been implemented in the paramMap object
|
// This parameter hasn't been implemented in the paramMap object
|
||||||
Logger.log('ERROR: ajax option property "' + key + '" not implemented by AjaxApi.');
|
Logger.log('ERROR: ajax option property "' + key + '" not implemented by HttpClient.');
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,7 @@
|
||||||
name = name.split('&').join('-');
|
name = name.split('&').join('-');
|
||||||
name = name.split('?').join('-');
|
name = name.split('?').join('-');
|
||||||
|
|
||||||
var val = AjaxApi.param({ name: name });
|
var val = HttpClient.param({ name: name });
|
||||||
return val.substring(val.indexOf('=') + 1).replace("'", '%27');
|
return val.substring(val.indexOf('=') + 1).replace("'", '%27');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@
|
||||||
|
|
||||||
if (self.enableAutomaticNetworking === false || request.type != "GET") {
|
if (self.enableAutomaticNetworking === false || request.type != "GET") {
|
||||||
logger.log('Requesting url without automatic networking: ' + request.url);
|
logger.log('Requesting url without automatic networking: ' + request.url);
|
||||||
return AjaxApi.ajax(request).fail(onRequestFail);
|
return HttpClient.send(request).fail(onRequestFail);
|
||||||
}
|
}
|
||||||
|
|
||||||
var deferred = DeferredBuilder.Deferred();
|
var deferred = DeferredBuilder.Deferred();
|
||||||
|
@ -218,7 +218,7 @@
|
||||||
|
|
||||||
var timeout = connectionMode == MediaBrowser.ConnectionMode.Local ? 5000 : 15000;
|
var timeout = connectionMode == MediaBrowser.ConnectionMode.Local ? 5000 : 15000;
|
||||||
|
|
||||||
AjaxApi.ajax({
|
HttpClient.send({
|
||||||
|
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: url + "/system/info/public",
|
url: url + "/system/info/public",
|
||||||
|
@ -282,7 +282,7 @@
|
||||||
|
|
||||||
request.timeout = 15000;
|
request.timeout = 15000;
|
||||||
|
|
||||||
AjaxApi.ajax(request).done(function (response) {
|
HttpClient.send(request).done(function (response) {
|
||||||
|
|
||||||
deferred.resolve(response, 0);
|
deferred.resolve(response, 0);
|
||||||
|
|
||||||
|
@ -356,7 +356,7 @@
|
||||||
url += name;
|
url += name;
|
||||||
|
|
||||||
if (params) {
|
if (params) {
|
||||||
url += "?" + AjaxApi.param(params);
|
url += "?" + HttpClient.param(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
return url;
|
return url;
|
||||||
|
|
|
@ -85,7 +85,7 @@
|
||||||
|
|
||||||
logger.log('tryConnect url: ' + url);
|
logger.log('tryConnect url: ' + url);
|
||||||
|
|
||||||
return AjaxApi.ajax({
|
return HttpClient.send({
|
||||||
|
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: url,
|
url: url,
|
||||||
|
@ -378,7 +378,7 @@
|
||||||
|
|
||||||
var url = "https://connect.mediabrowser.tv/service/user?id=" + userId;
|
var url = "https://connect.mediabrowser.tv/service/user?id=" + userId;
|
||||||
|
|
||||||
return AjaxApi.ajax({
|
return HttpClient.send({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: url,
|
url: url,
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
|
@ -403,7 +403,7 @@
|
||||||
|
|
||||||
url += "/Connect/Exchange?format=json&ConnectUserId=" + credentials.ConnectUserId;
|
url += "/Connect/Exchange?format=json&ConnectUserId=" + credentials.ConnectUserId;
|
||||||
|
|
||||||
return AjaxApi.ajax({
|
return HttpClient.send({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: url,
|
url: url,
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
|
@ -429,7 +429,7 @@
|
||||||
|
|
||||||
var url = MediaBrowser.ServerInfo.getServerAddress(server, connectionMode);
|
var url = MediaBrowser.ServerInfo.getServerAddress(server, connectionMode);
|
||||||
|
|
||||||
AjaxApi.ajax({
|
HttpClient.send({
|
||||||
|
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: url + "/system/info",
|
url: url + "/system/info",
|
||||||
|
@ -444,7 +444,7 @@
|
||||||
|
|
||||||
if (server.UserId) {
|
if (server.UserId) {
|
||||||
|
|
||||||
AjaxApi.ajax({
|
HttpClient.send({
|
||||||
|
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: url + "/users/" + server.UserId,
|
url: url + "/users/" + server.UserId,
|
||||||
|
@ -634,7 +634,7 @@
|
||||||
|
|
||||||
var url = "https://connect.mediabrowser.tv/service/servers?userId=" + credentials.ConnectUserId;
|
var url = "https://connect.mediabrowser.tv/service/servers?userId=" + credentials.ConnectUserId;
|
||||||
|
|
||||||
AjaxApi.ajax({
|
HttpClient.send({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: url,
|
url: url,
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
|
@ -1083,7 +1083,7 @@
|
||||||
|
|
||||||
var md5 = self.getConnectPasswordHash(password);
|
var md5 = self.getConnectPasswordHash(password);
|
||||||
|
|
||||||
AjaxApi.ajax({
|
HttpClient.send({
|
||||||
type: "POST",
|
type: "POST",
|
||||||
url: "https://connect.mediabrowser.tv/service/user/authenticate",
|
url: "https://connect.mediabrowser.tv/service/user/authenticate",
|
||||||
data: {
|
data: {
|
||||||
|
@ -1146,7 +1146,7 @@
|
||||||
|
|
||||||
var md5 = self.getConnectPasswordHash(password);
|
var md5 = self.getConnectPasswordHash(password);
|
||||||
|
|
||||||
AjaxApi.ajax({
|
HttpClient.send({
|
||||||
type: "POST",
|
type: "POST",
|
||||||
url: "https://connect.mediabrowser.tv/service/register",
|
url: "https://connect.mediabrowser.tv/service/register",
|
||||||
data: {
|
data: {
|
||||||
|
@ -1218,7 +1218,7 @@
|
||||||
|
|
||||||
var url = "https://connect.mediabrowser.tv/service/servers?userId=" + self.connectUserId() + "&status=Waiting";
|
var url = "https://connect.mediabrowser.tv/service/servers?userId=" + self.connectUserId() + "&status=Waiting";
|
||||||
|
|
||||||
return AjaxApi.ajax({
|
return HttpClient.send({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: url,
|
url: url,
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
|
@ -1265,7 +1265,7 @@
|
||||||
|
|
||||||
var url = "https://connect.mediabrowser.tv/service/serverAuthorizations?serverId=" + serverId + "&userId=" + self.connectUserId();
|
var url = "https://connect.mediabrowser.tv/service/serverAuthorizations?serverId=" + serverId + "&userId=" + self.connectUserId();
|
||||||
|
|
||||||
return AjaxApi.ajax({
|
return HttpClient.send({
|
||||||
type: "DELETE",
|
type: "DELETE",
|
||||||
url: url,
|
url: url,
|
||||||
headers: {
|
headers: {
|
||||||
|
@ -1300,7 +1300,7 @@
|
||||||
|
|
||||||
var url = "https://connect.mediabrowser.tv/service/serverAuthorizations?serverId=" + serverId + "&userId=" + self.connectUserId();
|
var url = "https://connect.mediabrowser.tv/service/serverAuthorizations?serverId=" + serverId + "&userId=" + self.connectUserId();
|
||||||
|
|
||||||
return AjaxApi.ajax({
|
return HttpClient.send({
|
||||||
type: "DELETE",
|
type: "DELETE",
|
||||||
url: url,
|
url: url,
|
||||||
headers: {
|
headers: {
|
||||||
|
@ -1327,7 +1327,7 @@
|
||||||
|
|
||||||
var url = "https://connect.mediabrowser.tv/service/ServerAuthorizations/accept?serverId=" + serverId + "&userId=" + self.connectUserId();
|
var url = "https://connect.mediabrowser.tv/service/ServerAuthorizations/accept?serverId=" + serverId + "&userId=" + self.connectUserId();
|
||||||
|
|
||||||
return AjaxApi.ajax({
|
return HttpClient.send({
|
||||||
type: "GET",
|
type: "GET",
|
||||||
url: url,
|
url: url,
|
||||||
headers: {
|
headers: {
|
||||||
|
|
|
@ -25,14 +25,14 @@
|
||||||
"web-component-tester": "*",
|
"web-component-tester": "*",
|
||||||
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
"webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/polymerelements/iron-meta",
|
"homepage": "https://github.com/PolymerElements/iron-meta",
|
||||||
"_release": "1.0.3",
|
"_release": "1.0.3",
|
||||||
"_resolution": {
|
"_resolution": {
|
||||||
"type": "version",
|
"type": "version",
|
||||||
"tag": "v1.0.3",
|
"tag": "v1.0.3",
|
||||||
"commit": "91529259262b0d8f33fed44bc3fd47aedf35cb04"
|
"commit": "91529259262b0d8f33fed44bc3fd47aedf35cb04"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/polymerelements/iron-meta.git",
|
"_source": "git://github.com/PolymerElements/iron-meta.git",
|
||||||
"_target": "^1.0.0",
|
"_target": "^1.0.0",
|
||||||
"_originalSource": "polymerelements/iron-meta"
|
"_originalSource": "PolymerElements/iron-meta"
|
||||||
}
|
}
|
|
@ -34,7 +34,7 @@
|
||||||
"tag": "v1.0.7",
|
"tag": "v1.0.7",
|
||||||
"commit": "c65f5ce6b898bb756fca35cedaa53c3e8011abeb"
|
"commit": "c65f5ce6b898bb756fca35cedaa53c3e8011abeb"
|
||||||
},
|
},
|
||||||
"_source": "git://github.com/polymerelements/paper-styles.git",
|
"_source": "git://github.com/PolymerElements/paper-styles.git",
|
||||||
"_target": "^1.0.0",
|
"_target": "^1.0.0",
|
||||||
"_originalSource": "polymerelements/paper-styles"
|
"_originalSource": "PolymerElements/paper-styles"
|
||||||
}
|
}
|
|
@ -37,8 +37,8 @@
|
||||||
return id.toString();
|
return id.toString();
|
||||||
}
|
}
|
||||||
function initAjax() {
|
function initAjax() {
|
||||||
baseAjaxMethod = AjaxApi.ajax;
|
baseAjaxMethod = HttpClient.send;
|
||||||
AjaxApi.ajax = sendRequest;
|
HttpClient.send = sendRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendRequest(request) {
|
function sendRequest(request) {
|
||||||
|
|
|
@ -1,28 +1,4 @@
|
||||||
@font-face {
|
/* cyrillic-ext */
|
||||||
font-family: 'Material Icons';
|
|
||||||
font-style: normal;
|
|
||||||
font-weight: 400;
|
|
||||||
src: url(../thirdparty/materialicons/MaterialIcons-Regular.eot); /* For IE6-8 */
|
|
||||||
src: local('Material Icons'), local('MaterialIcons-Regular'), url(../thirdparty/materialicons/MaterialIcons-Regular.woff2) format('woff2'), url(../thirdparty/materialicons/MaterialIcons-Regular.woff) format('woff'), url(../thirdparty/materialicons/MaterialIcons-Regular.ttf) format('truetype');
|
|
||||||
}
|
|
||||||
|
|
||||||
.material-icons {
|
|
||||||
font-family: 'Material Icons';
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
display: inline-block;
|
|
||||||
text-transform: none;
|
|
||||||
/* Support for all WebKit browsers. */
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
/* Support for Safari and Chrome. */
|
|
||||||
text-rendering: optimizeLegibility;
|
|
||||||
/* Support for Firefox. */
|
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
/* Support for IE. */
|
|
||||||
font-feature-settings: 'liga';
|
|
||||||
}
|
|
||||||
|
|
||||||
/* cyrillic-ext */
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Roboto';
|
font-family: 'Roboto';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
|
|
|
@ -66,11 +66,12 @@
|
||||||
return o.ironIcon;
|
return o.ironIcon;
|
||||||
}).length;
|
}).length;
|
||||||
|
|
||||||
|
html += '<paper-menu>';
|
||||||
for (var i = 0, length = options.items.length; i < length; i++) {
|
for (var i = 0, length = options.items.length; i < length; i++) {
|
||||||
|
|
||||||
var option = options.items[i];
|
var option = options.items[i];
|
||||||
|
|
||||||
html += '<paper-button class="block menuButton ripple btnOption" data-id="' + option.id + '" style="margin:0;">';
|
html += '<paper-menu-item class="actionSheetMenuItem" data-id="' + option.id + '" style="display:block;">';
|
||||||
|
|
||||||
if (option.ironIcon) {
|
if (option.ironIcon) {
|
||||||
html += '<iron-icon icon="' + option.ironIcon + '"></iron-icon>';
|
html += '<iron-icon icon="' + option.ironIcon + '"></iron-icon>';
|
||||||
|
@ -79,8 +80,9 @@
|
||||||
html += '<iron-icon></iron-icon>';
|
html += '<iron-icon></iron-icon>';
|
||||||
}
|
}
|
||||||
html += '<span>' + option.name + '</span>';
|
html += '<span>' + option.name + '</span>';
|
||||||
html += '</paper-button>';
|
html += '</paper-menu-item>';
|
||||||
}
|
}
|
||||||
|
html += '</paper-menu>';
|
||||||
|
|
||||||
if (isScrollable) {
|
if (isScrollable) {
|
||||||
html += '</paper-dialog-scrollable>';
|
html += '</paper-dialog-scrollable>';
|
||||||
|
@ -106,7 +108,7 @@
|
||||||
$(this).remove();
|
$(this).remove();
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.btnOption', dlg).on('click', function () {
|
$('.actionSheetMenuItem', dlg).on('click', function () {
|
||||||
|
|
||||||
var selectedId = this.getAttribute('data-id');
|
var selectedId = this.getAttribute('data-id');
|
||||||
|
|
||||||
|
|
|
@ -122,10 +122,6 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($.browser.android && AppInfo.isNativeApp) {
|
|
||||||
return screen.availWidth >= 1200;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($.browser.mobile) {
|
if ($.browser.mobile) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,6 +108,8 @@
|
||||||
|
|
||||||
$.when(promises).done(function () {
|
$.when(promises).done(function () {
|
||||||
Dashboard.hideLoadingMsg();
|
Dashboard.hideLoadingMsg();
|
||||||
|
|
||||||
|
LibraryBrowser.setLastRefreshed(page);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,7 +119,9 @@
|
||||||
|
|
||||||
var userId = Dashboard.getCurrentUserId();
|
var userId = Dashboard.getCurrentUserId();
|
||||||
|
|
||||||
|
if (LibraryBrowser.needsRefresh(page)) {
|
||||||
loadSections(page, userId);
|
loadSections(page, userId);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
})(jQuery, document);
|
})(jQuery, document);
|
|
@ -3,7 +3,7 @@
|
||||||
var pageSizeKey = 'pagesize_v4';
|
var pageSizeKey = 'pagesize_v4';
|
||||||
|
|
||||||
return {
|
return {
|
||||||
getDefaultPageSize: function(key, defaultValue) {
|
getDefaultPageSize: function (key, defaultValue) {
|
||||||
|
|
||||||
var saved = appStorage.getItem(key || pageSizeKey);
|
var saved = appStorage.getItem(key || pageSizeKey);
|
||||||
|
|
||||||
|
@ -21,13 +21,13 @@
|
||||||
return isChrome ? 200 : 100;
|
return isChrome ? 200 : 100;
|
||||||
},
|
},
|
||||||
|
|
||||||
getDefaultItemsView: function(view, mobileView) {
|
getDefaultItemsView: function (view, mobileView) {
|
||||||
|
|
||||||
return $.browser.mobile ? mobileView : view;
|
return $.browser.mobile ? mobileView : view;
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
loadSavedQueryValues: function(key, query) {
|
loadSavedQueryValues: function (key, query) {
|
||||||
|
|
||||||
var values = appStorage.getItem(key + '_' + Dashboard.getCurrentUserId());
|
var values = appStorage.getItem(key + '_' + Dashboard.getCurrentUserId());
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
return query;
|
return query;
|
||||||
},
|
},
|
||||||
|
|
||||||
saveQueryValues: function(key, query) {
|
saveQueryValues: function (key, query) {
|
||||||
|
|
||||||
var values = {};
|
var values = {};
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
saveViewSetting: function(key, value) {
|
saveViewSetting: function (key, value) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
appStorage.setItem(key + '_' + Dashboard.getCurrentUserId() + '_view', value);
|
appStorage.setItem(key + '_' + Dashboard.getCurrentUserId() + '_view', value);
|
||||||
|
@ -68,7 +68,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getSavedViewSetting: function(key) {
|
getSavedViewSetting: function (key) {
|
||||||
|
|
||||||
var deferred = $.Deferred();
|
var deferred = $.Deferred();
|
||||||
var val = appStorage.getItem(key + '_' + Dashboard.getCurrentUserId() + '_view');
|
var val = appStorage.getItem(key + '_' + Dashboard.getCurrentUserId() + '_view');
|
||||||
|
@ -77,25 +77,39 @@
|
||||||
return deferred.promise();
|
return deferred.promise();
|
||||||
},
|
},
|
||||||
|
|
||||||
needsRefresh: function(elem) {
|
needsRefresh: function (elem) {
|
||||||
|
|
||||||
var last = elem.getAttribute('data-lastrefresh') || '0';
|
var last = parseInt(elem.getAttribute('data-lastrefresh') || '0');
|
||||||
|
|
||||||
|
if (!last) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (NavHelper.isBack()) {
|
if (NavHelper.isBack()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var now = new Date().getTime();
|
var now = new Date().getTime();
|
||||||
if ((now - parseInt(last)) < 90000) {
|
var cacheDuration = 300000;
|
||||||
|
if (!AppInfo.isNativeApp && ($.browser.ipad || $.browser.iphone || $.browser.android)) {
|
||||||
|
cacheDuration = 10000;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (!$.browser.mobile) {
|
||||||
|
cacheDuration = 60000;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((now - last) < cacheDuration) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
|
||||||
setLastRefreshed: function(elem) {
|
setLastRefreshed: function (elem) {
|
||||||
|
|
||||||
elem.setAttribute('data-lastrefresh', new Date().getTime());
|
elem.setAttribute('data-lastrefresh', new Date().getTime());
|
||||||
|
elem.classList.add('hasrefreshtime');
|
||||||
},
|
},
|
||||||
|
|
||||||
getDateParamValue: function (date) {
|
getDateParamValue: function (date) {
|
||||||
|
@ -535,13 +549,6 @@
|
||||||
|
|
||||||
var href = LibraryBrowser.getHrefInternal(item, context);
|
var href = LibraryBrowser.getHrefInternal(item, context);
|
||||||
|
|
||||||
if (context) {
|
|
||||||
if (context != 'livetv') {
|
|
||||||
href += href.indexOf('?') == -1 ? "?context=" : "&context=";
|
|
||||||
href += context;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (context != 'livetv') {
|
if (context != 'livetv') {
|
||||||
if (topParentId == null && context != 'playlists') {
|
if (topParentId == null && context != 'playlists') {
|
||||||
topParentId = LibraryMenu.getTopParentId();
|
topParentId = LibraryMenu.getTopParentId();
|
||||||
|
@ -566,6 +573,8 @@
|
||||||
return item.url;
|
return item.url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var contextSuffix = context ? ('&context=' + context) : '';
|
||||||
|
|
||||||
// Handle search hints
|
// Handle search hints
|
||||||
var id = item.Id || item.ItemId;
|
var id = item.Id || item.ItemId;
|
||||||
|
|
||||||
|
@ -632,48 +641,48 @@
|
||||||
return "livetvprogram.html?id=" + id;
|
return "livetvprogram.html?id=" + id;
|
||||||
}
|
}
|
||||||
if (item.Type == "Series") {
|
if (item.Type == "Series") {
|
||||||
return "itemdetails.html?id=" + id;
|
return "itemdetails.html?id=" + id + contextSuffix;
|
||||||
}
|
}
|
||||||
if (item.Type == "Season") {
|
if (item.Type == "Season") {
|
||||||
return "itemdetails.html?id=" + id;
|
return "itemdetails.html?id=" + id + contextSuffix;
|
||||||
}
|
}
|
||||||
if (item.Type == "BoxSet") {
|
if (item.Type == "BoxSet") {
|
||||||
return "itemdetails.html?id=" + id;
|
return "itemdetails.html?id=" + id + contextSuffix;
|
||||||
}
|
}
|
||||||
if (item.Type == "MusicAlbum") {
|
if (item.Type == "MusicAlbum") {
|
||||||
return "itemdetails.html?id=" + id;
|
return "itemdetails.html?id=" + id + contextSuffix;
|
||||||
}
|
}
|
||||||
if (item.Type == "GameSystem") {
|
if (item.Type == "GameSystem") {
|
||||||
return "itemdetails.html?id=" + id;
|
return "itemdetails.html?id=" + id + contextSuffix;
|
||||||
}
|
}
|
||||||
if (item.Type == "Genre") {
|
if (item.Type == "Genre") {
|
||||||
return "itembynamedetails.html?id=" + id;
|
return "itembynamedetails.html?id=" + id + contextSuffix;
|
||||||
}
|
}
|
||||||
if (item.Type == "MusicGenre") {
|
if (item.Type == "MusicGenre") {
|
||||||
return "itembynamedetails.html?id=" + id;
|
return "itembynamedetails.html?id=" + id + contextSuffix;
|
||||||
}
|
}
|
||||||
if (item.Type == "GameGenre") {
|
if (item.Type == "GameGenre") {
|
||||||
return "itembynamedetails.html?id=" + id;
|
return "itembynamedetails.html?id=" + id + contextSuffix;
|
||||||
}
|
}
|
||||||
if (item.Type == "Studio") {
|
if (item.Type == "Studio") {
|
||||||
return "itembynamedetails.html?id=" + id;
|
return "itembynamedetails.html?id=" + id + contextSuffix;
|
||||||
}
|
}
|
||||||
if (item.Type == "Person") {
|
if (item.Type == "Person") {
|
||||||
return "itembynamedetails.html?id=" + id;
|
return "itembynamedetails.html?id=" + id + contextSuffix;
|
||||||
}
|
}
|
||||||
if (item.Type == "Recording") {
|
if (item.Type == "Recording") {
|
||||||
return "livetvrecording.html?id=" + id;
|
return "livetvrecording.html?id=" + id + contextSuffix;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.Type == "MusicArtist") {
|
if (item.Type == "MusicArtist") {
|
||||||
return "itembynamedetails.html?id=" + id;
|
return "itembynamedetails.html?id=" + id + contextSuffix;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.IsFolder) {
|
if (item.IsFolder) {
|
||||||
return id ? "itemlist.html?parentId=" + id : "#";
|
return id ? "itemlist.html?parentId=" + id : "#";
|
||||||
}
|
}
|
||||||
|
|
||||||
return "itemdetails.html?id=" + id;
|
return "itemdetails.html?id=" + id + contextSuffix;
|
||||||
},
|
},
|
||||||
|
|
||||||
getImageUrl: function (item, type, index, options) {
|
getImageUrl: function (item, type, index, options) {
|
||||||
|
|
|
@ -115,7 +115,7 @@
|
||||||
|
|
||||||
var resumePosition = (item.UserData || {}).PlaybackPositionTicks || 0;
|
var resumePosition = (item.UserData || {}).PlaybackPositionTicks || 0;
|
||||||
|
|
||||||
html += '<paper-icon-button icon="play-circle-filled" class="btnPlayItem" data-itemid="' + item.Id + '" data-itemtype="' + item.Type + '" data-isfolder="' + item.IsFolder + '" data-mediatype="' + item.MediaType + '" data-resumeposition="' + resumePosition + '"></paper-icon-button>';
|
html += '<paper-icon-button icon="play-circle-outline" class="btnPlayItem" data-itemid="' + item.Id + '" data-itemtype="' + item.Type + '" data-isfolder="' + item.IsFolder + '" data-mediatype="' + item.MediaType + '" data-resumeposition="' + resumePosition + '"></paper-icon-button>';
|
||||||
buttonCount++;
|
buttonCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1228,6 +1228,10 @@
|
||||||
$(apiClient).off('websocketmessage', onWebSocketMessage).on('websocketmessage', onWebSocketMessage);
|
$(apiClient).off('websocketmessage', onWebSocketMessage).on('websocketmessage', onWebSocketMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function clearRefreshTimes() {
|
||||||
|
$('.hasrefreshtime').removeClass('hasrefreshtime').removeAttr('data-lastrefresh');
|
||||||
|
}
|
||||||
|
|
||||||
Dashboard.ready(function () {
|
Dashboard.ready(function () {
|
||||||
|
|
||||||
if (window.ApiClient) {
|
if (window.ApiClient) {
|
||||||
|
@ -1237,6 +1241,9 @@
|
||||||
$(ConnectionManager).on('apiclientcreated', function (e, apiClient) {
|
$(ConnectionManager).on('apiclientcreated', function (e, apiClient) {
|
||||||
initializeApiClient(apiClient);
|
initializeApiClient(apiClient);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Events.on(ConnectionManager, 'localusersignedin', clearRefreshTimes);
|
||||||
|
Events.on(ConnectionManager, 'localusersignedout', clearRefreshTimes);
|
||||||
});
|
});
|
||||||
|
|
||||||
})(jQuery, document, window);
|
})(jQuery, document, window);
|
|
@ -121,6 +121,7 @@
|
||||||
if (LibraryBrowser.needsRefresh(page)) {
|
if (LibraryBrowser.needsRefresh(page)) {
|
||||||
query.UserId = Dashboard.getCurrentUserId();
|
query.UserId = Dashboard.getCurrentUserId();
|
||||||
LibraryBrowser.loadSavedQueryValues('movies', query);
|
LibraryBrowser.loadSavedQueryValues('movies', query);
|
||||||
|
query.Limit = query.Limit || LibraryBrowser.getDefaultPageSize();
|
||||||
reloadItems(page);
|
reloadItems(page);
|
||||||
updateFilterControls(this);
|
updateFilterControls(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,6 +89,7 @@
|
||||||
|
|
||||||
renderRecordings($('#latestRecordings', page), result.Items);
|
renderRecordings($('#latestRecordings', page), result.Items);
|
||||||
|
|
||||||
|
LibraryBrowser.setLastRefreshed(page);
|
||||||
});
|
});
|
||||||
|
|
||||||
ApiClient.getLiveTvRecordingGroups({
|
ApiClient.getLiveTvRecordingGroups({
|
||||||
|
@ -106,7 +107,9 @@
|
||||||
|
|
||||||
var page = this;
|
var page = this;
|
||||||
|
|
||||||
|
if (LibraryBrowser.needsRefresh(page)) {
|
||||||
reload(page);
|
reload(page);
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -97,6 +97,7 @@
|
||||||
|
|
||||||
renderTimers(page, result.Items);
|
renderTimers(page, result.Items);
|
||||||
|
|
||||||
|
LibraryBrowser.setLastRefreshed(page);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +121,9 @@
|
||||||
|
|
||||||
var page = this;
|
var page = this;
|
||||||
|
|
||||||
|
if (LibraryBrowser.needsRefresh(page)) {
|
||||||
reload(page);
|
reload(page);
|
||||||
|
}
|
||||||
|
|
||||||
}).on('pageinit', "#liveTvSeriesTimersPage", function () {
|
}).on('pageinit', "#liveTvSeriesTimersPage", function () {
|
||||||
|
|
||||||
|
|
|
@ -104,6 +104,7 @@
|
||||||
|
|
||||||
renderTimers(page, result.Items);
|
renderTimers(page, result.Items);
|
||||||
|
|
||||||
|
LibraryBrowser.setLastRefreshed(page);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +112,9 @@
|
||||||
|
|
||||||
var page = this;
|
var page = this;
|
||||||
|
|
||||||
|
if (LibraryBrowser.needsRefresh(page)) {
|
||||||
reload(page);
|
reload(page);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
})(jQuery, document);
|
})(jQuery, document);
|
|
@ -1844,6 +1844,7 @@ var AppInfo = {};
|
||||||
}
|
}
|
||||||
else if ($.browser.safari) {
|
else if ($.browser.safari) {
|
||||||
Dashboard.importCss('themes/ios.css');
|
Dashboard.importCss('themes/ios.css');
|
||||||
|
Dashboard.importCss('thirdparty/materialicons/style.css');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,3 +17,6 @@
|
||||||
.ui-page-theme-b .visualCardBox {
|
.ui-page-theme-b .visualCardBox {
|
||||||
background: rgba(56,56,56,.85);
|
background: rgba(56,56,56,.85);
|
||||||
}
|
}
|
||||||
|
.libraryViewNav a{
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
1
dashboard-ui/thirdparty/emby-icons.html
vendored
1
dashboard-ui/thirdparty/emby-icons.html
vendored
|
@ -110,6 +110,7 @@ See [iron-iconset](#iron-iconset) and [iron-iconset-svg](#iron-iconset-svg) for
|
||||||
<g id="games"><path d="M15 7.5V2H9v5.5l3 3 3-3zM7.5 9H2v6h5.5l3-3-3-3zM9 16.5V22h6v-5.5l-3-3-3 3zM16.5 9l-3 3 3 3H22V9h-5.5z" /></g>
|
<g id="games"><path d="M15 7.5V2H9v5.5l3 3 3-3zM7.5 9H2v6h5.5l3-3-3-3zM9 16.5V22h6v-5.5l-3-3-3 3zM16.5 9l-3 3 3 3H22V9h-5.5z" /></g>
|
||||||
<g id="play-circle-filled"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 14.5v-9l6 4.5-6 4.5z" /></g>
|
<g id="play-circle-filled"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 14.5v-9l6 4.5-6 4.5z" /></g>
|
||||||
<g id="cloud"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z" /></g>
|
<g id="cloud"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z" /></g>
|
||||||
|
<g id="play-circle-outline"><path d="M10 16.5l6-4.5-6-4.5v9zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z" /></g>
|
||||||
</defs>
|
</defs>
|
||||||
</svg>
|
</svg>
|
||||||
</iron-iconset-svg>
|
</iron-iconset-svg>
|
||||||
|
|
23
dashboard-ui/thirdparty/materialicons/style.css
vendored
Normal file
23
dashboard-ui/thirdparty/materialicons/style.css
vendored
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Material Icons';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
src: url(MaterialIcons-Regular.eot); /* For IE6-8 */
|
||||||
|
src: local('Material Icons'), local('MaterialIcons-Regular'), url(MaterialIcons-Regular.woff2) format('woff2'), url(MaterialIcons-Regular.woff) format('woff'), url(MaterialIcons-Regular.ttf) format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
.material-icons {
|
||||||
|
font-family: 'Material Icons';
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
display: inline-block;
|
||||||
|
text-transform: none;
|
||||||
|
/* Support for all WebKit browsers. */
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
/* Support for Safari and Chrome. */
|
||||||
|
text-rendering: optimizeLegibility;
|
||||||
|
/* Support for Firefox. */
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
/* Support for IE. */
|
||||||
|
font-feature-settings: 'liga';
|
||||||
|
}
|
37
dashboard-ui/thirdparty/paper-button-style.css
vendored
37
dashboard-ui/thirdparty/paper-button-style.css
vendored
|
@ -314,3 +314,40 @@ paper-fab.square {
|
||||||
paper-slider {
|
paper-slider {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
paper-menu-item {
|
||||||
|
padding: .35em .5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
paper-menu-item iron-icon {
|
||||||
|
margin-right: 1.5em;
|
||||||
|
}
|
||||||
|
.actionSheetMenuItem {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.actionSheetMenuItem:hover {
|
||||||
|
background: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scrollablePaperTabs paper-icon-button {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*.scrollablePaperTabs #tabsContainer {
|
||||||
|
text-align: center;
|
||||||
|
overflow-x: scroll;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
overflow-y: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
-ms-overflow-style: none;
|
||||||
|
overflow: -moz-scrollbars-none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scrollablePaperTabs #tabsContainer::-webkit-scrollbar {
|
||||||
|
height: 0 !important;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scrollablePaperTabs #tabsContent {
|
||||||
|
position: static !important;
|
||||||
|
}*/
|
||||||
|
|
|
@ -16,4 +16,5 @@
|
||||||
<link rel="import" href="bower_components/paper-drawer-panel/paper-drawer-panel.html">
|
<link rel="import" href="bower_components/paper-drawer-panel/paper-drawer-panel.html">
|
||||||
<link rel="import" href="bower_components/paper-tabs/paper-tabs.html">
|
<link rel="import" href="bower_components/paper-tabs/paper-tabs.html">
|
||||||
<link rel="import" href="bower_components/paper-slider/paper-slider.html">
|
<link rel="import" href="bower_components/paper-slider/paper-slider.html">
|
||||||
|
<link rel="import" href="bower_components/paper-menu/paper-menu.html">
|
||||||
<link rel="import" href="thirdparty/emby-icons.html">
|
<link rel="import" href="thirdparty/emby-icons.html">
|
|
@ -12057,6 +12057,8 @@ is separate from validation, and `allowed-pattern` does not affect how the input
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</head><body><div hidden="" by-vulcanize=""><dom-module id="paper-material" assetpath="bower_components/paper-material/">
|
</head><body><div hidden="" by-vulcanize=""><dom-module id="paper-material" assetpath="bower_components/paper-material/">
|
||||||
<style>
|
<style>
|
||||||
:host {
|
:host {
|
||||||
|
@ -17038,6 +17040,81 @@ paper-ripple {
|
||||||
* @event change
|
* @event change
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<dom-module id="paper-menu" assetpath="bower_components/paper-menu/">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
:host {
|
||||||
|
display: block;
|
||||||
|
padding: 8px 0;
|
||||||
|
|
||||||
|
background: var(--paper-menu-background-color, --primary-background-color);
|
||||||
|
color: var(--paper-menu-color, --primary-text-color);
|
||||||
|
|
||||||
|
@apply(--paper-menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* need a wrapper element to make this higher specificity than the :host rule in paper-item */
|
||||||
|
.content > ::content > .iron-selected {
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
@apply(--paper-menu-selected-item);
|
||||||
|
}
|
||||||
|
|
||||||
|
.content > ::content > [disabled] {
|
||||||
|
color: var(--paper-menu-disabled-color, --disabled-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.content > ::content > *:focus {
|
||||||
|
position: relative;
|
||||||
|
outline: 0;
|
||||||
|
|
||||||
|
@apply(--paper-menu-colored-focused-item);
|
||||||
|
}
|
||||||
|
|
||||||
|
.content > ::content > *:focus:after {
|
||||||
|
@apply(--layout-fit);
|
||||||
|
background: currentColor;
|
||||||
|
/* FIXME move to paper-styles for next widget */
|
||||||
|
opacity: 0.12;
|
||||||
|
content: '';
|
||||||
|
|
||||||
|
@apply(--paper-menu-colored-focused-item-after);
|
||||||
|
}
|
||||||
|
|
||||||
|
.content > ::content > *[colored]:focus:after {
|
||||||
|
opacity: 0.26;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
<content></content>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</dom-module>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
(function() {
|
||||||
|
|
||||||
|
Polymer({
|
||||||
|
|
||||||
|
is: 'paper-menu',
|
||||||
|
|
||||||
|
behaviors: [
|
||||||
|
Polymer.IronMenuBehavior
|
||||||
|
]
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<iron-iconset-svg name="icons" size="24">
|
<iron-iconset-svg name="icons" size="24">
|
||||||
<svg>
|
<svg>
|
||||||
|
@ -17116,6 +17193,7 @@ paper-ripple {
|
||||||
<g id="games"><path d="M15 7.5V2H9v5.5l3 3 3-3zM7.5 9H2v6h5.5l3-3-3-3zM9 16.5V22h6v-5.5l-3-3-3 3zM16.5 9l-3 3 3 3H22V9h-5.5z"></path></g>
|
<g id="games"><path d="M15 7.5V2H9v5.5l3 3 3-3zM7.5 9H2v6h5.5l3-3-3-3zM9 16.5V22h6v-5.5l-3-3-3 3zM16.5 9l-3 3 3 3H22V9h-5.5z"></path></g>
|
||||||
<g id="play-circle-filled"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 14.5v-9l6 4.5-6 4.5z"></path></g>
|
<g id="play-circle-filled"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 14.5v-9l6 4.5-6 4.5z"></path></g>
|
||||||
<g id="cloud"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z"></path></g>
|
<g id="cloud"><path d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96z"></path></g>
|
||||||
|
<g id="play-circle-outline"><path d="M10 16.5l6-4.5-6-4.5v9zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"></path></g>
|
||||||
</defs>
|
</defs>
|
||||||
</svg>
|
</svg>
|
||||||
</iron-iconset-svg>
|
</iron-iconset-svg>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue