Skip to content

Commit d1d943f

Browse files
committed
upgrade hightable
1 parent 02efe18 commit d1d943f

File tree

17 files changed

+199
-343
lines changed

17 files changed

+199
-343
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
"watch:url": "NODE_ENV=development nodemon bin/cli.js https://hyperparam.blob.core.windows.net/hyperparam/starcoderdata-js-00000-of-00065.parquet"
5656
},
5757
"dependencies": {
58-
"hightable": "0.17.2",
58+
"hightable": "0.18.1",
5959
"hyparquet": "1.17.1",
6060
"hyparquet-compressors": "1.1.1",
6161
"icebird": "0.3.0",

src/components/AvroView/AvroView.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import styles from '../Json/Json.module.css'
88

99
interface ViewerProps {
1010
source: FileSource
11-
setError: (error: Error | undefined) => void
11+
setError: (error: unknown) => void
1212
}
1313

1414
/**
@@ -43,7 +43,7 @@ export default function AvroView({ source, setError }: ViewerProps) {
4343
setContent({ fileSize })
4444
setJson(json)
4545
} catch (error) {
46-
setError(error as Error)
46+
setError(error)
4747
} finally {
4848
setIsLoading(false)
4949
}

src/components/Cell/Cell.tsx

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,21 +39,17 @@ export default function CellView({ source, row, col }: CellProps) {
3939
const metadata = await parquetMetadataAsync(asyncBuffer)
4040
setProgress(0.75)
4141
const df = parquetDataFrame(from, metadata)
42-
const asyncRows = df.rows({ start: row, end: row + 1 })
43-
if (asyncRows.length > 1 || !(0 in asyncRows)) {
44-
throw new Error(`Expected 1 row, got ${asyncRows.length}`)
45-
}
46-
const asyncRow = asyncRows[0]
47-
// Await cell data
42+
4843
const columnName = df.header[col]
4944
if (columnName === undefined) {
5045
throw new Error(`Column name missing at index col=${col}`)
5146
}
52-
const asyncCell = asyncRow.cells[columnName]
53-
if (asyncCell === undefined) {
54-
throw new Error(`Cell missing at column ${columnName}`)
47+
await df.fetch({ rowStart: row, rowEnd: row + 1, columns: [columnName] })
48+
const cell = df.getCell({ row, column: columnName })
49+
if (cell === undefined) {
50+
throw new Error(`Cell at row=${row}, col=${col} is undefined`)
5551
}
56-
const text = await asyncCell.then(stringify)
52+
const text = stringify(cell.value)
5753
setText(text)
5854
setError(undefined)
5955
} catch (error) {

src/components/CellPanel/CellPanel.tsx

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import { useConfig } from '../../hooks/useConfig.js'
44
import { cn } from '../../lib/utils.js'
55
import ContentWrapper from '../ContentWrapper/ContentWrapper.js'
66
import Json from '../Json/Json.js'
7+
import jsonStyles from '../Json/Json.module.css'
78
import SlideCloseButton from '../SlideCloseButton/SlideCloseButton.js'
89
import styles from '../TextView/TextView.module.css'
9-
import jsonStyles from '../Json/Json.module.css'
1010

1111
interface ViewerProps {
1212
df: DataFrame
@@ -29,21 +29,17 @@ export default function CellPanel({ df, row, col, setProgress, setError, onClose
2929
async function loadCellData() {
3030
try {
3131
setProgress(0.5)
32-
const asyncRows = df.rows({ start: row, end: row + 1 })
33-
if (asyncRows.length > 1 || !(0 in asyncRows)) {
34-
throw new Error(`Expected 1 row, got ${asyncRows.length}`)
35-
}
36-
const asyncRow = asyncRows[0]
37-
// Await cell data
32+
3833
const columnName = df.header[col]
3934
if (columnName === undefined) {
4035
throw new Error(`Column name missing at index col=${col}`)
4136
}
42-
const asyncCell = asyncRow.cells[columnName]
43-
if (asyncCell === undefined) {
44-
throw new Error(`Cell missing at column ${columnName}`)
37+
await df.fetch({ rowStart: row, rowEnd: row + 1, columns: [columnName] })
38+
const cell = df.getCell({ row, column: columnName })
39+
if (cell === undefined) {
40+
throw new Error(`Cell at row=${row}, col=${col} is undefined`)
4541
}
46-
const value: unknown = await asyncCell
42+
const value: unknown = await cell.value
4743
if (value instanceof Object && !(value instanceof Date)) {
4844
setContent(
4945
<code className={cn(jsonStyles.jsonView, customClass?.jsonView)}>

src/components/File/File.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { useState } from 'react'
1+
import { useCallback, useState } from 'react'
22
import type { FileSource } from '../../lib/sources/types.js'
3+
import { toError } from '../../lib/utils.js'
34
import Breadcrumb from '../Breadcrumb/Breadcrumb.js'
45
import Layout from '../Layout/Layout.js'
56
import Viewer from '../Viewer/Viewer.js'
@@ -13,10 +14,14 @@ interface FileProps {
1314
*/
1415
export default function File({ source }: FileProps) {
1516
const [progress, setProgress] = useState<number>()
16-
const [error, setError] = useState<Error>()
17+
const [error, setError] = useState<Error | undefined>()
18+
19+
const setErrorWrapper = useCallback((error: unknown) => {
20+
setError(toError(error))
21+
}, [setError])
1722

1823
return <Layout progress={progress} error={error} title={source.fileName}>
1924
<Breadcrumb source={source} />
20-
<Viewer source={source} setProgress={setProgress} setError={setError} />
25+
<Viewer source={source} setProgress={setProgress} setError={setErrorWrapper} />
2126
</Layout>
2227
}

src/components/ImageView/ImageView.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import styles from './ImageView.module.css'
77

88
interface ViewerProps {
99
source: FileSource
10-
setError: (error: Error | undefined) => void
10+
setError: (error: unknown) => void
1111
}
1212

1313
interface Content {
@@ -45,7 +45,7 @@ export default function ImageView({ source, setError }: ViewerProps) {
4545
setError(undefined)
4646
} catch (error) {
4747
setContent(undefined)
48-
setError(error as Error)
48+
setError(error)
4949
} finally {
5050
setIsLoading(false)
5151
}

src/components/JsonView/JsonView.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import styles from '../Json/Json.module.css'
88

99
interface ViewerProps {
1010
source: FileSource
11-
setError: (error: Error | undefined) => void
11+
setError: (error: unknown) => void
1212
}
1313

1414
const largeFileSize = 8_000_000 // 8 mb
@@ -48,7 +48,7 @@ export default function JsonView({ source, setError }: ViewerProps) {
4848
setJson(JSON.parse(text))
4949
} catch (error) {
5050
// TODO: show plain text in error case
51-
setError(error as Error)
51+
setError(error)
5252
} finally {
5353
setIsLoading(false)
5454
}

src/components/MarkdownView/MarkdownView.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import styles from './MarkdownView.module.css'
88

99
interface ViewerProps {
1010
source: FileSource
11-
setError: (error: Error | undefined) => void
11+
setError: (error: unknown) => void
1212
}
1313

1414
/**
@@ -37,7 +37,7 @@ export default function MarkdownView({ source, setError }: ViewerProps) {
3737
setError(undefined)
3838
setContent({ text, fileSize })
3939
} catch (error) {
40-
setError(error as Error)
40+
setError(error)
4141
setContent(undefined)
4242
} finally {
4343
setIsLoading(false)

src/components/ParquetView/ParquetView.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import HighTable, { DataFrame, rowCache } from 'hightable'
1+
import HighTable, { DataFrame } from 'hightable'
22
import 'hightable/src/HighTable.css'
33
import { asyncBufferFromUrl, parquetMetadataAsync } from 'hyparquet'
44
import React, { useCallback, useEffect, useState } from 'react'
@@ -15,7 +15,7 @@ import styles from './ParquetView.module.css'
1515
interface ViewerProps {
1616
source: FileSource
1717
setProgress: (progress: number | undefined) => void
18-
setError: (error: Error | undefined) => void
18+
setError: (error: unknown) => void
1919
}
2020

2121
interface Content extends ContentSize {
@@ -41,12 +41,11 @@ export default function ParquetView({ source, setProgress, setError }: ViewerPro
4141
const from = { url: resolveUrl, byteLength: asyncBuffer.byteLength, requestInit }
4242
setProgress(0.66)
4343
const metadata = await parquetMetadataAsync(asyncBuffer)
44-
let dataframe = parquetDataFrame(from, metadata)
45-
dataframe = rowCache(dataframe)
44+
const dataframe = parquetDataFrame(from, metadata)
4645
const fileSize = asyncBuffer.byteLength
4746
setContent({ dataframe, fileSize })
4847
} catch (error) {
49-
setError(error as Error)
48+
setError(error)
5049
} finally {
5150
setIsLoading(false)
5251
setProgress(1)

src/components/TextView/TextView.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import styles from './TextView.module.css'
77

88
interface ViewerProps {
99
source: FileSource
10-
setError: (error: Error | undefined) => void
10+
setError: (error: unknown) => void
1111
}
1212

1313
/**
@@ -36,7 +36,7 @@ export default function TextView({ source, setError }: ViewerProps) {
3636
setError(undefined)
3737
setContent({ text, fileSize })
3838
} catch (error) {
39-
setError(error as Error)
39+
setError(error)
4040
setContent(undefined)
4141
} finally {
4242
setIsLoading(false)

0 commit comments

Comments
 (0)