Merged filters into new settings dialog, added experimental summary field.
This commit is contained in:
@@ -10,6 +10,11 @@ function initUiActions(store, _router) {
|
||||
localStorage.setItem('tagFilter', tagFilter);
|
||||
}
|
||||
|
||||
function setSummaryFormat({ commit }, summaryFormat) {
|
||||
commit('setSummaryFormat', summaryFormat);
|
||||
localStorage.setItem('summaryFormat', JSON.stringify(summaryFormat));
|
||||
}
|
||||
|
||||
function setRange({ commit }, range) {
|
||||
commit('setRange', range);
|
||||
}
|
||||
@@ -309,6 +314,7 @@ function initUiActions(store, _router) {
|
||||
checkNotifications,
|
||||
search,
|
||||
setTagFilter,
|
||||
setSummaryFormat,
|
||||
setRange,
|
||||
setBatch,
|
||||
setSfw,
|
||||
|
||||
@@ -2,6 +2,10 @@ function setTagFilter(state, tagFilter) {
|
||||
state.tagFilter = tagFilter;
|
||||
}
|
||||
|
||||
function setSummaryFormat(state, summaryFormat) {
|
||||
state.summaryFormat = summaryFormat;
|
||||
}
|
||||
|
||||
function setRange(state, range) {
|
||||
state.range = range;
|
||||
}
|
||||
@@ -20,6 +24,7 @@ function setTheme(state, theme) {
|
||||
|
||||
export default {
|
||||
setTagFilter,
|
||||
setSummaryFormat,
|
||||
setRange,
|
||||
setBatch,
|
||||
setSfw,
|
||||
|
||||
@@ -1,12 +1,43 @@
|
||||
const storedTagFilter = localStorage.getItem('tagFilter');
|
||||
const storedSummaryFormat = localStorage.getItem('summaryFormat');
|
||||
const storedBatch = localStorage.getItem('batch');
|
||||
const storedSfw = localStorage.getItem('sfw');
|
||||
const storedTheme = localStorage.getItem('theme');
|
||||
|
||||
const deviceTheme = window.matchMedia?.('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||||
|
||||
const defaultSummaryFormat = [
|
||||
{
|
||||
delimiter: ' - ',
|
||||
segments: [
|
||||
{
|
||||
prop: 'channel',
|
||||
},
|
||||
{
|
||||
prop: 'title',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
delimiter: ', ',
|
||||
bracket: '()',
|
||||
segments: [
|
||||
{
|
||||
prop: 'actors',
|
||||
delimiter: ', ',
|
||||
},
|
||||
{
|
||||
prop: 'date',
|
||||
format: 'DD-MM-YYYY',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
export default {
|
||||
tagFilter: storedTagFilter ? storedTagFilter.split(',') : [],
|
||||
summaryFormat: storedSummaryFormat ? JSON.parse(storedSummaryFormat) : defaultSummaryFormat,
|
||||
defaultSummaryFormat,
|
||||
range: 'latest',
|
||||
batch: storedBatch || 'all',
|
||||
sfw: storedSfw === 'true' || false,
|
||||
|
||||
36
assets/js/utils/format-summary.js
Normal file
36
assets/js/utils/format-summary.js
Normal file
@@ -0,0 +1,36 @@
|
||||
import { formatDate } from '../format';
|
||||
|
||||
function formatSummary(release, summaryFormat) {
|
||||
return summaryFormat
|
||||
.map((group) => ({
|
||||
...group,
|
||||
segments: group.segments
|
||||
.filter((segment) => {
|
||||
if (!release[segment.prop]) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Array.isArray(release[segment.prop]) && release[segment.prop].length === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
})
|
||||
.map((segment) => {
|
||||
if (Array.isArray(release[segment.prop])) {
|
||||
return release[segment.prop].join(segment.delimiter || ', ');
|
||||
}
|
||||
|
||||
if (segment.prop === 'date') {
|
||||
return formatDate(release[segment.prop], segment.format || 'YYYY-MM-DD');
|
||||
}
|
||||
|
||||
return release[segment.prop];
|
||||
}),
|
||||
}))
|
||||
.filter((group) => group.segments.length > 0)
|
||||
.map((group) => `${group.bracket?.[0] || ''}${group.segments.join(group.delimiter || ' - ')}${group.bracket?.[1] || ''}`)
|
||||
.join(' ');
|
||||
}
|
||||
|
||||
export default formatSummary;
|
||||
Reference in New Issue
Block a user