Scanner: Trefferliste per Klick auf die Spaltenüberschrift sortieren
- sort + dir serverseitig für Quote, Agent, Stelle, Unternehmen, Börse, Veröffentlicht, Status, Gefunden; leere Werte immer unten - neue Spalte Veröffentlicht (Alter der Anzeige, Datum im Tooltip) - Feld Sortierung bleibt als Schnellwahl Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
1ad774fdd2
commit
0aa8f17b28
@@ -253,15 +253,28 @@ router.get('/matches', async (req, res, next) => {
|
||||
}
|
||||
if (req.query.alarm === '1') where.push('m.alarm = 1');
|
||||
|
||||
const order =
|
||||
req.query.sort === 'score'
|
||||
? 'm.score DESC, m.created_at DESC'
|
||||
: req.query.sort === 'published'
|
||||
? 'j.published_at IS NULL, j.published_at DESC'
|
||||
: req.query.sort === 'oldest'
|
||||
? 'j.published_at IS NULL, j.published_at ASC'
|
||||
: // bekannte Firmen zuerst, dann neueste
|
||||
'known DESC, m.created_at DESC';
|
||||
/*
|
||||
* Sortierung: `sort` = Spalte, `dir` = asc|desc (Klick auf die Spalten-
|
||||
* ueberschrift). Serverseitig, weil die Liste begrenzt ist - im Browser
|
||||
* sortiert haette man nur den geladenen Ausschnitt geordnet.
|
||||
* Leere Werte (Anzeige ohne Datum, ohne Firma) stehen immer unten.
|
||||
*/
|
||||
const dir = req.query.dir === 'asc' ? 'ASC' : 'DESC';
|
||||
const nullsLast = (column) => `${column} IS NULL, ${column} ${dir}`;
|
||||
const SORTS = {
|
||||
score: `m.score ${dir}`,
|
||||
agent: `a.name ${dir}`,
|
||||
title: `j.title ${dir}`,
|
||||
company: nullsLast('j.company'),
|
||||
source: `j.source ${dir}`,
|
||||
status: `FIELD(m.status, 'neu', 'gesehen', 'in_bearbeitung', 'verworfen') ${dir}`,
|
||||
published: nullsLast('j.published_at'),
|
||||
created: `m.created_at ${dir}`,
|
||||
// Vorgabe: bekannte Firmen zuerst, dann neueste Funde
|
||||
known: `known ${dir}, m.created_at DESC`,
|
||||
};
|
||||
const sortKey = req.query.sort === 'oldest' ? 'published' : String(req.query.sort ?? 'known');
|
||||
const order = `${SORTS[sortKey] ?? SORTS.known}, m.id DESC`;
|
||||
|
||||
const limit = Math.min(Math.max(Number(req.query.limit) || 300, 1), 1000);
|
||||
const whereSql = where.length ? `WHERE ${where.join(' AND ')}` : '';
|
||||
|
||||
Reference in New Issue
Block a user