Show emoji votes and my vote in results
This commit is contained in:
@@ -34,6 +34,11 @@ public static class ResultsEndpoints
|
|||||||
Total = s.Votes.Sum(v => v.Score),
|
Total = s.Votes.Sum(v => v.Score),
|
||||||
Count = s.Votes.Count,
|
Count = s.Votes.Count,
|
||||||
Average = s.Votes.Count == 0 ? 0 : s.Votes.Average(v => v.Score),
|
Average = s.Votes.Count == 0 ? 0 : s.Votes.Average(v => v.Score),
|
||||||
|
Votes = s.Votes.Select(v => v.Score).ToList(),
|
||||||
|
MyVote = s.Votes
|
||||||
|
.Where(v => v.PlayerId == player.Id)
|
||||||
|
.Select(v => (int?)v.Score)
|
||||||
|
.FirstOrDefault(),
|
||||||
s.ScreenshotUrl,
|
s.ScreenshotUrl,
|
||||||
s.YoutubeUrl,
|
s.YoutubeUrl,
|
||||||
s.GameUrl,
|
s.GameUrl,
|
||||||
|
|||||||
@@ -71,9 +71,8 @@ const translations = {
|
|||||||
"results.rank": "Rank",
|
"results.rank": "Rank",
|
||||||
"results.game": "Game",
|
"results.game": "Game",
|
||||||
"results.author": "Author",
|
"results.author": "Author",
|
||||||
"results.votes": "Votes",
|
"results.votesList": "Votes",
|
||||||
"results.avg": "Average",
|
"results.myVote": "Your vote",
|
||||||
"results.total": "Total",
|
|
||||||
"results.links": "Links",
|
"results.links": "Links",
|
||||||
"results.link.site": "Site ↗",
|
"results.link.site": "Site ↗",
|
||||||
"results.link.youtube": "YouTube ↗",
|
"results.link.youtube": "YouTube ↗",
|
||||||
@@ -177,9 +176,8 @@ const translations = {
|
|||||||
"results.rank": "Rang",
|
"results.rank": "Rang",
|
||||||
"results.game": "Spiel",
|
"results.game": "Spiel",
|
||||||
"results.author": "Autor",
|
"results.author": "Autor",
|
||||||
"results.votes": "Stimmen",
|
"results.votesList": "Stimmen (Emojis)",
|
||||||
"results.avg": "Durchschnitt",
|
"results.myVote": "Deine Stimme",
|
||||||
"results.total": "Gesamt",
|
|
||||||
"results.links": "Links",
|
"results.links": "Links",
|
||||||
"results.link.site": "Webseite ↗",
|
"results.link.site": "Webseite ↗",
|
||||||
"results.link.youtube": "YouTube ↗",
|
"results.link.youtube": "YouTube ↗",
|
||||||
|
|||||||
@@ -216,9 +216,8 @@ export function renderResults() {
|
|||||||
<th>${t("results.rank")}</th>
|
<th>${t("results.rank")}</th>
|
||||||
<th>${t("results.game")}</th>
|
<th>${t("results.game")}</th>
|
||||||
<th>${t("results.author")}</th>
|
<th>${t("results.author")}</th>
|
||||||
<th>${t("results.votes")}</th>
|
<th>${t("results.votesList")}</th>
|
||||||
<th>${t("results.avg")}</th>
|
<th>${t("results.myVote")}</th>
|
||||||
<th>${t("results.total")}</th>
|
|
||||||
<th>${t("results.links")}</th>
|
<th>${t("results.links")}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@@ -240,9 +239,8 @@ export function renderResults() {
|
|||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="author-cell">${r.author ?? "—"}</td>
|
<td class="author-cell">${r.author ?? "—"}</td>
|
||||||
<td>${r.count}</td>
|
<td>${formatVotes(r.votes)}</td>
|
||||||
<td>${r.average.toFixed(1)}</td>
|
<td>${formatMyVote(r.myVote)}</td>
|
||||||
<td>${r.total}</td>
|
|
||||||
<td>
|
<td>
|
||||||
${r.gameUrl ? `<a class="link compact" href="${r.gameUrl}" target="_blank" rel="noopener">${t("results.link.site")}</a><br>` : ''}
|
${r.gameUrl ? `<a class="link compact" href="${r.gameUrl}" target="_blank" rel="noopener">${t("results.link.site")}</a><br>` : ''}
|
||||||
${r.youtubeUrl ? `<a class="link compact" href="${r.youtubeUrl}" target="_blank" rel="noopener">${t("results.link.youtube")}</a>` : ''}
|
${r.youtubeUrl ? `<a class="link compact" href="${r.youtubeUrl}" target="_blank" rel="noopener">${t("results.link.youtube")}</a>` : ''}
|
||||||
@@ -587,6 +585,17 @@ export function neutralEmoji() {
|
|||||||
return "😐";
|
return "😐";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatVotes(votes) {
|
||||||
|
if (!Array.isArray(votes) || votes.length === 0) return "—";
|
||||||
|
const sorted = [...votes].sort((a, b) => a - b);
|
||||||
|
return sorted.map((v) => scoreToEmoji(v)).join(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatMyVote(score) {
|
||||||
|
if (score == null || Number.isNaN(score)) return "—";
|
||||||
|
return `${score} ${scoreToEmoji(score)}`;
|
||||||
|
}
|
||||||
|
|
||||||
function isValidImageUrl(url) {
|
function isValidImageUrl(url) {
|
||||||
if (!url) return true;
|
if (!url) return true;
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user