mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
update sort menu
This commit is contained in:
parent
9de658be0b
commit
22ef579fdb
6 changed files with 230 additions and 62 deletions
|
@ -331,7 +331,7 @@ define(['browser'], function (browser) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (canPlayTs && options.supportsCustomSeeking && !browser.tizen) {
|
if (canPlayTs && options.supportsCustomSeeking && !browser.tizen && !browser.web0s) {
|
||||||
profile.TranscodingProfiles.push({
|
profile.TranscodingProfiles.push({
|
||||||
Container: 'ts',
|
Container: 'ts',
|
||||||
Type: 'Video',
|
Type: 'Video',
|
||||||
|
|
|
@ -0,0 +1,136 @@
|
||||||
|
.mdl-radio {
|
||||||
|
position: relative;
|
||||||
|
line-height: 24px;
|
||||||
|
display: inline-block;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-radio.block {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin-top: .25em;
|
||||||
|
margin-bottom: .25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-radio {
|
||||||
|
padding-left: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-radio__button {
|
||||||
|
line-height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-radio .mdl-radio__button {
|
||||||
|
position: absolute;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
opacity: 0;
|
||||||
|
-ms-appearance: none;
|
||||||
|
-moz-appearance: none;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
appearance: none;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-radio__outer-circle {
|
||||||
|
position: absolute;
|
||||||
|
top: 4px;
|
||||||
|
left: 0;
|
||||||
|
display: inline-block;
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
margin: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
border: 2px solid rgba(0,0,0, 0.54);
|
||||||
|
border-radius: 50%;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-radio__button:checked + .mdl-radio__label + .mdl-radio__outer-circle {
|
||||||
|
border: 2px solid rgb(63,81,181);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-radio__outer-circle fieldset[disabled] .mdl-radio,
|
||||||
|
.mdl-radio.is-disabled .mdl-radio__outer-circle {
|
||||||
|
border: 2px solid rgba(0,0,0, 0.26);
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-radio__inner-circle {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
margin: 0;
|
||||||
|
top: 8px;
|
||||||
|
left: 4px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition-duration: 0.28s;
|
||||||
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
transition-property: -webkit-transform;
|
||||||
|
transition-property: transform;
|
||||||
|
transition-property: transform, -webkit-transform;
|
||||||
|
-webkit-transform: scale3d(0, 0, 0);
|
||||||
|
transform: scale3d(0, 0, 0);
|
||||||
|
border-radius: 50%;
|
||||||
|
background: rgb(63,81,181);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-radio__button:checked + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle {
|
||||||
|
-webkit-transform: scale3d(1, 1, 1);
|
||||||
|
transform: scale3d(1, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset[disabled] .mdl-radio .mdl-radio__inner-circle,
|
||||||
|
.mdl-radio.is-disabled .mdl-radio__inner-circle {
|
||||||
|
background: rgba(0,0,0, 0.26);
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-radio__button:focus + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle {
|
||||||
|
box-shadow: 0 0 0px 10px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-radio__label {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset[disabled] .mdl-radio .mdl-radio__label,
|
||||||
|
.mdl-radio.is-disabled .mdl-radio__label {
|
||||||
|
color: rgba(0,0,0, 0.26);
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-radio__ripple-container {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 2;
|
||||||
|
top: -9px;
|
||||||
|
left: -13px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 42px;
|
||||||
|
height: 42px;
|
||||||
|
border-radius: 50%;
|
||||||
|
cursor: pointer;
|
||||||
|
overflow: hidden;
|
||||||
|
-webkit-mask-image: -webkit-radial-gradient(circle, white, black);
|
||||||
|
}
|
||||||
|
|
||||||
|
.mdl-radio__ripple-container .mdl-ripple {
|
||||||
|
background: rgb(63,81,181);
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset[disabled] .mdl-radio .mdl-radio__ripple-container,
|
||||||
|
.mdl-radio.is-disabled .mdl-radio__ripple-container {
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset[disabled] .mdl-radio .mdl-radio__ripple-container .mdl-ripple,
|
||||||
|
.mdl-radio.is-disabled .mdl-radio__ripple-container .mdl-ripple {
|
||||||
|
background: transparent;
|
||||||
|
}
|
|
@ -31,9 +31,14 @@
|
||||||
labelElement.classList.add('mdl-js-ripple-effect');
|
labelElement.classList.add('mdl-js-ripple-effect');
|
||||||
|
|
||||||
var labelTextElement = labelElement.querySelector('span');
|
var labelTextElement = labelElement.querySelector('span');
|
||||||
labelElement.insertAdjacentHTML('beforeend', '<span class="mdl-checkbox__focus-helper"></span><span class="checkboxOutline"><span class="mdl-checkbox__tick-outline"></span></span>');
|
|
||||||
|
|
||||||
labelTextElement.classList.add('radioButtonLabel');
|
labelTextElement.classList.add('radioButtonLabel');
|
||||||
|
labelTextElement.classList.add('mdl-radio__label');
|
||||||
|
|
||||||
|
labelElement.insertAdjacentHTML('beforeend', '<span class="mdl-radio__outer-circle"></span><span class="mdl-radio__inner-circle"></span>');
|
||||||
|
|
||||||
|
// ripple container
|
||||||
|
//labelElement.insertAdjacentHTML('beforeend', '<span class="mdl-radio__ripple-container mdl-js-ripple-effect mdl-ripple--center" data-upgraded=",MaterialRipple"><span class="mdl-ripple is-animating" style="width: 120.794px; height: 120.794px; transform: translate(-50%, -50%) translate(21px, 21px);"></span></span>');
|
||||||
|
|
||||||
this.addEventListener('keydown', onKeyDown);
|
this.addEventListener('keydown', onKeyDown);
|
||||||
};
|
};
|
||||||
|
|
|
@ -2954,7 +2954,7 @@
|
||||||
|
|
||||||
showSortMenu: function (options) {
|
showSortMenu: function (options) {
|
||||||
|
|
||||||
require(['dialogHelper', 'paper-radio-button', 'paper-radio-group'], function (dialogHelper) {
|
require(['dialogHelper', 'emby-radio'], function (dialogHelper) {
|
||||||
|
|
||||||
var dlg = dialogHelper.createDialog({
|
var dlg = dialogHelper.createDialog({
|
||||||
removeOnClose: true,
|
removeOnClose: true,
|
||||||
|
@ -2975,22 +2975,29 @@
|
||||||
html += Globalize.translate('HeaderSortBy');
|
html += Globalize.translate('HeaderSortBy');
|
||||||
html += '</h2>';
|
html += '</h2>';
|
||||||
|
|
||||||
html += '<paper-radio-group class="groupSortBy" selected="' + (options.query.SortBy || '').replace(',', '_') + '">';
|
var i, length;
|
||||||
for (var i = 0, length = options.items.length; i < length; i++) {
|
var isChecked;
|
||||||
|
|
||||||
|
html += '<div>';
|
||||||
|
for (i = 0, length = options.items.length; i < length; i++) {
|
||||||
|
|
||||||
var option = options.items[i];
|
var option = options.items[i];
|
||||||
|
|
||||||
html += '<paper-radio-button class="menuSortBy" style="display:block;" data-id="' + option.id + '" name="' + option.id.replace(',', '_') + '">' + option.name + '</paper-radio-button>';
|
var radioValue = option.id.replace(',', '_');
|
||||||
|
isChecked = (options.query.SortBy || '').replace(',', '_') == radioValue ? ' checked' : '';
|
||||||
|
html += '<label class="block"><input type="radio" is="emby-radio" name="SortBy" data-id="' + option.id + '" value="' + radioValue + '" class="menuSortBy" ' + isChecked + ' /><span>' + option.name + '</span></label>';
|
||||||
}
|
}
|
||||||
html += '</paper-radio-group>';
|
html += '</div>';
|
||||||
|
|
||||||
html += '<h2 style="margin: 1em 0 .5em;">';
|
html += '<h2 style="margin: 1em 0 .5em;">';
|
||||||
html += Globalize.translate('HeaderSortOrder');
|
html += Globalize.translate('HeaderSortOrder');
|
||||||
html += '</h2>';
|
html += '</h2>';
|
||||||
html += '<paper-radio-group class="groupSortOrder" selected="' + (options.query.SortOrder || 'Ascending') + '">';
|
html += '<div>';
|
||||||
html += '<paper-radio-button name="Ascending" style="display:block;" class="menuSortOrder block">' + Globalize.translate('OptionAscending') + '</paper-radio-button>';
|
isChecked = options.query.SortOrder == 'Ascending' ? ' checked' : '';
|
||||||
html += '<paper-radio-button name="Descending" style="display:block;" class="menuSortOrder block">' + Globalize.translate('OptionDescending') + '</paper-radio-button>';
|
html += '<label class="block"><input type="radio" is="emby-radio" name="SortOrder" value="Ascending" class="menuSortOrder" ' + isChecked + ' /><span>' + Globalize.translate('OptionAscending') + '</span></label>';
|
||||||
html += '</paper-radio-group>';
|
isChecked = options.query.SortOrder == 'Descending' ? ' checked' : '';
|
||||||
|
html += '<label class="block"><input type="radio" is="emby-radio" name="SortOrder" value="Descending" class="menuSortOrder" ' + isChecked + ' /><span>' + Globalize.translate('OptionDescending') + '</span></label>';
|
||||||
|
html += '</div>';
|
||||||
html += '</div>';
|
html += '</div>';
|
||||||
|
|
||||||
dlg.innerHTML = html;
|
dlg.innerHTML = html;
|
||||||
|
@ -3002,31 +3009,43 @@
|
||||||
dialogHelper.open(dlg);
|
dialogHelper.open(dlg);
|
||||||
}, delay);
|
}, delay);
|
||||||
|
|
||||||
dlg.querySelector('.groupSortBy').addEventListener('iron-select', function () {
|
function onSortByChange() {
|
||||||
|
var newValue = this.value;
|
||||||
|
if (this.checked) {
|
||||||
|
var changed = options.query.SortBy != newValue;
|
||||||
|
|
||||||
var newValue = this.selected.replace('_', ',');
|
options.query.SortBy = newValue.replace('_', ',');
|
||||||
var changed = options.query.SortBy != newValue;
|
options.query.StartIndex = 0;
|
||||||
|
|
||||||
options.query.SortBy = newValue;
|
if (options.callback && changed) {
|
||||||
options.query.StartIndex = 0;
|
options.callback();
|
||||||
|
}
|
||||||
if (options.callback && changed) {
|
|
||||||
options.callback();
|
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
dlg.querySelector('.groupSortOrder').addEventListener('iron-select', function () {
|
var sortBys = dlg.querySelectorAll('.menuSortBy');
|
||||||
|
for (i = 0, length = sortBys.length; i < length; i++) {
|
||||||
|
sortBys[i].addEventListener('change', onSortByChange);
|
||||||
|
}
|
||||||
|
|
||||||
var newValue = this.selected;
|
function onSortOrderChange() {
|
||||||
var changed = options.query.SortOrder != newValue;
|
var newValue = this.value;
|
||||||
|
if (this.checked) {
|
||||||
|
var changed = options.query.SortOrder != newValue;
|
||||||
|
|
||||||
options.query.SortOrder = newValue;
|
options.query.SortOrder = newValue;
|
||||||
options.query.StartIndex = 0;
|
options.query.StartIndex = 0;
|
||||||
|
|
||||||
if (options.callback && changed) {
|
if (options.callback && changed) {
|
||||||
options.callback();
|
options.callback();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
|
var sortOrders = dlg.querySelectorAll('.menuSortOrder');
|
||||||
|
for (i = 0, length = sortOrders.length; i < length; i++) {
|
||||||
|
sortOrders[i].addEventListener('change', onSortOrderChange);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -1170,39 +1170,53 @@ var Dashboard = {
|
||||||
return caps;
|
return caps;
|
||||||
},
|
},
|
||||||
|
|
||||||
getDefaultImageQuality: function (imageType) {
|
|
||||||
|
|
||||||
var quality = 90;
|
|
||||||
var isBackdrop = imageType.toLowerCase() == 'backdrop';
|
|
||||||
|
|
||||||
if (isBackdrop) {
|
|
||||||
quality -= 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (browserInfo.mobile) {
|
|
||||||
quality -= 20;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (AppInfo.hasLowImageBandwidth) {
|
|
||||||
|
|
||||||
// The native app can handle a little bit more than safari
|
|
||||||
if (AppInfo.isNativeApp) {
|
|
||||||
|
|
||||||
quality -= 5;
|
|
||||||
} else {
|
|
||||||
quality -= 20;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return quality;
|
|
||||||
},
|
|
||||||
|
|
||||||
normalizeImageOptions: function (options) {
|
normalizeImageOptions: function (options) {
|
||||||
|
|
||||||
if (AppInfo.hasLowImageBandwidth) {
|
if (AppInfo.hasLowImageBandwidth) {
|
||||||
|
|
||||||
options.enableImageEnhancers = false;
|
options.enableImageEnhancers = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var setQuality;
|
||||||
|
if (options.maxWidth) {
|
||||||
|
setQuality = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.width) {
|
||||||
|
setQuality = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.maxHeight) {
|
||||||
|
setQuality = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.height) {
|
||||||
|
setQuality = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (setQuality) {
|
||||||
|
var quality = 90;
|
||||||
|
|
||||||
|
if ((options.type || '').toLowerCase() == 'backdrop') {
|
||||||
|
quality -= 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (browserInfo.mobile || browserInfo.tv) {
|
||||||
|
quality -= 30;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (AppInfo.hasLowImageBandwidth) {
|
||||||
|
|
||||||
|
// The native app can handle a little bit more than safari
|
||||||
|
if (AppInfo.isNativeApp) {
|
||||||
|
|
||||||
|
//quality -= 5;
|
||||||
|
} else {
|
||||||
|
quality -= 15;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
options.quality = quality;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
loadExternalPlayer: function () {
|
loadExternalPlayer: function () {
|
||||||
|
@ -1545,7 +1559,6 @@ var AppInfo = {};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
apiClient.getDefaultImageQuality = Dashboard.getDefaultImageQuality;
|
|
||||||
apiClient.normalizeImageOptions = Dashboard.normalizeImageOptions;
|
apiClient.normalizeImageOptions = Dashboard.normalizeImageOptions;
|
||||||
|
|
||||||
Events.off(apiClient, 'websocketmessage', Dashboard.onWebSocketMessageReceived);
|
Events.off(apiClient, 'websocketmessage', Dashboard.onWebSocketMessageReceived);
|
||||||
|
@ -1881,8 +1894,6 @@ var AppInfo = {};
|
||||||
|
|
||||||
define("paper-button", ["html!" + bowerPath + "/paper-button/paper-button.html"]);
|
define("paper-button", ["html!" + bowerPath + "/paper-button/paper-button.html"]);
|
||||||
define("paper-icon-button", ["html!" + bowerPath + "/paper-icon-button/paper-icon-button.html"]);
|
define("paper-icon-button", ["html!" + bowerPath + "/paper-icon-button/paper-icon-button.html"]);
|
||||||
define("paper-radio-group", ["html!" + bowerPath + "/paper-radio-group/paper-radio-group.html"]);
|
|
||||||
define("paper-radio-button", ['webcomponentsjs', "html!" + bowerPath + "/paper-radio-button/paper-radio-button.html"]);
|
|
||||||
define("paper-toggle-button", ['webcomponentsjs', "html!" + bowerPath + "/paper-toggle-button/paper-toggle-button.html"]);
|
define("paper-toggle-button", ['webcomponentsjs', "html!" + bowerPath + "/paper-toggle-button/paper-toggle-button.html"]);
|
||||||
|
|
||||||
define("paper-textarea", ['webcomponentsjs', "html!" + bowerPath + "/paper-input/paper-textarea.html"]);
|
define("paper-textarea", ['webcomponentsjs', "html!" + bowerPath + "/paper-input/paper-textarea.html"]);
|
||||||
|
@ -2179,6 +2190,7 @@ var AppInfo = {};
|
||||||
|
|
||||||
if (MainActivity.getChromeVersion() >= 48) {
|
if (MainActivity.getChromeVersion() >= 48) {
|
||||||
define("audiorenderer", ["scripts/htmlmediarenderer"]);
|
define("audiorenderer", ["scripts/htmlmediarenderer"]);
|
||||||
|
//window.VlcAudio = true;
|
||||||
//define("audiorenderer", ["cordova/android/vlcplayer"]);
|
//define("audiorenderer", ["cordova/android/vlcplayer"]);
|
||||||
} else {
|
} else {
|
||||||
window.VlcAudio = true;
|
window.VlcAudio = true;
|
||||||
|
|
|
@ -362,10 +362,6 @@ paper-dropdown-menu {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
paper-radio-group > * {
|
|
||||||
padding: .5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.dialogHeader {
|
div.dialogHeader {
|
||||||
padding: .35em .5em;
|
padding: .35em .5em;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue