Adjust start.gg layout and admin-only tournament listing

This commit is contained in:
Pandipipas
2026-02-16 00:07:55 +01:00
parent a83f633506
commit 165482a7e0
2 changed files with 139 additions and 120 deletions
+138 -119
View File
@@ -270,135 +270,141 @@ onMounted(() => {
/>
</div>
<QCard
flat
bordered
class="q-pa-md"
>
<div class="text-h6 q-mb-sm">
Integración start.gg
</div>
<div class="text-caption q-mb-md">
Pega tu token personal de start.gg para cargar automáticamente tus torneos recientes y sus inscritos.
</div>
<div class="row q-col-gutter-sm items-center">
<div class="col-12 col-md-7">
<div class="players-content row q-col-gutter-md">
<div class="col players-main-column">
<div class="row items-center q-gutter-sm q-mb-md">
<QInput
v-model="startGGToken"
label="start.gg API Token"
v-model="filter"
dense
outlined
type="password"
/>
</div>
<div class="col-auto">
placeholder="Search..."
class="players-search players-underlined-field"
clearable
>
<template #prepend>
<QIcon name="search" />
</template>
</QInput>
<QBtn
color="secondary"
icon="sync"
label="Cargar torneos"
:loading="loadingTournaments"
@click="loadRecentTournaments"
outline
icon="file_upload"
label="Import"
@click="triggerImport"
/>
<QBtn
color="secondary"
outline
icon="file_download"
label="Export"
@click="exportPlayers"
/>
<input
ref="fileInput"
type="file"
class="visually-hidden"
accept="application/json"
@change="handleImport"
>
</div>
</div>
<div
v-if="tournamentsError"
class="text-negative q-mt-sm"
>
{{ tournamentsError }}
</div>
<QList
v-if="recentTournaments.length"
bordered
separator
class="q-mt-md startgg-tournaments-list"
>
<QItem
v-for="tournament in recentTournaments"
:key="tournament.id"
clickable
<QTable
flat
bordered
row-key="id"
:rows="rows"
:columns="columns"
:filter="filter"
:rows-per-page-options="[10, 20, 50]"
>
<QItemSection>
<QItemLabel>{{ tournament.name }}</QItemLabel>
<QItemLabel caption>
{{ tournament.slug }}
</QItemLabel>
</QItemSection>
<QItemSection side>
<QBtn
color="primary"
unelevated
label="Importar jugadores"
@click.stop="openStartGGImportDialog(tournament)"
/>
</QItemSection>
</QItem>
</QList>
</QCard>
<template #body-cell-actions="{ row }">
<QTd align="right">
<QBtn
size="sm"
flat
icon="edit"
@click="openEditDialog(row)"
/>
<QBtn
size="sm"
flat
color="negative"
icon="delete"
@click="deletePlayer(row)"
/>
</QTd>
</template>
</QTable>
</div>
<div class="row items-center q-gutter-sm q-mb-md">
<QInput
v-model="filter"
dense
placeholder="Search..."
class="players-search players-underlined-field"
clearable
>
<template #prepend>
<QIcon name="search" />
</template>
</QInput>
<QBtn
color="secondary"
outline
icon="file_upload"
label="Import"
@click="triggerImport"
/>
<QBtn
color="secondary"
outline
icon="file_download"
label="Export"
@click="exportPlayers"
/>
<input
ref="fileInput"
type="file"
class="visually-hidden"
accept="application/json"
@change="handleImport"
>
<div class="col-12 col-lg-4 players-startgg-column">
<QCard
flat
bordered
class="q-pa-md"
>
<div class="text-h6 q-mb-sm">
Integración start.gg
</div>
<div class="text-caption q-mb-md">
Pega tu token personal de start.gg para cargar automáticamente tus torneos creados o donde eres admin.
</div>
<div class="row q-col-gutter-sm items-center">
<div class="col-12">
<QInput
v-model="startGGToken"
label="start.gg API Token"
dense
outlined
type="password"
/>
</div>
<div class="col-12">
<QBtn
color="secondary"
icon="sync"
label="Cargar torneos"
:loading="loadingTournaments"
@click="loadRecentTournaments"
/>
</div>
</div>
<div
v-if="tournamentsError"
class="text-negative q-mt-sm"
>
{{ tournamentsError }}
</div>
<QList
v-if="recentTournaments.length"
bordered
separator
class="q-mt-md startgg-tournaments-list"
>
<QItem
v-for="tournament in recentTournaments"
:key="tournament.id"
clickable
>
<QItemSection>
<QItemLabel>{{ tournament.name }}</QItemLabel>
<QItemLabel caption>
{{ tournament.slug }}
</QItemLabel>
</QItemSection>
<QItemSection side>
<QBtn
color="primary"
unelevated
label="Importar jugadores"
@click.stop="openStartGGImportDialog(tournament)"
/>
</QItemSection>
</QItem>
</QList>
</QCard>
</div>
</div>
<QTable
flat
bordered
row-key="id"
:rows="rows"
:columns="columns"
:filter="filter"
:rows-per-page-options="[10, 20, 50]"
>
<template #body-cell-actions="{ row }">
<QTd align="right">
<QBtn
size="sm"
flat
icon="edit"
@click="openEditDialog(row)"
/>
<QBtn
size="sm"
flat
color="negative"
icon="delete"
@click="deletePlayer(row)"
/>
</QTd>
</template>
</QTable>
<QDialog v-model="isImportDialogOpen">
<QCard class="players-dialog">
<QCardSection>
@@ -541,6 +547,19 @@ onMounted(() => {
min-width: 240px;
}
.players-content {
align-items: flex-start;
}
.players-main-column {
min-width: 0;
flex: 1 1 auto;
}
.players-startgg-column {
min-width: 320px;
}
.players-dialog {
min-width: 320px;
width: min(720px, 90vw);
+1 -1
View File
@@ -89,7 +89,7 @@ nodecg.listenFor('startgg:fetchRecentTournaments', async (payload: unknown, ack)
const query = `
query RecentTournaments($perPage: Int!) {
currentUser {
tournaments(query: { perPage: $perPage }) {
tournaments(query: { perPage: $perPage, filter: { tournamentView: "admin" } }) {
nodes {
id
name