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

Merge branch 'master' into playlist-access-checks

This commit is contained in:
Joshua M. Boniface 2024-05-05 21:31:13 -04:00 committed by GitHub
commit df0af31bb3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
26 changed files with 537 additions and 177 deletions

View file

@ -78,7 +78,7 @@ export function getPlayedIndicatorHtml(item) {
if (enablePlayedIndicator(item)) {
const userData = item.UserData || {};
if (userData.UnplayedItemCount) {
return '<div class="countIndicator indicator">' + datetime.toLocaleString(userData.UnplayedItemCount) + '</div>';
return '<div class="countIndicator indicator">' + formatCountIndicator(userData.UnplayedItemCount) + '</div>';
}
if (userData.PlayedPercentage && userData.PlayedPercentage >= 100 || (userData.Played)) {
@ -93,12 +93,16 @@ export function getChildCountIndicatorHtml(item, options) {
const minCount = options?.minCount ? options.minCount : 0;
if (item.ChildCount && item.ChildCount > minCount) {
return '<div class="countIndicator indicator">' + datetime.toLocaleString(item.ChildCount) + '</div>';
return '<div class="countIndicator indicator">' + formatCountIndicator(item.ChildCount) + '</div>';
}
return '';
}
function formatCountIndicator(count) {
return count >= 100 ? '99+' : count.toString();
}
export function getTimerIndicator(item) {
let status;

View file

@ -60,6 +60,10 @@ const enablePlayedIndicator = (item: ItemDto) => {
return itemHelper.canMarkPlayed(item);
};
const formatCountIndicator = (count: number) => {
return count >= 100 ? '99+' : count.toString();
};
const useIndicator = (item: ItemDto) => {
const getMediaSourceIndicator = () => {
const mediaSourceCount = item.MediaSourceCount ?? 0;
@ -135,7 +139,7 @@ const useIndicator = (item: ItemDto) => {
if (childCount > 1) {
return (
<Box className='countIndicator indicator childCountIndicator'>
{datetime.toLocaleString(item.ChildCount)}
{formatCountIndicator(childCount)}
</Box>
);
}
@ -149,7 +153,7 @@ const useIndicator = (item: ItemDto) => {
if (userData.UnplayedItemCount) {
return (
<Box className='countIndicator indicator unplayedItemCount'>
{datetime.toLocaleString(userData.UnplayedItemCount)}
{formatCountIndicator(userData.UnplayedItemCount)}
</Box>
);
}

View file

@ -173,6 +173,8 @@ function loadForm(context, user, userSettings, systemInfo, apiClient) {
context.querySelector('.chkPlayDefaultAudioTrack').checked = user.Configuration.PlayDefaultAudioTrack || false;
context.querySelector('.chkPreferFmp4HlsContainer').checked = userSettings.preferFmp4HlsContainer();
context.querySelector('.chkEnableDts').checked = appSettings.enableDts();
context.querySelector('.chkEnableTrueHd').checked = appSettings.enableTrueHd();
context.querySelector('.chkEnableCinemaMode').checked = userSettings.enableCinemaMode();
context.querySelector('#selectAudioNormalization').value = userSettings.selectAudioNormalization();
context.querySelector('.chkEnableNextVideoOverlay').checked = userSettings.enableNextVideoInfoOverlay();
@ -216,6 +218,9 @@ function saveUser(context, user, userSettingsInstance, apiClient) {
appSettings.maxVideoWidth(context.querySelector('.selectMaxVideoWidth').value);
appSettings.limitSupportedVideoResolution(context.querySelector('.chkLimitSupportedVideoResolution').checked);
appSettings.enableDts(context.querySelector('.chkEnableDts').checked);
appSettings.enableTrueHd(context.querySelector('.chkEnableTrueHd').checked);
setMaxBitrateFromField(context.querySelector('.selectVideoInNetworkQuality'), true, 'Video');
setMaxBitrateFromField(context.querySelector('.selectVideoInternetQuality'), false, 'Video');
setMaxBitrateFromField(context.querySelector('.selectMusicInternetQuality'), false, 'Audio');

View file

@ -159,6 +159,28 @@
</div>
</div>
<div class="verticalSection verticalSection-extrabottompadding">
<h2 class="sectionTitle">
${HeaderVideoAdvanced}
</h2>
<div class="checkboxContainer checkboxContainer-withDescription fldEnableDts">
<label>
<input type="checkbox" is="emby-checkbox" class="chkEnableDts" />
<span>${EnableDts}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${EnableDtsHelp}</div>
</div>
<div class="checkboxContainer checkboxContainer-withDescription fldEnableTrueHd">
<label>
<input type="checkbox" is="emby-checkbox" class="chkEnableTrueHd" />
<span>${EnableTrueHd}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${EnableTrueHdHelp}</div>
</div>
</div>
<button is="emby-button" type="submit" class="raised button-submit block btnSave hide">
<span>${Save}</span>
</button>

View file

@ -82,6 +82,7 @@ function createPlaylist(dlg: DialogElement) {
.createPlaylist({
createPlaylistDto: {
Name: dlg.querySelector<HTMLInputElement>('#txtNewPlaylistName')?.value,
IsPublic: dlg.querySelector<HTMLInputElement>('#chkPlaylistPublic')?.checked,
Ids: itemIds?.split(','),
UserId: apiClient.getCurrentUserId()
}
@ -227,6 +228,17 @@ function getEditorHtml(items: string[]) {
html += `<input is="emby-input" type="text" id="txtNewPlaylistName" required="required" label="${globalize.translate('LabelName')}"${autoFocus} />`;
html += '</div>';
html += `
<div class="checkboxContainer checkboxContainer-withDescription">
<label>
<input type="checkbox" is="emby-checkbox" id="chkPlaylistPublic" />
<span>${globalize.translate('PlaylistPublic')}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">
${globalize.translate('PlaylistPublicDescription')}
</div>
</div>`;
// newPlaylistInfo
html += '</div>';