Methods

(static) correctVersionDisplay(items) → {void}

Rewrite this page's items so each tile's progress bar shows the version that would actually play. The rules and the measurements are versionResume's DISPLAY section; the requests are versionDisplay.correctDisplayProgress().

The cache spans the whole run, so the genre pass below reuses whatever the main query already looked up rather than asking again. The resume list is scoped to this grid's container: a library, or (for a genre or studio view) the library the presenter set as itemId. That resolves through a collection too (verified 2026-09-20 against a 12.0 server: a resume query scoped to a BoxSet returns its members).

Parameters:
NameTypeDescription
itemsdynamic
Returns:
Type: 
void

(static) executeHashPage(queryType, params) → {dynamic}

One page of the "#" letter filter: one or two requests across its two name ranges (gridPage.hashRanges), the second only when the page reaches past the first range's end, and always on the first page, whose total counts both. The first page reports the first range's count in hashFirstRangeTotal, and the view hands it back to every later page, which is how a page finds its place in the two ranges.

Invalid when either request fails: a "#" page missing one range would silently leave its items out of the grid.

Parameters:
NameTypeDescription
queryTypestring
paramsobject
Returns:
Type: 
dynamic

(static) executeItemQuery(queryType, params) → {dynamic}

Routes an item query through Build*Request() + pool based on queryType. Used for a page's request, and for each of a "#" page's (executeHashPage). queryType values: "liveTV", "studios", "genres", "artists", "albumArtists", "usersItems"

Returns the parsed reply, or invalid when the server did not answer usably, after logging why, since the view is told only that the load failed.

Parameters:
NameTypeDescription
queryTypestring
paramsobject
Returns:
Type: 
dynamic

(static) init() → {void}

Returns:
Type: 
void

(static) loadItems() → {void}

Returns:
Type: 
void

(static) populateGenreRow(row, item, res) → {void}

Fills one genre row with the sampled items its request returned.

res is the pool response AA, or invalid when the request never got an answer: the pool was down, or the whole-run budget expired. An HTTP error arrives as a valid res with ok = false. Both leave the row in place with its title and no children, which is exactly what the blocking fetchJson this replaced did when it returned invalid: a genre that can't be sampled still belongs in the list, and removing it would renumber the grid around a transient failure.

Parameters:
NameTypeDescription
rowdynamic
itemobject
resdynamic
Returns:
Type: 
void