OfferControls simplificado

This commit is contained in:
2025-08-15 23:41:29 -06:00
parent 9c8a4814eb
commit cc0a628145
2 changed files with 268 additions and 42 deletions

View File

@@ -17,19 +17,37 @@
<span class="search-icon">🔍</span>
</div>
<div class="uuids-grid" v-if="!loading">
<div
v-for="(uuidInfo, index) in filteredUuids"
:key="uuidInfo.uuid"
class="uuid-card"
:class="{ 'has-name': uuidInfo.hasName }"
@click="selectUuid(uuidInfo.uuid)"
@contextmenu.prevent="showContextMenu($event, uuidInfo)"
:style="{ animationDelay: `${index * 0.02}s` }"
>
<div class="uuid-number">{{ getUuidIndex(uuidInfo.uuid) }}</div>
<div v-if="uuidInfo.name" class="player-name">{{ uuidInfo.name }}</div>
<div class="uuid-text">{{ formatUuid(uuidInfo.uuid) }}</div>
<!-- Loading State -->
<div v-if="loading" class="loading">
<div class="spinner"></div>
<p>Cargando UUIDs...</p>
</div>
<!-- Loaded Content -->
<div v-else>
<div class="uuids-grid">
<div
v-for="(uuidInfo, index) in filteredUuids"
:key="uuidInfo.uuid"
class="uuid-card"
:class="{ 'has-name': uuidInfo.hasName }"
@click="selectUuid(uuidInfo.uuid)"
@contextmenu.prevent="showContextMenu($event, uuidInfo)"
:style="{ animationDelay: `${index * 0.02}s` }"
>
<div class="uuid-number">{{ getUuidIndex(uuidInfo.uuid) }}</div>
<div v-if="uuidInfo.name" class="player-name">{{ uuidInfo.name }}</div>
<div class="uuid-text">{{ formatUuid(uuidInfo.uuid) }}</div>
</div>
</div>
<div class="quick-actions">
<button @click="selectRandom" class="btn-random">
🎲 Seleccionar Aleatorio
</button>
<button @click="goToDashboard" class="btn-dashboard">
🎛 Dashboard Admin
</button>
</div>
</div>
@@ -74,20 +92,6 @@
</div>
</div>
</div>
<div v-else class="loading">
<div class="spinner"></div>
<p>Cargando UUIDs...</p>
</div>
<div class="quick-actions">
<button @click="selectRandom" class="btn-random">
🎲 Seleccionar Aleatorio
</button>
<button @click="goToDashboard" class="btn-dashboard">
🎛 Dashboard Admin
</button>
</div>
</div>
</div>
</template>
@@ -131,10 +135,26 @@ const printModal = ref({
onMounted(async () => {
try {
console.log('Loading UUIDs with names...');
const response = await fetch(`${import.meta.env.VITE_API_URL || 'http://localhost:3000/api'}/admin/uuids-with-names`);
const data = await response.json();
allUuids.value = data.uuids || [];
filteredUuids.value = allUuids.value; // Show all UUIDs
if (!response.ok) {
console.warn('Failed to fetch uuids-with-names, trying fallback...');
// Fallback to regular UUIDs endpoint
const fallbackResponse = await fetch(`${import.meta.env.VITE_API_URL || 'http://localhost:3000/api'}/admin/uuids`);
const fallbackData = await fallbackResponse.json();
allUuids.value = (fallbackData.uuids || []).map((uuid: string) => ({
uuid,
name: null,
hasName: false
}));
} else {
const data = await response.json();
allUuids.value = data.uuids || [];
}
filteredUuids.value = allUuids.value;
console.log(`Loaded ${allUuids.value.length} UUIDs`);
} catch (error) {
console.error('Failed to load UUIDs:', error);
allUuids.value = [];
@@ -192,10 +212,8 @@ function showContextMenu(event: MouseEvent, uuidInfo: UuidInfo) {
}
// Hide context menu when clicking elsewhere
onMounted(() => {
document.addEventListener('click', () => {
contextMenu.value.visible = false;
});
document.addEventListener('click', () => {
contextMenu.value.visible = false;
});
// QR Print functions