Skip to content

Commit 8aaf360

Browse files
committed
fix row
1 parent 3f3510b commit 8aaf360

2 files changed

Lines changed: 21 additions & 3 deletions

File tree

‎src/components/InfiniteCanvas.vue‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ const isOverBox = (element: HTMLElement | null): boolean => {
148148
}
149149
150150
const isOverScrollableArea = (element: HTMLElement | null): boolean => {
151-
const scrollableClasses = ['table-container', 'sql-editor', 'query-editor', 'datasets-list', 'schema-browser']
151+
const scrollableClasses = ['table-container', 'sql-editor', 'query-editor', 'datasets-list', 'schema-browser', 'detail-content']
152152
let current = element
153153
while (current && current !== canvasRef.value) {
154154
if (scrollableClasses.some(cls => current!.classList?.contains(cls))) return true

‎src/stores/duckdb.ts‎

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,24 @@ interface QueryResult {
2121
}
2222
}
2323

24+
// Convert DuckDB/Arrow values to JSON-serializable types
25+
const serializeDuckDBValue = (value: any): any => {
26+
if (value === null || value === undefined) return value
27+
if (typeof value === 'bigint') return Number(value)
28+
if (value instanceof Date) return value.toISOString()
29+
if (value instanceof Uint8Array) return Array.from(value)
30+
if (Array.isArray(value)) return value.map(serializeDuckDBValue)
31+
if (typeof value === 'object' && value !== null) {
32+
// Handle plain objects (structs, maps)
33+
const result: Record<string, any> = {}
34+
for (const key of Object.keys(value)) {
35+
result[key] = serializeDuckDBValue(value[key])
36+
}
37+
return result
38+
}
39+
return value
40+
}
41+
2442
export const useDuckDBStore = defineStore('duckdb', () => {
2543
// DuckDB instances
2644
const db = ref<AsyncDuckDB | null>(null)
@@ -235,7 +253,7 @@ export const useDuckDBStore = defineStore('duckdb', () => {
235253
const rows = result.toArray().map(row => {
236254
const obj: Record<string, any> = {}
237255
result.schema.fields.forEach((field) => {
238-
obj[field.name] = row[field.name]
256+
obj[field.name] = serializeDuckDBValue(row[field.name])
239257
})
240258
return obj
241259
})
@@ -299,7 +317,7 @@ export const useDuckDBStore = defineStore('duckdb', () => {
299317
const rows = result.toArray().map(row => {
300318
const obj: Record<string, any> = {}
301319
columns.forEach(col => {
302-
obj[col] = row[col]
320+
obj[col] = serializeDuckDBValue(row[col])
303321
})
304322
return obj
305323
})

0 commit comments

Comments
 (0)