Zusammenfassung-Kachel: Quellenverweise als klickbare Links
renderZusammenfassung bekommt jetzt sourcesJson und rendert [1], [2] etc. als klickbare Links -- identisch zu renderSummary.
Dieser Commit ist enthalten in:
@@ -851,7 +851,7 @@ const App = {
|
||||
if (incident.summary && incident.type === 'research') {
|
||||
const { zusammenfassung, remaining } = UI.extractZusammenfassung(incident.summary);
|
||||
if (zusammenfassung) {
|
||||
if (zusammenfassungText) zusammenfassungText.innerHTML = UI.renderZusammenfassung(zusammenfassung);
|
||||
if (zusammenfassungText) zusammenfassungText.innerHTML = UI.renderZusammenfassung(zusammenfassung, incident.sources_json);
|
||||
if (zusammenfassungCard) zusammenfassungCard.style.display = '';
|
||||
summaryText.innerHTML = UI.renderSummary(remaining, incident.sources_json, incident.type);
|
||||
} else {
|
||||
|
||||
@@ -712,8 +712,10 @@ const UI = {
|
||||
/**
|
||||
* Rendert die Zusammenfassung als HTML (Bullet Points).
|
||||
*/
|
||||
renderZusammenfassung(text) {
|
||||
renderZusammenfassung(text, sourcesJson) {
|
||||
if (!text) return '<span style="color:var(--text-disabled);">Noch keine Zusammenfassung.</span>';
|
||||
let sources = [];
|
||||
try { sources = JSON.parse(sourcesJson || '[]'); } catch(e) {}
|
||||
let html = this.escape(text);
|
||||
// Bullet points
|
||||
html = html.replace(/^- (.+)$/gm, '<li>$1</li>');
|
||||
@@ -721,6 +723,21 @@ const UI = {
|
||||
// Zeilenumbrueche
|
||||
html = html.replace(/\n(?!<)/g, '<br>');
|
||||
html = html.replace(/(<br>){2,}/g, '<br>');
|
||||
// Inline-Zitate als klickbare Links
|
||||
if (sources.length > 0) {
|
||||
html = html.replace(/\[(\d+[a-z]?)\]/g, (match, num) => {
|
||||
let src = sources.find(s => String(s.nr) === num || Number(s.nr) === Number(num));
|
||||
if ((!src || !src.url) && /[a-z]$/.test(num)) {
|
||||
const baseNum = num.replace(/[a-z]$/, '');
|
||||
const baseSrc = sources.find(s => String(s.nr) === baseNum || Number(s.nr) === Number(baseNum));
|
||||
if (baseSrc && baseSrc.url) src = baseSrc;
|
||||
}
|
||||
if (src && src.url) {
|
||||
return `<a href="${this.escape(src.url)}" target="_blank" rel="noopener" class="citation" title="${this.escape(src.name)}">[${num}]</a>`;
|
||||
}
|
||||
return match;
|
||||
});
|
||||
}
|
||||
return html;
|
||||
},
|
||||
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren