fix: mejorar visualización responsive en móvil para metabase-debug
Ajustes realizados: Components: - MetabaseCardDisplay: grid responsive, queries con wrap, botones apilables - MetabaseCardsTable: filtros verticales en móvil, acciones con wrap Page: - Header responsive con elementos apilados - Stats en grid 2x2 para móvil, 4 columnas en desktop - Tamaños de fuente adaptados con breakpoints Todas las queries SQL y JSON ahora usan whitespace-pre-wrap y break-words para aprovechar el espacio vertical en lugar de scroll horizontal.
This commit is contained in:
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
<!-- Card Details -->
|
<!-- Card Details -->
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
<div class="grid grid-cols-2 gap-4 text-sm">
|
<div class="grid grid-cols-1 sm:grid-cols-2 gap-3 text-sm">
|
||||||
<div>
|
<div>
|
||||||
<span class="font-medium">Database ID:</span>
|
<span class="font-medium">Database ID:</span>
|
||||||
<span class="ml-2">{{ card.database_id }}</span>
|
<span class="ml-2">{{ card.database_id }}</span>
|
||||||
@@ -41,12 +41,12 @@
|
|||||||
<summary class="cursor-pointer text-sm font-medium text-primary">
|
<summary class="cursor-pointer text-sm font-medium text-primary">
|
||||||
Ver SQL
|
Ver SQL
|
||||||
</summary>
|
</summary>
|
||||||
<pre class="mt-2 p-3 bg-gray-50 dark:bg-gray-900 rounded text-xs overflow-x-auto">{{ card.dataset_query.native.query }}</pre>
|
<pre class="mt-2 p-3 bg-gray-50 dark:bg-gray-900 rounded text-xs overflow-x-auto whitespace-pre-wrap break-words">{{ card.dataset_query.native.query }}</pre>
|
||||||
</details>
|
</details>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Actions -->
|
<!-- Actions -->
|
||||||
<div class="flex gap-2 mt-4 pt-4 border-t dark:border-gray-700">
|
<div class="flex flex-wrap gap-2 mt-4 pt-4 border-t dark:border-gray-700">
|
||||||
<UButton
|
<UButton
|
||||||
@click="executeQuery"
|
@click="executeQuery"
|
||||||
:loading="executing"
|
:loading="executing"
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
|
|
||||||
<!-- Query Results -->
|
<!-- Query Results -->
|
||||||
<div v-if="queryResult" class="mt-4">
|
<div v-if="queryResult" class="mt-4">
|
||||||
<div class="flex justify-between items-center mb-2">
|
<div class="flex flex-wrap justify-between items-center gap-2 mb-2">
|
||||||
<h4 class="font-medium text-sm">Resultados</h4>
|
<h4 class="font-medium text-sm">Resultados</h4>
|
||||||
<UBadge color="green">
|
<UBadge color="green">
|
||||||
{{ queryResult.data?.rows?.length || 0 }} filas en {{ queryResult.running_time || 0 }}ms
|
{{ queryResult.data?.rows?.length || 0 }} filas en {{ queryResult.running_time || 0 }}ms
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="overflow-x-auto">
|
<div class="overflow-x-auto">
|
||||||
<pre class="p-3 bg-gray-50 dark:bg-gray-900 rounded text-xs">{{ JSON.stringify(queryResult.data, null, 2) }}</pre>
|
<pre class="p-3 bg-gray-50 dark:bg-gray-900 rounded text-xs whitespace-pre-wrap break-words">{{ JSON.stringify(queryResult.data, null, 2) }}</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="space-y-4">
|
<div class="space-y-4">
|
||||||
<!-- Filters and Search -->
|
<!-- Filters and Search -->
|
||||||
<div class="flex gap-3">
|
<div class="flex flex-col sm:flex-row gap-3">
|
||||||
<UInput
|
<UInput
|
||||||
v-model="search"
|
v-model="search"
|
||||||
placeholder="Buscar por nombre o ID..."
|
placeholder="Buscar por nombre o ID..."
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
v-model="selectedFilter"
|
v-model="selectedFilter"
|
||||||
:options="filterOptions"
|
:options="filterOptions"
|
||||||
placeholder="Filtrar..."
|
placeholder="Filtrar..."
|
||||||
|
class="w-full sm:w-auto"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -46,7 +47,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template #actions-data="{ row }">
|
<template #actions-data="{ row }">
|
||||||
<div class="flex gap-1">
|
<div class="flex flex-wrap gap-1">
|
||||||
<UButton
|
<UButton
|
||||||
@click.stop="executeCard(row)"
|
@click.stop="executeCard(row)"
|
||||||
:loading="executingCards.has(row.id)"
|
:loading="executingCards.has(row.id)"
|
||||||
@@ -95,7 +96,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<div v-if="currentResult" class="space-y-3">
|
<div v-if="currentResult" class="space-y-3">
|
||||||
<div class="flex gap-4 text-sm">
|
<div class="flex flex-wrap gap-4 text-sm">
|
||||||
<div>
|
<div>
|
||||||
<span class="font-medium">Filas:</span>
|
<span class="font-medium">Filas:</span>
|
||||||
<span class="ml-2">{{ currentResult.data?.rows?.length || 0 }}</span>
|
<span class="ml-2">{{ currentResult.data?.rows?.length || 0 }}</span>
|
||||||
@@ -113,7 +114,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="overflow-x-auto max-h-96">
|
<div class="overflow-x-auto max-h-96">
|
||||||
<pre class="p-3 bg-gray-50 dark:bg-gray-900 rounded text-xs">{{ JSON.stringify(currentResult.data, null, 2) }}</pre>
|
<pre class="p-3 bg-gray-50 dark:bg-gray-900 rounded text-xs whitespace-pre-wrap break-words">{{ JSON.stringify(currentResult.data, null, 2) }}</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
<div class="container mx-auto px-4 py-8">
|
<div class="container mx-auto px-4 py-8">
|
||||||
<div class="space-y-6">
|
<div class="space-y-6">
|
||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<div class="flex justify-between items-start">
|
<div class="flex flex-col sm:flex-row sm:justify-between sm:items-start gap-4">
|
||||||
<div>
|
<div class="flex-1">
|
||||||
<h1 class="text-3xl font-bold">Metabase Debug</h1>
|
<h1 class="text-2xl sm:text-3xl font-bold">Metabase Debug</h1>
|
||||||
<p class="text-gray-600 dark:text-gray-400 mt-1">
|
<p class="text-sm sm:text-base text-gray-600 dark:text-gray-400 mt-1">
|
||||||
Herramienta de debugging para queries de Metabase
|
Herramienta de debugging para queries de Metabase
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -16,38 +16,39 @@
|
|||||||
icon="i-heroicons-arrow-path"
|
icon="i-heroicons-arrow-path"
|
||||||
color="primary"
|
color="primary"
|
||||||
variant="soft"
|
variant="soft"
|
||||||
|
class="w-full sm:w-auto"
|
||||||
>
|
>
|
||||||
Actualizar
|
Actualizar
|
||||||
</UButton>
|
</UButton>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Stats -->
|
<!-- Stats -->
|
||||||
<div class="grid grid-cols-1 md:grid-cols-4 gap-4">
|
<div class="grid grid-cols-2 sm:grid-cols-2 md:grid-cols-4 gap-3 sm:gap-4">
|
||||||
<UCard>
|
<UCard>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<div class="text-3xl font-bold text-primary">{{ cards.length }}</div>
|
<div class="text-2xl sm:text-3xl font-bold text-primary">{{ cards.length }}</div>
|
||||||
<div class="text-sm text-gray-600 dark:text-gray-400">Total Cards</div>
|
<div class="text-xs sm:text-sm text-gray-600 dark:text-gray-400">Total Cards</div>
|
||||||
</div>
|
</div>
|
||||||
</UCard>
|
</UCard>
|
||||||
|
|
||||||
<UCard>
|
<UCard>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<div class="text-3xl font-bold text-primary">{{ nativeQueries }}</div>
|
<div class="text-2xl sm:text-3xl font-bold text-primary">{{ nativeQueries }}</div>
|
||||||
<div class="text-sm text-gray-600 dark:text-gray-400">SQL Nativo</div>
|
<div class="text-xs sm:text-sm text-gray-600 dark:text-gray-400">SQL Nativo</div>
|
||||||
</div>
|
</div>
|
||||||
</UCard>
|
</UCard>
|
||||||
|
|
||||||
<UCard>
|
<UCard>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<div class="text-3xl font-bold text-green-600">{{ queryBuilderQueries }}</div>
|
<div class="text-2xl sm:text-3xl font-bold text-green-600">{{ queryBuilderQueries }}</div>
|
||||||
<div class="text-sm text-gray-600 dark:text-gray-400">Query Builder</div>
|
<div class="text-xs sm:text-sm text-gray-600 dark:text-gray-400">Query Builder</div>
|
||||||
</div>
|
</div>
|
||||||
</UCard>
|
</UCard>
|
||||||
|
|
||||||
<UCard>
|
<UCard>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<div class="text-3xl font-bold text-gray-600">{{ panoramaQueries.length }}/9</div>
|
<div class="text-2xl sm:text-3xl font-bold text-gray-600">{{ panoramaQueries.length }}/9</div>
|
||||||
<div class="text-sm text-gray-600 dark:text-gray-400">Queries Panorama</div>
|
<div class="text-xs sm:text-sm text-gray-600 dark:text-gray-400">Queries Panorama</div>
|
||||||
</div>
|
</div>
|
||||||
</UCard>
|
</UCard>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user