diff --git a/demo/App.tsx b/demo/App.tsx index 0ed9aa9..6a292f4 100644 --- a/demo/App.tsx +++ b/demo/App.tsx @@ -1,8 +1,8 @@ -import HighTable, { DataFrame } from 'hightable' +import HighTable, { DataFrame, sortableDataFrame } from 'hightable' import { compressors } from 'hyparquet-compressors' import React, { useState } from 'react' -import { FileMetaData, parquetMetadata, parquetMetadataAsync, parquetSchema } from '../src/metadata.js' -import { parquetRead } from '../src/read.js' +import { parquetReadObjects } from '../src/hyparquet.js' +import { FileMetaData, parquetMetadataAsync, parquetSchema } from '../src/metadata.js' import type { AsyncBuffer } from '../src/types.js' import { asyncBufferFromUrl } from '../src/utils.js' import Dropdown from './Dropdown.js' @@ -27,21 +27,21 @@ export default function App() { const [byteLength, setByteLength] = useState() async function onFileDrop(file: File) { - const arrayBuffer = await file.arrayBuffer() - const metadata = parquetMetadata(arrayBuffer) - setMetadata(metadata) - setName(file.name) - setByteLength(file.size) - setDf(parquetDataFrame(arrayBuffer, metadata)) - document.getElementById('welcome')?.remove() + setAsyncBuffer(file.name, await file.arrayBuffer()) } async function onUrlDrop(url: string) { - const asyncBuffer = await asyncBufferFromUrl(url) + setAsyncBuffer(url, await asyncBufferFromUrl(url)) + } + async function setAsyncBuffer(name: string, asyncBuffer: AsyncBuffer) { const metadata = await parquetMetadataAsync(asyncBuffer) setMetadata(metadata) - setName(url) + setName(name) setByteLength(asyncBuffer.byteLength) - setDf(parquetDataFrame(asyncBuffer, metadata)) + let df = parquetDataFrame(asyncBuffer, metadata) + if (df.numRows <= 10000) { + df = sortableDataFrame(df) + } + setDf(df) document.getElementById('welcome')?.remove() } @@ -88,10 +88,7 @@ function parquetDataFrame(file: AsyncBuffer, metadata: FileMetaData): DataFrame */ rows(rowStart, rowEnd) { console.log(`reading rows ${rowStart}-${rowEnd}`) - return new Promise((resolve, reject) => { - parquetRead({ file, compressors, rowStart, rowEnd, onComplete: resolve }) - .catch(reject) - }) + return parquetReadObjects({ file, compressors, rowStart, rowEnd }) }, } } diff --git a/demo/bundle.min.js b/demo/bundle.min.js index 5918537..2cb042c 100644 --- a/demo/bundle.min.js +++ b/demo/bundle.min.js @@ -7,5 +7,5 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),c.exports=function(){if(o)return f;o=1;var e=i,n=h();function t(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t