(function (window) { function renderOptions(page, selector, cssClass, items) { var elem; if (items.length) { elem = $(selector, page).show(); } else { elem = $(selector, page).hide(); } var html = ''; // style="margin: -.2em -.8em;" html += '
'; var index = 0; var idPrefix = 'chk' + selector.substring(1); html += items.map(function (filter) { var itemHtml = ''; var id = idPrefix + index; itemHtml += ''; itemHtml += ''; index++; return itemHtml; }).join(''); html += '
'; $('.filterOptions', elem).html(html).trigger('create'); } function renderFilters(page, result) { // If there's a huge number of these they will be really show to render if (result.Tags) { result.Tags.length = Math.min(result.Tags.length, 50); } renderOptions(page, '.genreFilters', 'chkGenreFilter', result.Genres); renderOptions(page, '.officialRatingFilters', 'chkOfficialRatingFilter', result.OfficialRatings); renderOptions(page, '.tagFilters', 'chkTagFilter', result.Tags); renderOptions(page, '.yearFilters', 'chkYearFilter', result.Years); } function onFiltersLoaded(page, query, reloadItemsFn) { $('.chkGenreFilter', page).on('change', function () { var filterName = this.getAttribute('data-filter'); var filters = query.Genres || ""; var delimiter = '|'; filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1); if (this.checked) { filters = filters ? (filters + delimiter + filterName) : filterName; } query.StartIndex = 0; query.Genres = filters; reloadItemsFn(); }); $('.chkTagFilter', page).on('change', function () { var filterName = this.getAttribute('data-filter'); var filters = query.Tags || ""; var delimiter = '|'; filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1); if (this.checked) { filters = filters ? (filters + delimiter + filterName) : filterName; } query.StartIndex = 0; query.Tags = filters; reloadItemsFn(); }); $('.chkYearFilter', page).on('change', function () { var filterName = this.getAttribute('data-filter'); var filters = query.Years || ""; var delimiter = ','; filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1); if (this.checked) { filters = filters ? (filters + delimiter + filterName) : filterName; } query.StartIndex = 0; query.Years = filters; reloadItemsFn(); }); $('.chkOfficialRatingFilter', page).on('change', function () { var filterName = this.getAttribute('data-filter'); var filters = query.OfficialRatings || ""; var delimiter = '|'; filters = (delimiter + filters).replace(delimiter + filterName, '').substring(1); if (this.checked) { filters = filters ? (filters + delimiter + filterName) : filterName; } query.StartIndex = 0; query.OfficialRatings = filters; reloadItemsFn(); }); } function loadFilters(page, userId, itemQuery, reloadItemsFn) { return ApiClient.getJSON(ApiClient.getUrl('Items/Filters', { UserId: userId, ParentId: itemQuery.ParentId, IncludeItemTypes: itemQuery.IncludeItemTypes })).done(function (result) { renderFilters(page, result); onFiltersLoaded(page, itemQuery, reloadItemsFn); }); } function onPageShow(page, query) { query.Genres = null; query.Years = null; query.OfficialRatings = null; query.Tags = null; } window.QueryFilters = { loadFilters: loadFilters, onPageShow: onPageShow }; })(window);