Session-Cards: buildSessionCard() Helper + Picker-Modal für Cronjob-Formular
- buildSessionCard(session, agent) Helper in ui.js (analog zu buildAgentCard) Erzeugt .card mit Avatar, Name, Badges (Agent, Kontext, Telegram) und Meta (Nachrichten, Archiv, Workspace) - Dashboard refactored: Session-Cards nutzen buildSessionCard() statt inline HTML - Cronjob-Formular: <select> für Session und Benachrichtigungs-Session durch klickbare Session-Cards + Picker-Modal ersetzt - openSessionPickerModal() mit filterWithAgent-Option (Session-Dropdown nur Sessions mit Agent, Notify-Dropdown alle Sessions) - CSS: .session-select-card und .session-select-change Klassen analog zu agent-*
This commit is contained in:
1 parent
92c20402eb
commit
e45498ac50
5 files changed
+176
-56
No files matched your search
@@ -1,3 +1,42 @@
|
||||
// ── Session Card Helper ──
|
||||
// Erzeugt ein .card-Element für eine Session (wiederverwendbar für Dashboard + Picker).
|
||||
// session: Session-Objekt, agent: zugehöriges Agent-Objekt (oder null)
|
||||
// Gibt ein DOM-Element zurück (.card mit .card-image + .card-body inkl. Badges + Meta).
|
||||
|
||||
function buildSessionCard(session, agent) {
|
||||
const card = document.createElement('div');
|
||||
card.className = 'card';
|
||||
|
||||
const scaleStyle = session.avatarScale && session.avatarScale !== 1 ? ` style="scale: ${session.avatarScale}"` : '';
|
||||
const imageHtml = session.image ? `<img src="${session.image}" alt=""${scaleStyle}>` : '';
|
||||
|
||||
// Badges
|
||||
const badges = [];
|
||||
if (agent) badges.push(`<span class="badge">${esc(agent.name)}</span>`);
|
||||
if (session.context) badges.push(`<span class="badge badge-feature" title="${esc(session.context)}"><i class="fa fa-file-text-o"></i></span>`);
|
||||
if (session.telegramConfigured) badges.push(`<span class="badge ${session.telegramLinked ? 'badge-feature' : 'badge-off'}" title="Telegram ${session.telegramLinked ? 'verbunden' : 'konfiguriert'}"><i class="fa fa-paper-plane"></i></span>`);
|
||||
|
||||
// Meta
|
||||
const metaParts = [];
|
||||
if (session.messageCount) metaParts.push(`<span class="card-meta-item"><i class="fa fa-comment"></i> ${esc(session.messageCount + ' Nachrichten')}</span>`);
|
||||
if (session.archiveMessageCount) metaParts.push(`<span class="card-meta-item"><i class="fa fa-archive"></i> ${esc(session.archiveMessageCount + ' Nachrichten archiviert')}</span>`);
|
||||
if (session.workspace) metaParts.push(`<span class="card-meta-item card-workspace" title="${esc(session.workspace)}"><i class="fa fa-folder"></i> ${esc(session.workspace)}</span>`);
|
||||
|
||||
card.innerHTML = `
|
||||
<div class="card-image">${imageHtml}</div>
|
||||
<div class="card-body">
|
||||
<div class="card-title-row">
|
||||
<span class="card-title">${esc(session.name || 'Unbenannt')}</span>
|
||||
${badges.join('')}
|
||||
</div>
|
||||
${metaParts.length ? `<div class="card-meta">${metaParts.join('')}</div>` : ''}
|
||||
</div>
|
||||
`;
|
||||
|
||||
return card;
|
||||
}
|
||||
|
||||
|
||||
// ── Agent Card Helper ──
|
||||
// Erzeugt ein .card-Element für einen Agent (wiederverwendbar für Dashboard + Picker).
|
||||
// agent: Agent-Objekt, skills: Array von Skills (optional)
|
||||
|
||||
Reference in new issue
Block a user