Fix: Routen-Bewertungen (Kommentare) waren für niemanden sichtbar
UI.ratingStars lud die Bewertungen via API, speicherte/renderte das ratings-Array aber nie — nur Durchschnitt+Anzahl. Jetzt wird die Liste aller Bewertungen mit Kommentar (Name + Sterne + Text) angezeigt; nach dem Speichern neu geladen. Backend war korrekt. SW v1168
This commit is contained in:
parent
78866206b4
commit
7945087a6c
6 changed files with 39 additions and 20 deletions
|
|
@ -1251,6 +1251,7 @@ const UI = (() => {
|
|||
let _myKommentar = '';
|
||||
let _hoverStar = 0;
|
||||
let _widgetOpen = false;
|
||||
let _ratings = []; // alle Bewertungen (mit Kommentar) für die Liste
|
||||
|
||||
function _starHTML(filled, half = false, idx = 0) {
|
||||
const cls = filled ? 'rating-star rating-star--filled' : (half ? 'rating-star rating-star--half' : 'rating-star rating-star--empty');
|
||||
|
|
@ -1289,6 +1290,24 @@ const UI = (() => {
|
|||
`;
|
||||
}
|
||||
|
||||
function _renderRatingsList() {
|
||||
const items = _ratings.filter(r => r.kommentar && r.kommentar.trim());
|
||||
if (!items.length) return '';
|
||||
return `
|
||||
<div style="margin-top:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)">
|
||||
${items.map(r => `
|
||||
<div style="background:var(--c-surface-2);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3)">
|
||||
<div style="display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin-bottom:2px">
|
||||
<span style="font-weight:var(--weight-semibold);font-size:var(--text-sm);color:var(--c-text)">${escape(r.user_name || 'Anonym')}</span>
|
||||
<span style="color:#f59e0b;font-size:var(--text-sm);letter-spacing:1px;flex-shrink:0">${'★'.repeat(r.stars)}<span style="color:var(--c-border)">${'★'.repeat(Math.max(0, 5 - r.stars))}</span></span>
|
||||
</div>
|
||||
<div style="font-size:var(--text-sm);color:var(--c-text-secondary);line-height:1.45;white-space:pre-wrap;word-break:break-word">${escape(r.kommentar)}</div>
|
||||
</div>
|
||||
`).join('')}
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
function _render() {
|
||||
const avgLabel = _anzahl > 0
|
||||
? `${_avgStars.toFixed(1)} (${_anzahl} Bewertung${_anzahl !== 1 ? 'en' : ''})`
|
||||
|
|
@ -1307,6 +1326,7 @@ const UI = (() => {
|
|||
${rateHint}
|
||||
</div>
|
||||
${_widgetOpen ? _renderWidget() : ''}
|
||||
${_renderRatingsList()}
|
||||
`;
|
||||
|
||||
// Events
|
||||
|
|
@ -1365,13 +1385,11 @@ const UI = (() => {
|
|||
if (saveBtn) { saveBtn.disabled = true; saveBtn.textContent = '…'; }
|
||||
const komm = document.getElementById(`rw-komm-${containerId}`)?.value?.trim() || null;
|
||||
try {
|
||||
const res = await API.ratings.rate(targetType, targetId, _myStars, komm);
|
||||
_avgStars = res.bewertung;
|
||||
_anzahl = res.anz_bewertungen;
|
||||
await API.ratings.rate(targetType, targetId, _myStars, komm);
|
||||
_myKommentar = komm || '';
|
||||
_widgetOpen = false;
|
||||
_hoverStar = 0;
|
||||
_render();
|
||||
await _load(); // frische Liste + Durchschnitt inkl. eigener Bewertung
|
||||
toast.success('Bewertung gespeichert!');
|
||||
} catch (err) {
|
||||
toast.error(err?.message || 'Fehler beim Speichern.');
|
||||
|
|
@ -1388,6 +1406,7 @@ const UI = (() => {
|
|||
]);
|
||||
_avgStars = overview.bewertung || 0;
|
||||
_anzahl = overview.anz_bewertungen || 0;
|
||||
_ratings = Array.isArray(overview.ratings) ? overview.ratings : [];
|
||||
_myStars = mine.stars || null;
|
||||
_myKommentar = mine.kommentar || '';
|
||||
} catch (e) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue