Aktueller Stand
This commit is contained in:
86
web/app.js
86
web/app.js
@@ -1287,13 +1287,97 @@ function buildBookmarkSearchUrl(query) {
|
||||
return searchUrl.toString();
|
||||
}
|
||||
|
||||
function splitBookmarkGroupOptions(rawGroup) {
|
||||
if (typeof rawGroup !== 'string') {
|
||||
return [];
|
||||
}
|
||||
|
||||
return rawGroup
|
||||
.split(',')
|
||||
.map((entry) => entry.trim())
|
||||
.filter(Boolean);
|
||||
}
|
||||
|
||||
function expandBookmarkQueryVariants(baseQuery) {
|
||||
const trimmed = typeof baseQuery === 'string' ? baseQuery.trim() : '';
|
||||
if (!trimmed) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const variants = [''];
|
||||
let cursor = 0;
|
||||
|
||||
while (cursor < trimmed.length) {
|
||||
const openIndex = trimmed.indexOf('(', cursor);
|
||||
if (openIndex === -1) {
|
||||
const tail = trimmed.slice(cursor);
|
||||
for (let i = 0; i < variants.length; i += 1) {
|
||||
variants[i] = `${variants[i]}${tail}`;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
const closeIndex = trimmed.indexOf(')', openIndex + 1);
|
||||
if (closeIndex === -1) {
|
||||
const tail = trimmed.slice(cursor);
|
||||
for (let i = 0; i < variants.length; i += 1) {
|
||||
variants[i] = `${variants[i]}${tail}`;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
const before = trimmed.slice(cursor, openIndex);
|
||||
if (before) {
|
||||
for (let i = 0; i < variants.length; i += 1) {
|
||||
variants[i] = `${variants[i]}${before}`;
|
||||
}
|
||||
}
|
||||
|
||||
const groupRaw = trimmed.slice(openIndex + 1, closeIndex);
|
||||
const options = splitBookmarkGroupOptions(groupRaw);
|
||||
|
||||
if (options.length) {
|
||||
const expanded = [];
|
||||
variants.forEach((prefix) => {
|
||||
options.forEach((option) => {
|
||||
expanded.push(`${prefix}${option}`);
|
||||
});
|
||||
});
|
||||
variants.splice(0, variants.length, ...expanded);
|
||||
} else {
|
||||
const literalGroup = trimmed.slice(openIndex, closeIndex + 1);
|
||||
for (let i = 0; i < variants.length; i += 1) {
|
||||
variants[i] = `${variants[i]}${literalGroup}`;
|
||||
}
|
||||
}
|
||||
|
||||
cursor = closeIndex + 1;
|
||||
}
|
||||
|
||||
return variants
|
||||
.map((variant) => variant.trim())
|
||||
.filter(Boolean);
|
||||
}
|
||||
|
||||
function buildBookmarkSearchQueries(baseQuery) {
|
||||
const trimmed = typeof baseQuery === 'string' ? baseQuery.trim() : '';
|
||||
if (!trimmed) {
|
||||
return [...BOOKMARK_SUFFIXES];
|
||||
}
|
||||
|
||||
return BOOKMARK_SUFFIXES.map((suffix) => `${trimmed} ${suffix}`.trim());
|
||||
const baseVariants = expandBookmarkQueryVariants(trimmed);
|
||||
if (!baseVariants.length) {
|
||||
return BOOKMARK_SUFFIXES.map((suffix) => `${trimmed} ${suffix}`.trim());
|
||||
}
|
||||
|
||||
const queries = [];
|
||||
baseVariants.forEach((variant) => {
|
||||
BOOKMARK_SUFFIXES.forEach((suffix) => {
|
||||
queries.push(`${variant} ${suffix}`.trim());
|
||||
});
|
||||
});
|
||||
|
||||
return [...new Set(queries)];
|
||||
}
|
||||
|
||||
function openBookmarkQueries(baseQuery) {
|
||||
|
||||
@@ -283,24 +283,23 @@
|
||||
.automation-view .auto-table .sort-indicator {
|
||||
display: inline-block;
|
||||
margin-left: 6px;
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border: 5px solid transparent;
|
||||
border-bottom: 0;
|
||||
border-left: 0;
|
||||
transform: rotate(45deg);
|
||||
opacity: 0.25;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
background-color: var(--automation-muted);
|
||||
-webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='black' d='M4 6l4 4 4-4z'/></svg>") no-repeat center / contain;
|
||||
mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='black' d='M4 6l4 4 4-4z'/></svg>") no-repeat center / contain;
|
||||
opacity: 0.35;
|
||||
}
|
||||
|
||||
.automation-view .auto-table th.sort-asc .sort-indicator {
|
||||
border-top: 6px solid var(--automation-accent-2);
|
||||
transform: rotate(225deg);
|
||||
background-color: var(--automation-accent-2);
|
||||
transform: rotate(180deg);
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.automation-view .auto-table th.sort-desc .sort-indicator {
|
||||
border-top: 6px solid var(--automation-accent-2);
|
||||
transform: rotate(45deg);
|
||||
background-color: var(--automation-accent-2);
|
||||
transform: rotate(0deg);
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
|
||||
@@ -637,7 +637,7 @@
|
||||
<br><small>${formatDateTime(req.next_run_at)}</small>
|
||||
</td>
|
||||
<td data-sort="${untilSort}">
|
||||
<span class="until" data-sort="${untilSort}">${req.run_until ? formatRelative(req.run_until) : '—'}</span>
|
||||
<span class="runUntil until" data-sort="${untilSort}">${req.run_until ? formatRelative(req.run_until) : '—'}</span>
|
||||
<br><small>${formatDateTime(req.run_until)}</small>
|
||||
</td>
|
||||
<td data-sort="${lastSort}">
|
||||
|
||||
Reference in New Issue
Block a user