Members

(static, constant) FAVORITES_STAND_IN_ID

The row that stands in for the /Items rows when their first load fails (homeRowFailure.needsFavoritesStandIn).

Default Value
  • favoritesStandIn

(static, constant) PEOPLE_TYPE

The one row filled by its own request (/Persons); every other type comes from /Items.

Default Value
  • Person

Methods

(static) applyItems(types, itemData, sizesChanged) → {void}

Groups an answered load's items by type and populates/removes the rows of types. On refresh, updates existing rows in place to preserve focus position.

Parameters:
NameTypeDescription
typesobject

the row types this load fills

itemDatadynamic

the load's items

sizesChangedboolean

whether rows were already added or removed, so sizes need applying

Returns:
Type: 
void

(static) applyRowSizes() → {void}

Applies per-row slot sizes, heights, and spacings based on each row's cursorSize

Returns:
Type: 
void

(static) createSkeletonRows() → {void}

Creates skeleton rows for all known favorite types with loading placeholders

Returns:
Type: 
void

(static) findInsertIndexForType(itemType, typeArray) → {integer}

Find the correct insert index for a type based on the type ordering

Parameters:
NameTypeDescription
itemTypestring
typeArrayobject
Returns:
Type: 
integer

(static) findRowBySectionId(sectionId) → {object}

Find a row by its sectionId

Parameters:
NameTypeDescription
sectionIdstring
Returns:
Type: 
object

(static) finishLoad() → {void}

After either load: the backdrop follows the focused tile, and texture management is active so off-screen cells unload. Also after a failure, which may be the only answer this list gets. Recalculate the buffer range first: rows may have been added or removed since the first range was set.

Returns:
Type: 
void

(static) getItemAtIndices(indices) → {dynamic}

Parameters:
NameTypeDescription
indicesobject
Returns:
Type: 
dynamic

(static) getSlotSizeForType(itemType) → {object}

Returns the appropriate slot size for a Jellyfin item type. Follows the same logic as SearchRow.bs getSlotSizeForType. WIDE (16:9): Episode, Video, MusicVideo, PhotoAlbum, Photo SQUARE (1:1): Music types, Playlist, Program, TvChannel, Recording PORTRAIT (2:3): all others (Movie, Series, Person, BoxSet, etc.)

Parameters:
NameTypeDescription
itemTypestring
Returns:
Type: 
object

(static) init() → {void}

Returns:
Type: 
void

(static) itemSelected() → {void}

Returns:
Type: 
void

(static) loadFavorites() → {void}

Entry point called by Home.bs when the Favorites tab is selected and on every return to Home, and by OK on a failed tile (itemSelected). Creates skeleton rows once, then starts each load that is not still running.

Returns:
Type: 
void

(static) onDestroy() → {void}

Returns:
Type: 
void

(static) onFavoritePeopleLoaded(event) → {void}

The /Persons load finished: an answered one fills or removes the People row, a failed one leaves it standing, showing the failed tile if it was still spinning.

Parameters:
NameTypeDescription
eventobject
Returns:
Type: 
void

(static) onFavoritesLoaded(event) → {void}

The /Items load finished. An answered one fills or removes every row but People; a failed one never removes a row (decision home-row-failure-tile): rows keep their items, and on a first load the spinning rows give way to one failed "Favorites" row (showItemsFailed).

Parameters:
NameTypeDescription
eventobject
Returns:
Type: 
void

(static) onItemFocused() → {void}

Returns:
Type: 
void

(static) onKeyEvent(key, press) → {boolean}

Parameters:
NameTypeDescription
keystring
pressboolean
Returns:
Type: 
boolean

(static) removeStandIn() → {boolean}

Drops the stand-in, if there is one: an answered /Items load puts the real rows back.

Returns:

true when a row was removed, so row sizes need applying

Type: 
boolean

(static) replacePlaceholder(row, placeholder) → {void}

Swap a row's lone placeholder for another, in place. Appended before the old one is removed, so the row is never empty and the RowList keeps its layout and focus.

Parameters:
NameTypeDescription
rowobject
placeholderobject
Returns:
Type: 
void

(static) showItemsFailed() → {void}

The /Items load failed. Rows with items keep them. Rows still spinning (a first load) are replaced by one "Favorites" row showing the failed tile, where the first of them was, so the failure reads once rather than on up to fifteen rows; a stand-in already there shows the failed tile again (homeRowFailure.needsFavoritesStandIn).

Returns:
Type: 
void

(static) showRowFailed(sectionId) → {void}

A load failed: the row keeps its items, and a row still spinning shows the failed tile instead (homeRowFailure.afterFailure). A row that is not on screen stays off it.

Parameters:
NameTypeDescription
sectionIdstring
Returns:
Type: 
void

(static) showRowRetrying(sectionId) → {void}

A load is starting again: a row showing the failed tile goes back to the spinner, so the retry shows it is under way (homeRowFailure.afterRetry).

Parameters:
NameTypeDescription
sectionIdstring
Returns:
Type: 
void

(static) startFavoritePeopleLoad() → {void}

Returns:
Type: 
void

(static) startFavoritesLoad() → {void}

A load still running is left to finish, not asked again, as HomeRows' isLoading* guards do: stopping its Task does not stop its request (a default-limit read keeps its pool slot), so a second one would stack on a server that may still be computing the first (decision home-row-failure-tile). A failed tile goes back to the spinner while its load runs again.

Returns:
Type: 
void

(static) updateBackdropForFocusedItem() → {void}

Returns:
Type: 
void

(static) updateSize() → {void}

Returns:
Type: 
void