Skip to content

Commit 0564c9c

Browse files
committed
Added Card components for quick queries and discovered tables, improving layout and user experience.
1 parent ba2f48b commit 0564c9c

1 file changed

Lines changed: 67 additions & 46 deletions

File tree

tools/diagnostics-app/src/app/views/shared/sql-console-core.tsx

Lines changed: 67 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { Label } from '@/components/ui/label';
33
import { Button } from '@/components/ui/button';
44
import { Spinner } from '@/components/ui/spinner';
55
import { DataTable, DataTableColumn } from '@/components/ui/data-table';
6+
import { Card, CardContent } from '@/components/ui/card';
67
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';
78
import { QueryHistoryDropdown, QueryHistoryHandle } from './query-history';
89

@@ -11,6 +12,7 @@ import { QueryHistoryDropdown, QueryHistoryHandle } from './query-history';
1112
// ---------------------------------------------------------------------------
1213

1314
const MAX_RESULT_ROWS = 10_000;
15+
const MAX_DISCOVERED_VIEWS = 30;
1416

1517
export interface TemplateQuery {
1618
label: string;
@@ -139,54 +141,73 @@ export function SQLConsoleCore({ executeQuery, defaultQuery = '', historySource
139141
return (
140142
<div className="min-w-0 max-w-full p-5">
141143
{templateQueries && templateQueries.length > 0 && (
142-
<div className="mb-4">
144+
<div className="mb-4 space-y-3">
143145
<Label className="mb-1 block">Quick Queries</Label>
144-
{templateDocsUrl && (
145-
<a
146-
href={templateDocsUrl}
147-
target="_blank"
148-
rel="noopener noreferrer"
149-
className="text-xs text-muted-foreground hover:text-foreground underline mb-2 inline-block">
150-
Learn more about client architecture
151-
</a>
146+
<Card>
147+
<CardContent className="p-3 space-y-2">
148+
<p className="text-xs text-muted-foreground">
149+
PowerSync internal tables.{' '}
150+
{templateDocsUrl && (
151+
<a
152+
href={templateDocsUrl}
153+
target="_blank"
154+
rel="noopener noreferrer"
155+
className="hover:text-foreground underline">
156+
Learn more about client architecture
157+
</a>
158+
)}
159+
</p>
160+
<div className="flex flex-wrap gap-2">
161+
<TooltipProvider delayDuration={200}>
162+
{templateQueries.map((tq) => (
163+
<Tooltip key={tq.label}>
164+
<TooltipTrigger asChild>
165+
<Button
166+
variant="outline"
167+
size="sm"
168+
onClick={() => {
169+
historyHandleRef.current?.setQuery(tq.query);
170+
runQuery(tq.query);
171+
}}>
172+
{tq.label}
173+
</Button>
174+
</TooltipTrigger>
175+
<TooltipContent className="max-w-xs">
176+
<p>{tq.tooltip}</p>
177+
</TooltipContent>
178+
</Tooltip>
179+
))}
180+
</TooltipProvider>
181+
</div>
182+
</CardContent>
183+
</Card>
184+
{discoveredTables.length > 0 && (
185+
<Card>
186+
<CardContent className="p-3 space-y-2">
187+
<p className="text-xs text-muted-foreground">
188+
Views discovered from the database schema.
189+
{discoveredTables.length > MAX_DISCOVERED_VIEWS && ` Showing first ${MAX_DISCOVERED_VIEWS} of ${discoveredTables.length}.`}
190+
</p>
191+
<div className="flex flex-wrap gap-2">
192+
{discoveredTables.slice(0, MAX_DISCOVERED_VIEWS).map((name) => {
193+
const query = `SELECT * FROM ${name}`;
194+
return (
195+
<Button
196+
key={name}
197+
variant="outline"
198+
size="sm"
199+
onClick={() => {
200+
historyHandleRef.current?.setQuery(query);
201+
runQuery(query);
202+
}}>
203+
{name}
204+
</Button>
205+
);
206+
})}
207+
</div>
208+
</CardContent>
209+
</Card>
152210
)}
153-
<div className="flex flex-wrap gap-2">
154-
<TooltipProvider delayDuration={200}>
155-
{templateQueries.map((tq) => (
156-
<Tooltip key={tq.label}>
157-
<TooltipTrigger asChild>
158-
<Button
159-
variant="outline"
160-
size="sm"
161-
onClick={() => {
162-
historyHandleRef.current?.setQuery(tq.query);
163-
runQuery(tq.query);
164-
}}>
165-
{tq.label}
166-
</Button>
167-
</TooltipTrigger>
168-
<TooltipContent className="max-w-xs">
169-
<p>{tq.tooltip}</p>
170-
</TooltipContent>
171-
</Tooltip>
172-
))}
173-
</TooltipProvider>
174-
{discoveredTables.map((name) => {
175-
const query = `SELECT * FROM ${name}`;
176-
return (
177-
<Button
178-
key={name}
179-
variant="outline"
180-
size="sm"
181-
onClick={() => {
182-
historyHandleRef.current?.setQuery(query);
183-
runQuery(query);
184-
}}>
185-
{name}
186-
</Button>
187-
);
188-
})}
189-
</div>
190211
</div>
191212
)}
192213
<div className="flex flex-wrap items-end gap-2.5 mb-4">

0 commit comments

Comments
 (0)