fix: show template name instead of ID in filter list and card badges
All checks were successful
Lint & Test / test (push) Successful in 1m7s
All checks were successful
Lint & Test / test (push) Successful in 1m7s
Collapsed filter cards in the modal showed raw template IDs (e.g. pp_cb72e227) instead of resolving select options to their labels. Card filter chain badges now include the referenced template name.
This commit is contained in:
@@ -138,6 +138,10 @@ export class FilterListManager {
|
|||||||
if (filterDef && !isExpanded) {
|
if (filterDef && !isExpanded) {
|
||||||
summary = filterDef.options_schema.map(opt => {
|
summary = filterDef.options_schema.map(opt => {
|
||||||
const val = fi.options[opt.key] !== undefined ? fi.options[opt.key] : opt.default;
|
const val = fi.options[opt.key] !== undefined ? fi.options[opt.key] : opt.default;
|
||||||
|
if (opt.type === 'select' && Array.isArray(opt.choices)) {
|
||||||
|
const choice = opt.choices.find(c => c.value === val);
|
||||||
|
if (choice) return choice.label;
|
||||||
|
}
|
||||||
return val;
|
return val;
|
||||||
}).join(', ');
|
}).join(', ');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -409,7 +409,14 @@ function renderPictureSourcesList(streams: any) {
|
|||||||
const renderPPTemplateCard = (tmpl: any) => {
|
const renderPPTemplateCard = (tmpl: any) => {
|
||||||
let filterChainHtml = '';
|
let filterChainHtml = '';
|
||||||
if (tmpl.filters && tmpl.filters.length > 0) {
|
if (tmpl.filters && tmpl.filters.length > 0) {
|
||||||
const filterNames = tmpl.filters.map(fi => `<span class="filter-chain-item">${escapeHtml(_getFilterName(fi.filter_id))}</span>`);
|
const filterNames = tmpl.filters.map(fi => {
|
||||||
|
let label = _getFilterName(fi.filter_id);
|
||||||
|
if (fi.filter_id === 'filter_template' && fi.options?.template_id) {
|
||||||
|
const ref = _cachedPPTemplates.find(p => p.id === fi.options.template_id);
|
||||||
|
if (ref) label += `: ${ref.name}`;
|
||||||
|
}
|
||||||
|
return `<span class="filter-chain-item">${escapeHtml(label)}</span>`;
|
||||||
|
});
|
||||||
filterChainHtml = `<div class="filter-chain">${filterNames.join('<span class="filter-chain-arrow">→</span>')}</div>`;
|
filterChainHtml = `<div class="filter-chain">${filterNames.join('<span class="filter-chain-arrow">→</span>')}</div>`;
|
||||||
}
|
}
|
||||||
return wrapCard({
|
return wrapCard({
|
||||||
@@ -435,7 +442,14 @@ function renderPictureSourcesList(streams: any) {
|
|||||||
const renderCSPTCard = (tmpl: any) => {
|
const renderCSPTCard = (tmpl: any) => {
|
||||||
let filterChainHtml = '';
|
let filterChainHtml = '';
|
||||||
if (tmpl.filters && tmpl.filters.length > 0) {
|
if (tmpl.filters && tmpl.filters.length > 0) {
|
||||||
const filterNames = tmpl.filters.map(fi => `<span class="filter-chain-item">${escapeHtml(_getStripFilterName(fi.filter_id))}</span>`);
|
const filterNames = tmpl.filters.map(fi => {
|
||||||
|
let label = _getStripFilterName(fi.filter_id);
|
||||||
|
if (fi.filter_id === 'css_filter_template' && fi.options?.template_id) {
|
||||||
|
const ref = _cachedCSPTemplates.find(p => p.id === fi.options.template_id);
|
||||||
|
if (ref) label += `: ${ref.name}`;
|
||||||
|
}
|
||||||
|
return `<span class="filter-chain-item">${escapeHtml(label)}</span>`;
|
||||||
|
});
|
||||||
filterChainHtml = `<div class="filter-chain">${filterNames.join('<span class="filter-chain-arrow">\u2192</span>')}</div>`;
|
filterChainHtml = `<div class="filter-chain">${filterNames.join('<span class="filter-chain-arrow">\u2192</span>')}</div>`;
|
||||||
}
|
}
|
||||||
return wrapCard({
|
return wrapCard({
|
||||||
|
|||||||
Reference in New Issue
Block a user