use single state and local storage

This commit is contained in:
grafixeyehero
2022-10-21 21:47:54 +03:00
parent f40c565e4a
commit 6341a71fec
15 changed files with 485 additions and 508 deletions
+35 -12
View File
@@ -102,15 +102,8 @@ function onInputCommand(e) {
break;
}
}
function saveValues(context, settings, settingsKey) {
function saveValues(context, settings, settingsKey, setfilters) {
let elems = context.querySelectorAll('.simpleFilter');
for (let i = 0, length = elems.length; i < length; i++) {
if (elems[i].tagName === 'INPUT') {
setBasicFilter(context, settingsKey + '-filter-' + elems[i].getAttribute('data-settingname'), elems[i]);
} else {
setBasicFilter(context, settingsKey + '-filter-' + elems[i].getAttribute('data-settingname'), elems[i].querySelector('input'));
}
}
// Video type
const videoTypes = [];
@@ -121,7 +114,6 @@ function saveValues(context, settings, settingsKey) {
videoTypes.push(elems[i].getAttribute('data-filter'));
}
}
userSettings.setFilter(settingsKey + '-filter-VideoTypes', videoTypes.join(','));
// Series status
const seriesStatuses = [];
@@ -132,7 +124,6 @@ function saveValues(context, settings, settingsKey) {
seriesStatuses.push(elems[i].getAttribute('data-filter'));
}
}
userSettings.setFilter(`${settingsKey}-filter-SeriesStatus`, seriesStatuses.join(','));
// Genres
const genres = [];
@@ -143,7 +134,39 @@ function saveValues(context, settings, settingsKey) {
genres.push(elems[i].getAttribute('data-filter'));
}
}
userSettings.setFilter(settingsKey + '-filter-GenreIds', genres.join(','));
if (setfilters) {
setfilters((prevState) => ({
...prevState,
StartIndex: 0,
IsPlayed: context.querySelector('.chkPlayed').checked,
IsUnplayed: context.querySelector('.chkUnplayed').checked,
IsFavorite: context.querySelector('.chkFavorite').checked,
IsResumable: context.querySelector('.chkResumable').checked,
Is4K: context.querySelector('.chk4KFilter').checked,
IsHD: context.querySelector('.chkHDFilter').checked,
IsSD: context.querySelector('.chkSDFilter').checked,
Is3D: context.querySelector('.chk3DFilter').checked,
VideoTypes: videoTypes.join(','),
SeriesStatus: seriesStatuses.join(','),
HasSubtitles: context.querySelector('.chkSubtitle').checked,
HasTrailer: context.querySelector('.chkTrailer').checked,
HasSpecialFeature: context.querySelector('.chkSpecialFeature').checked,
HasThemeSong: context.querySelector('.chkThemeSong').checked,
HasThemeVideo: context.querySelector('.chkThemeVideo').checked,
GenreIds: genres.join(',')
}));
} else {
for (let i = 0, length = elems.length; i < length; i++) {
if (elems[i].tagName === 'INPUT') {
setBasicFilter(context, settingsKey + '-filter-' + elems[i].getAttribute('data-settingname'), elems[i]);
} else {
setBasicFilter(context, settingsKey + '-filter-' + elems[i].getAttribute('data-settingname'), elems[i].querySelector('input'));
}
}
userSettings.setFilter(settingsKey + '-filter-GenreIds', genres.join(','));
}
}
function bindCheckboxInput(context, on) {
const elems = context.querySelectorAll('.checkboxList-verticalwrap');
@@ -275,7 +298,7 @@ class FilterMenu {
if (submitted) {
//if (!options.onChange) {
saveValues(dlg, options.settings, options.settingsKey);
saveValues(dlg, options.settings, options.settingsKey, options.setfilters);
return resolve();
//}
}
@@ -5,19 +5,19 @@
<div class="verticalSection verticalSection-extrabottompadding basicFilterSection focuscontainer-x" style="margin-top:2em;">
<div class="checkboxList checkboxList-verticalwrap">
<label class="viewSetting simpleFilter" data-settingname="IsUnplayed">
<input type="checkbox" is="emby-checkbox" />
<input type="checkbox" is="emby-checkbox" class="chkUnplayed" />
<span>${Unplayed}</span>
</label>
<label class="viewSetting simpleFilter" data-settingname="IsPlayed">
<input type="checkbox" is="emby-checkbox" />
<input type="checkbox" is="emby-checkbox" class="chkPlayed" />
<span>${Played}</span>
</label>
<label class="viewSetting simpleFilter" data-settingname="IsFavorite">
<input type="checkbox" is="emby-checkbox" />
<input type="checkbox" is="emby-checkbox" class="chkFavorite" />
<span>${Favorite}</span>
</label>
<label class="viewSetting simpleFilter" data-settingname="IsResumable">
<input type="checkbox" is="emby-checkbox" />
<input type="checkbox" is="emby-checkbox" class="chkResumable" />
<span>${ContinueWatching}</span>
</label>
</div>
@@ -49,22 +49,22 @@
<div class="checkboxList checkboxList-verticalwrap">
<label>
<input type="checkbox" is="emby-checkbox" class="simpleFilter" data-settingname="IsHD" />
<input type="checkbox" is="emby-checkbox" class="simpleFilter chkHDFilter" data-settingname="IsHD" />
<span>HD</span>
</label>
<label>
<input type="checkbox" is="emby-checkbox" class="simpleFilter" data-settingname="Is4K" />
<input type="checkbox" is="emby-checkbox" class="simpleFilter chk4KFilter" data-settingname="Is4K" />
<span>4K</span>
</label>
<label>
<input type="checkbox" is="emby-checkbox" class="simpleFilter" data-settingname="IsSD" />
<input type="checkbox" is="emby-checkbox" class="simpleFilter chkSDFilter" data-settingname="IsSD" />
<span>SD</span>
</label>
<label>
<input type="checkbox" is="emby-checkbox" class="simpleFilter" data-settingname="Is3D" />
<input type="checkbox" is="emby-checkbox" class="simpleFilter chk3DFilter" data-settingname="Is3D" />
<span>3D</span>
</label>
<label>
@@ -82,23 +82,23 @@
<h2 class="checkboxListLabel">${Features}</h2>
<div class="checkboxList checkboxList-verticalwrap">
<label class="viewSetting simpleFilter" data-settingname="HasSubtitles">
<input type="checkbox" is="emby-checkbox" class="chkFeatureFilter" />
<input type="checkbox" is="emby-checkbox" class="chkFeatureFilter chkSubtitle" />
<span>${Subtitles}</span>
</label>
<label class="viewSetting simpleFilter" data-settingname="HasTrailer">
<input type="checkbox" is="emby-checkbox" class="chkFeatureFilter" />
<input type="checkbox" is="emby-checkbox" class="chkFeatureFilter chkTrailer" />
<span>${Trailers}</span>
</label>
<label class="viewSetting simpleFilter" data-settingname="HasSpecialFeature">
<input type="checkbox" is="emby-checkbox" class="chkFeatureFilter" />
<input type="checkbox" is="emby-checkbox" class="chkFeatureFilter chkSpecialFeature" />
<span>${Extras}</span>
</label>
<label class="viewSetting simpleFilter" data-settingname="HasThemeSong">
<input type="checkbox" is="emby-checkbox" class="chkFeatureFilter" />
<input type="checkbox" is="emby-checkbox" class="chkFeatureFilter chkThemeSong" />
<span>${ThemeSongs}</span>
</label>
<label class="viewSetting simpleFilter" data-settingname="HasThemeVideo">
<input type="checkbox" is="emby-checkbox" class="chkFeatureFilter" />
<input type="checkbox" is="emby-checkbox" class="chkFeatureFilter chkThemeVideo" />
<span>${ThemeVideos}</span>
</label>
</div>