lazy load scripts
This commit is contained in:
parent
0a670a4635
commit
c5802fc5ab
38 changed files with 224 additions and 162 deletions
158
dashboard-ui/scripts/queryfilters.js
Normal file
158
dashboard-ui/scripts/queryfilters.js
Normal file
|
@ -0,0 +1,158 @@
|
|||
(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 += '<div data-role="controlgroup">';
|
||||
|
||||
var index = 0;
|
||||
var idPrefix = 'chk' + selector.substring(1);
|
||||
|
||||
html += items.map(function (filter) {
|
||||
|
||||
var itemHtml = '';
|
||||
|
||||
var id = idPrefix + index;
|
||||
itemHtml += '<label for="' + id + '">' + filter + '</label>';
|
||||
itemHtml += '<input id="' + id + '" type="checkbox" data-filter="' + filter + '" data-mini="true" class="' + cssClass + '" />';
|
||||
|
||||
index++;
|
||||
|
||||
return itemHtml;
|
||||
|
||||
}).join('');
|
||||
|
||||
html += '</div>';
|
||||
|
||||
$('.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);
|
Loading…
Add table
Add a link
Reference in a new issue