mirror of
https://github.com/ranaldsgift/KefinTweaks.git
synced 2026-11-05 15:52:47 +01:00
Add sort order option for recently released home screen sections
This commit is contained in:
@@ -176,4 +176,9 @@ summary.listItemBodyText {
|
||||
.navMenuOption[data-name="configure"]:hover:not(.navMenuOption-selected) {
|
||||
transform: none !important;
|
||||
margin-top: 3em !important;
|
||||
}
|
||||
|
||||
div#homeScreen_recentlyReleased_container .listItem:has(#homeScreen_recentlyReleased_movies_sortOrder),
|
||||
div#homeScreen_recentlyReleased_container .listItem:has(#homeScreen_recentlyReleased_episodes_sortOrder) {
|
||||
display: none;
|
||||
}
|
||||
+31
-44
@@ -1442,7 +1442,8 @@
|
||||
nameInputAttributes = {},
|
||||
includeCardFormat = true,
|
||||
includeItemLimit = true,
|
||||
includeIsPlayed = false
|
||||
includeIsPlayed = false,
|
||||
includePremiereDays = false
|
||||
} = options;
|
||||
|
||||
const nameValue = config.name ?? defaultName ?? '';
|
||||
@@ -1557,6 +1558,26 @@
|
||||
</div>`;
|
||||
}
|
||||
|
||||
if (includePremiereDays) {
|
||||
const minAgeInDays = config.minAgeInDays ?? 0;
|
||||
const maxAgeInDays = config.maxAgeInDays ?? 30;
|
||||
html += `
|
||||
<div class="listItem" style="border: 1px solid rgba(255,255,255,0.1); border-radius: 4px; padding: 0.75em;">
|
||||
<div class="listItemContent">
|
||||
<div class="listItemBodyText" style="margin-bottom: 0.5em;">Minimum Age (Days)</div>
|
||||
<input type="number" id="${prefix}_minAgeInDays" class="fld emby-input" value="${minAgeInDays}" style="width: 100%;">
|
||||
<div class="fieldDescription" style="margin-top: 0.25em;">Optional. Days since release (e.g. 0 for today).</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listItem" style="border: 1px solid rgba(255,255,255,0.1); border-radius: 4px; padding: 0.75em;">
|
||||
<div class="listItemContent">
|
||||
<div class="listItemBodyText" style="margin-bottom: 0.5em;">Maximum Age (Days)</div>
|
||||
<input type="number" id="${prefix}_maxAgeInDays" class="fld emby-input" value="${maxAgeInDays}" style="width: 100%;">
|
||||
<div class="fieldDescription" style="margin-top: 0.25em;">Optional. Max days old (e.g. 30).</div>
|
||||
</div>
|
||||
</div>`;
|
||||
}
|
||||
|
||||
if (includeIsPlayed) {
|
||||
html += `
|
||||
<div class="listItem" style="border: 1px solid rgba(255,255,255,0.1); border-radius: 4px; padding: 0.75em;">
|
||||
@@ -1668,22 +1689,7 @@
|
||||
${buildJellyfinCheckbox('homeScreen_recentlyReleased_movies_enabled', (recentlyReleased.movies || {}).enabled !== false, 'Enabled')}
|
||||
</div>
|
||||
<div class="listItemContent" style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.75em;">
|
||||
${createSectionConfiguration('homeScreen_recentlyReleased_movies', recentlyReleased.movies || {}, { includeName: true, defaultName: 'Recently Released Movies', includeSortOrder: false, includeOrder: true, includeIsPlayed: true })}
|
||||
|
||||
<div class="listItem" style="border: 1px solid rgba(255,255,255,0.1); border-radius: 4px; padding: 0.75em;">
|
||||
<div class="listItemContent">
|
||||
<div class="listItemBodyText" style="margin-bottom: 0.5em;">Minimum Age (Days)</div>
|
||||
<input type="number" id="homeScreen_recentlyReleased_movies_minAgeInDays" class="fld emby-input" value="${recentlyReleased.movies?.minAgeInDays ?? ''}" style="width: 100%;">
|
||||
<div class="fieldDescription" style="margin-top: 0.25em;">Optional. Days since release (e.g. 0 for today).</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listItem" style="border: 1px solid rgba(255,255,255,0.1); border-radius: 4px; padding: 0.75em;">
|
||||
<div class="listItemContent">
|
||||
<div class="listItemBodyText" style="margin-bottom: 0.5em;">Maximum Age (Days)</div>
|
||||
<input type="number" id="homeScreen_recentlyReleased_movies_maxAgeInDays" class="fld emby-input" value="${recentlyReleased.movies?.maxAgeInDays ?? ''}" style="width: 100%;">
|
||||
<div class="fieldDescription" style="margin-top: 0.25em;">Optional. Max days old (e.g. 30).</div>
|
||||
</div>
|
||||
</div>
|
||||
${createSectionConfiguration('homeScreen_recentlyReleased_movies', recentlyReleased.movies || {}, { includeName: true, defaultName: 'Recently Released Movies', includeSortOrder: true, includeOrder: true, includeIsPlayed: true, includePremiereDays: true })}
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
@@ -1700,22 +1706,7 @@
|
||||
${buildJellyfinCheckbox('homeScreen_recentlyReleased_episodes_enabled', (recentlyReleased.episodes || {}).enabled !== false, 'Enabled')}
|
||||
</div>
|
||||
<div class="listItemContent" style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.75em;">
|
||||
${createSectionConfiguration('homeScreen_recentlyReleased_episodes', recentlyReleased.episodes || {}, { includeName: true, defaultName: 'Recently Aired Episodes', includeSortOrder: false, includeOrder: true, includeIsPlayed: true })}
|
||||
|
||||
<div class="listItem" style="border: 1px solid rgba(255,255,255,0.1); border-radius: 4px; padding: 0.75em;">
|
||||
<div class="listItemContent">
|
||||
<div class="listItemBodyText" style="margin-bottom: 0.5em;">Minimum Age (Days)</div>
|
||||
<input type="number" id="homeScreen_recentlyReleased_episodes_minAgeInDays" class="fld emby-input" value="${recentlyReleased.episodes?.minAgeInDays ?? ''}" style="width: 100%;">
|
||||
<div class="fieldDescription" style="margin-top: 0.25em;">Optional. Days since release (e.g. 0 for today).</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listItem" style="border: 1px solid rgba(255,255,255,0.1); border-radius: 4px; padding: 0.75em;">
|
||||
<div class="listItemContent">
|
||||
<div class="listItemBodyText" style="margin-bottom: 0.5em;">Maximum Age (Days)</div>
|
||||
<input type="number" id="homeScreen_recentlyReleased_episodes_maxAgeInDays" class="fld emby-input" value="${recentlyReleased.episodes?.maxAgeInDays ?? ''}" style="width: 100%;">
|
||||
<div class="fieldDescription" style="margin-top: 0.25em;">Optional. Max days old (e.g. 7).</div>
|
||||
</div>
|
||||
</div>
|
||||
${createSectionConfiguration('homeScreen_recentlyReleased_episodes', recentlyReleased.episodes || {}, { includeName: true, defaultName: 'Recently Aired Episodes', includeSortOrder: true, includeOrder: true, includeIsPlayed: true, includePremiereDays: true })}
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
@@ -5022,17 +5013,13 @@ window.KefinTweaksConfig = ${JSON.stringify(config, null, 2)};`;
|
||||
enabled: document.getElementById('homeScreen_recentlyReleased_enabled')?.checked !== false,
|
||||
movies: {
|
||||
enabled: document.getElementById('homeScreen_recentlyReleased_movies_enabled')?.checked !== false,
|
||||
...getSectionConfig('homeScreen_recentlyReleased_movies', { includeName: true, defaultName: 'Recently Released Movies', includeSortOrder: false, includeOrder: true }),
|
||||
minPremiereDate: document.getElementById('homeScreen_recentlyReleased_movies_minPremiereDate')?.value || '',
|
||||
maxPremiereDate: document.getElementById('homeScreen_recentlyReleased_movies_maxPremiereDate')?.value || ''
|
||||
},
|
||||
episodes: {
|
||||
enabled: document.getElementById('homeScreen_recentlyReleased_episodes_enabled')?.checked !== false,
|
||||
minPremiereDate: document.getElementById('homeScreen_recentlyReleased_episodes_minPremiereDate')?.value || '',
|
||||
maxPremiereDate: document.getElementById('homeScreen_recentlyReleased_episodes_maxPremiereDate')?.value || '',
|
||||
...getSectionConfig('homeScreen_recentlyReleased_episodes', { includeName: true, defaultName: 'Recently Aired Episodes', includeSortOrder: false, includeOrder: true })
|
||||
}
|
||||
},
|
||||
...getSectionConfig('homeScreen_recentlyReleased_movies', { includeName: true, defaultName: 'Recently Released Movies', includeSortOrder: true, includeOrder: true, includeIsPlayed: true, includePremiereDays: true })
|
||||
},
|
||||
episodes: {
|
||||
enabled: document.getElementById('homeScreen_recentlyReleased_episodes_enabled')?.checked !== false,
|
||||
...getSectionConfig('homeScreen_recentlyReleased_episodes', { includeName: true, defaultName: 'Recently Aired Episodes', includeSortOrder: true, includeOrder: true, includeIsPlayed: true, includePremiereDays: true })
|
||||
}
|
||||
},
|
||||
trending: {
|
||||
enabled: document.getElementById('homeScreen_trending_enabled')?.checked === true,
|
||||
...getSectionConfig('homeScreen_trending', { includeName: true, defaultName: 'Trending' })
|
||||
|
||||
+7
-19
@@ -2611,9 +2611,7 @@
|
||||
* Fetches newest movies from Jellyfin API
|
||||
* @returns {Promise<Array>} - Array of newest movie items
|
||||
*/
|
||||
async function fetchNewMovies() {
|
||||
const apiClient = window.ApiClient;
|
||||
|
||||
async function fetchNewMovies() {
|
||||
// Calculate date range based on configuration
|
||||
const minAgeInDays = newMoviesConfig.minAgeInDays !== null && newMoviesConfig.minAgeInDays !== undefined ? newMoviesConfig.minAgeInDays : 0;
|
||||
const maxAgeInDays = newMoviesConfig.maxAgeInDays !== null && newMoviesConfig.maxAgeInDays !== undefined ? newMoviesConfig.maxAgeInDays : 30; // Default 30 days old max
|
||||
@@ -2634,8 +2632,8 @@
|
||||
|
||||
const options = {
|
||||
IncludeItemTypes: 'Movie',
|
||||
SortBy: 'DateCreated',
|
||||
SortOrder: 'Descending',
|
||||
SortBy: 'PremiereDate',
|
||||
SortOrder: newMoviesConfig.sortOrderDirection === 'Ascending' ? 'Ascending' : 'Descending',
|
||||
Limit: 16,
|
||||
Fields: 'PremiereDate',
|
||||
Recursive: true,
|
||||
@@ -2663,9 +2661,7 @@
|
||||
* keeping only the episode with the lowest index number
|
||||
* @returns {Promise<Array>} - Array of deduplicated newest episode items
|
||||
*/
|
||||
async function fetchNewEpisodes() {
|
||||
const apiClient = window.ApiClient;
|
||||
|
||||
async function fetchNewEpisodes() {
|
||||
// Calculate date range based on configuration
|
||||
const minAgeInDays = newEpisodesConfig.minAgeInDays !== null && newEpisodesConfig.minAgeInDays !== undefined ? newEpisodesConfig.minAgeInDays : 0;
|
||||
const maxAgeInDays = newEpisodesConfig.maxAgeInDays !== null && newEpisodesConfig.maxAgeInDays !== undefined ? newEpisodesConfig.maxAgeInDays : 7; // Default 7 days old max
|
||||
@@ -2685,7 +2681,7 @@
|
||||
LocationTypes: 'FileSystem',
|
||||
Recursive: true,
|
||||
SortBy: 'PremiereDate',
|
||||
SortOrder: 'Descending',
|
||||
SortOrder: newEpisodesConfig.sortOrderDirection === 'Ascending' ? 'Ascending' : 'Descending',
|
||||
MinPremiereDate: minPremiereDate,
|
||||
MaxPremiereDate: maxPremiereDate,
|
||||
Limit: 100,
|
||||
@@ -2792,8 +2788,6 @@
|
||||
|
||||
// Get config values
|
||||
const itemLimit = newMoviesConfig.itemLimit ?? defaultItemLimit;
|
||||
const sortOrder = newMoviesConfig.sortOrder ?? defaultSortOrder;
|
||||
const sortOrderDirection = newMoviesConfig.sortOrderDirection ?? 'Descending';
|
||||
const cardFormat = newMoviesConfig.cardFormat ?? defaultCardFormat;
|
||||
const order = newMoviesConfig.order ?? 30;
|
||||
const sectionName = newMoviesConfig.name || 'Recently Released Movies';
|
||||
@@ -2807,9 +2801,7 @@
|
||||
sectionName,
|
||||
null,
|
||||
true,
|
||||
cardFormat,
|
||||
sortOrder,
|
||||
sortOrderDirection
|
||||
cardFormat
|
||||
);
|
||||
|
||||
// Add data attributes to track rendered sections
|
||||
@@ -2849,8 +2841,6 @@
|
||||
|
||||
// Get config values
|
||||
const itemLimit = newEpisodesConfig.itemLimit ?? defaultItemLimit;
|
||||
const sortOrder = newEpisodesConfig.sortOrder ?? defaultSortOrder;
|
||||
const sortOrderDirection = newEpisodesConfig.sortOrderDirection ?? 'Descending';
|
||||
const cardFormat = newEpisodesConfig.cardFormat ?? defaultCardFormat;
|
||||
const order = newEpisodesConfig.order ?? 31;
|
||||
const sectionName = newEpisodesConfig.name || 'Recently Aired Episodes';
|
||||
@@ -2865,9 +2855,7 @@
|
||||
sectionName,
|
||||
viewMoreUrl,
|
||||
true,
|
||||
cardFormat,
|
||||
sortOrder,
|
||||
sortOrderDirection
|
||||
cardFormat
|
||||
);
|
||||
|
||||
// Add data attributes to track rendered sections
|
||||
|
||||
Reference in New Issue
Block a user