161 lines
8.8 KiB
JavaScript
161 lines
8.8 KiB
JavaScript
import { ref, computed, mergeProps, unref, useSSRContext } from 'vue';
|
|
import { ssrRenderAttrs, ssrRenderList, ssrRenderClass, ssrInterpolate, ssrRenderComponent } from 'vue/server-renderer';
|
|
import { Trophy } from 'lucide-vue-next';
|
|
import { u as useHead } from './composables-CK-Mp9jS.mjs';
|
|
import './server.mjs';
|
|
import '../nitro/nitro.mjs';
|
|
import 'node:http';
|
|
import 'node:https';
|
|
import 'node:events';
|
|
import 'node:buffer';
|
|
import 'node:fs';
|
|
import 'node:path';
|
|
import 'node:crypto';
|
|
import 'node:url';
|
|
import '../routes/renderer.mjs';
|
|
import 'vue-bundle-renderer/runtime';
|
|
import 'unhead/server';
|
|
import 'devalue';
|
|
import 'unhead/utils';
|
|
import 'pinia';
|
|
import 'vue-router';
|
|
|
|
const _sfc_main = {
|
|
__name: "vereinsmeisterschaften",
|
|
__ssrInlineRender: true,
|
|
setup(__props) {
|
|
const results = ref([]);
|
|
const selectedYear = ref("alle");
|
|
const verfuegbareJahre = computed(() => {
|
|
const jahre = [...new Set(results.value.map((r) => r.jahr).filter((j) => j !== ""))];
|
|
return jahre.sort((a, b) => b - a);
|
|
});
|
|
const filteredResults = computed(() => {
|
|
if (selectedYear.value === "alle") {
|
|
return results.value;
|
|
}
|
|
return results.value.filter((r) => r.jahr === selectedYear.value);
|
|
});
|
|
const groupedResults = computed(() => {
|
|
const grouped = {};
|
|
filteredResults.value.forEach((result) => {
|
|
if (!grouped[result.jahr]) {
|
|
grouped[result.jahr] = {
|
|
kategorien: {},
|
|
bemerkungen: null
|
|
};
|
|
}
|
|
if (result.bemerkung && result.bemerkung !== "") {
|
|
grouped[result.jahr].bemerkungen = result.bemerkung;
|
|
return;
|
|
}
|
|
if (result.kategorie && result.kategorie !== "") {
|
|
if (!grouped[result.jahr].kategorien[result.kategorie]) {
|
|
grouped[result.jahr].kategorien[result.kategorie] = [];
|
|
}
|
|
grouped[result.jahr].kategorien[result.kategorie].push(result);
|
|
}
|
|
});
|
|
return grouped;
|
|
});
|
|
const sortedGroupedResults = computed(() => {
|
|
const sorted = {};
|
|
const jahre = Object.keys(groupedResults.value).sort((a, b) => b - a);
|
|
jahre.forEach((jahr) => {
|
|
sorted[jahr] = groupedResults.value[jahr];
|
|
});
|
|
return sorted;
|
|
});
|
|
const sortedJahre = computed(() => {
|
|
return Object.keys(groupedResults.value).sort((a, b) => b - a);
|
|
});
|
|
const totalWinners = computed(() => {
|
|
return results.value.filter((r) => r.kategorie === "Einzel" && r.platz === "1").length;
|
|
});
|
|
const totalDoubles = computed(() => {
|
|
return results.value.filter((r) => r.kategorie === "Doppel" && r.platz === "1").length;
|
|
});
|
|
useHead({
|
|
title: "Vereinsmeisterschaften - Harheimer TC"
|
|
});
|
|
return (_ctx, _push, _parent, _attrs) => {
|
|
_push(`<div${ssrRenderAttrs(mergeProps({ class: "min-h-full py-16 bg-gray-50" }, _attrs))}><div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"><h1 class="text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-6"> Vereinsmeisterschaften </h1><div class="w-24 h-1 bg-primary-600 mb-8"></div><p class="text-xl text-gray-600 mb-12"> Die Ergebnisse unserer Vereinsmeisterschaften der letzten Jahre </p><div class="mb-8 flex flex-wrap gap-4"><!--[-->`);
|
|
ssrRenderList(verfuegbareJahre.value, (jahr) => {
|
|
_push(`<button class="${ssrRenderClass([
|
|
"px-4 py-2 rounded-lg font-medium transition-colors",
|
|
selectedYear.value === jahr ? "bg-primary-600 text-white" : "bg-white text-gray-700 hover:bg-gray-100 border border-gray-300"
|
|
])}">${ssrInterpolate(jahr)}</button>`);
|
|
});
|
|
_push(`<!--]--><button class="${ssrRenderClass([
|
|
"px-4 py-2 rounded-lg font-medium transition-colors",
|
|
selectedYear.value === "alle" ? "bg-primary-600 text-white" : "bg-white text-gray-700 hover:bg-gray-100 border border-gray-300"
|
|
])}"> Alle Jahre </button></div>`);
|
|
if (filteredResults.value.length > 0) {
|
|
_push(`<div class="space-y-8"><!--[-->`);
|
|
ssrRenderList(sortedJahre.value, (jahr) => {
|
|
_push(`<div class="bg-white rounded-xl shadow-lg p-6"><h2 class="text-2xl font-display font-bold text-gray-900 mb-6 flex items-center">`);
|
|
_push(ssrRenderComponent(unref(Trophy), {
|
|
size: 28,
|
|
class: "text-primary-600 mr-3"
|
|
}, null, _parent));
|
|
_push(` ${ssrInterpolate(jahr)}</h2>`);
|
|
if (sortedGroupedResults.value[jahr]?.bemerkungen) {
|
|
_push(`<div class="mb-6 p-4 bg-yellow-50 border border-yellow-200 rounded-lg"><p class="text-yellow-800 font-medium">${ssrInterpolate(sortedGroupedResults.value[jahr].bemerkungen)}</p></div>`);
|
|
} else {
|
|
_push(`<!---->`);
|
|
}
|
|
if (sortedGroupedResults.value[jahr]?.kategorien) {
|
|
_push(`<div class="space-y-6"><!--[-->`);
|
|
ssrRenderList(sortedGroupedResults.value[jahr].kategorien, (kategorieData, kategorie) => {
|
|
_push(`<div class="border-l-4 border-primary-600 pl-4"><h3 class="text-xl font-semibold text-gray-900 mb-4">${ssrInterpolate(kategorie)}</h3><div class="grid gap-3"><!--[-->`);
|
|
ssrRenderList(kategorieData, (ergebnis, index) => {
|
|
_push(`<div class="${ssrRenderClass([
|
|
"flex items-center justify-between p-3 rounded-lg",
|
|
ergebnis.platz === "1" ? "bg-yellow-50 border border-yellow-200" : ergebnis.platz === "2" ? "bg-gray-50 border border-gray-200" : ergebnis.platz === "3" ? "bg-orange-50 border border-orange-200" : "bg-gray-100"
|
|
])}"><div class="flex items-center"><div class="${ssrRenderClass([
|
|
"w-8 h-8 rounded-full flex items-center justify-center text-sm font-bold mr-3",
|
|
ergebnis.platz === "1" ? "bg-yellow-500 text-white" : ergebnis.platz === "2" ? "bg-gray-400 text-white" : ergebnis.platz === "3" ? "bg-orange-500 text-white" : "bg-gray-300 text-gray-700"
|
|
])}">${ssrInterpolate(ergebnis.platz)}</div><div><span class="font-semibold text-gray-900">${ssrInterpolate(ergebnis.spieler1)} `);
|
|
if (ergebnis.spieler2) {
|
|
_push(`<span class="text-gray-600"> / ${ssrInterpolate(ergebnis.spieler2)}</span>`);
|
|
} else {
|
|
_push(`<!---->`);
|
|
}
|
|
_push(`</span></div></div><div class="text-sm text-gray-500">${ssrInterpolate(ergebnis.platz === "1" ? "Vereinsmeister" : ergebnis.platz + ". Platz")}</div></div>`);
|
|
});
|
|
_push(`<!--]--></div></div>`);
|
|
});
|
|
_push(`<!--]--></div>`);
|
|
} else {
|
|
_push(`<!---->`);
|
|
}
|
|
_push(`</div>`);
|
|
});
|
|
_push(`<!--]--></div>`);
|
|
} else {
|
|
_push(`<div class="text-center py-12 bg-white rounded-xl shadow-lg">`);
|
|
_push(ssrRenderComponent(unref(Trophy), {
|
|
size: 48,
|
|
class: "text-gray-400 mx-auto mb-4"
|
|
}, null, _parent));
|
|
_push(`<p class="text-gray-600">Keine Ergebnisse für das ausgewählte Jahr gefunden.</p></div>`);
|
|
}
|
|
_push(`<div class="mt-12 bg-gradient-to-r from-primary-600 to-primary-700 rounded-xl p-8 text-white"><h3 class="text-2xl font-display font-bold mb-6">Statistik</h3><div class="grid md:grid-cols-3 gap-6"><div class="text-center"><div class="text-3xl font-bold mb-2">${ssrInterpolate(verfuegbareJahre.value.length)}</div><div class="text-primary-100">Jahre mit Meisterschaften</div></div><div class="text-center"><div class="text-3xl font-bold mb-2">${ssrInterpolate(totalWinners.value)}</div><div class="text-primary-100">Einzelgewinner</div></div><div class="text-center"><div class="text-3xl font-bold mb-2">${ssrInterpolate(totalDoubles.value)}</div><div class="text-primary-100">Doppelgewinner</div></div></div></div><div class="mt-8 text-center"><div class="bg-white rounded-xl shadow-lg p-8 border-l-4 border-primary-600"><h3 class="text-2xl font-display font-bold text-gray-900 mb-4 flex items-center justify-center">`);
|
|
_push(ssrRenderComponent(unref(Trophy), {
|
|
size: 32,
|
|
class: "text-primary-600 mr-3"
|
|
}, null, _parent));
|
|
_push(` Herzlichen Glückwunsch! </h3><p class="text-lg text-gray-700 leading-relaxed"> Wir gratulieren allen Teilnehmern und Gewinnern der Vereinsmeisterschaften zu ihren großartigen Leistungen! </p><p class="text-lg text-gray-700 leading-relaxed mt-4"> Besonders stolz sind wir auf die kontinuierliche Teilnahme und den fairen Wettkampfgeist unserer Mitglieder. </p></div></div></div></div>`);
|
|
};
|
|
}
|
|
};
|
|
const _sfc_setup = _sfc_main.setup;
|
|
_sfc_main.setup = (props, ctx) => {
|
|
const ssrContext = useSSRContext();
|
|
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/vereinsmeisterschaften.vue");
|
|
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
|
};
|
|
|
|
export { _sfc_main as default };
|
|
//# sourceMappingURL=vereinsmeisterschaften-B9yng3Zq.mjs.map
|