refactor(js): 4. Iteration – Card-Preview-Helper, Button-Loading, Stream-Events vereinfacht

Neue Helper:
- _renderCardPreview(): Gemeinsamer Helper für Agent/Session-Card-Vorschau
  (ersetzt renderAgentInCard + renderSessionSelectCard Duplikate)
- withButtonLoading(btn, text, fn): Eliminiert ~15x identisches
  disable/text/try/finally/reset Pattern in allen Pages
- formatDate(): Nach ui-helpers.js verschoben (war in dashboard.js)
- createMDE(): maxHeight-Option hinzugefügt

Dedupliziert:
- handleStreamEvent: 12 Preparer/Review/Finalizer cases → 7 durch
  case-Grouping (start/text/tool_use shared)
- _escCmdAttr() entfernt → nutzt jetzt esc() aus ui-helpers.js
- feInitEasyMDE() nutzt jetzt createMDE() statt eigener EasyMDE-Init

Betroffene Dateien: ui-helpers.js, chat.js, commands-ui.js,
file-explorer.js, dashboard.js, session-page.js, cronjob-page.js,
profile-page.js, admin-page.js, server-settings-page.js, settings-page.js
This commit is contained in:
Meleki committed 2026-03-07 22:34:37 +01:00
1 parent e4ccaf9dee
commit e930268476
11 files changed
+137 -196

No files matched your search

+2 -6
View File
@@ -99,9 +99,7 @@ registerPage('server-settings', {
}
// Speichern
saveBtn.addEventListener('click', async function() {
saveBtn.disabled = true;
saveBtn.addEventListener('click', () => withButtonLoading(saveBtn, 'Speichern...', async () => {
try {
var data = {};
for (var j = 0; j < settings.length; j++) {
@@ -122,10 +120,8 @@ registerPage('server-settings', {
showToast(result.hint || 'Einstellungen gespeichert');
} catch (err) {
showToast(err.message, 'error');
} finally {
saveBtn.disabled = false;
}
});
}));
} catch (err) {
container.innerHTML = '<p class="form-error">Fehler beim Laden: ' + esc(err.message) + '</p>';