-
+
- start ${start} +
- bytes ${bytes} +
- end ${end} +
diff --git a/.eslintrc.json b/.eslintrc.json index 7ff2925..e0e1ea6 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,5 +1,6 @@ { "env": { + "browser": true, "node": true }, "parser": "@typescript-eslint/parser", diff --git a/demo.css b/demo.css new file mode 100644 index 0000000..5aa0e74 --- /dev/null +++ b/demo.css @@ -0,0 +1,75 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} +body { + display: flex; + font-family: sans-serif; + height: 100vh; +} +nav { + width: 300px; + padding: 10px; + overflow-y: auto; +} +h1 { + font-size: 20pt; +} +h2 { + font-size: 12pt; +} +p { + margin: 10px 0; +} +label { + height: 100%; + display: flex; + align-items: center; + justify-content: center; + font-size: 20px; +} +#dropzone { + border: 2px dashed #08e; + border-radius: 10px; + flex: 1; + margin: 10px; + padding: 10px; + color: #444; + overflow: auto; +} +.over { + background-color: lightblue; +} +.error { + color: #c11; +} +#layout { + margin-top: 20px; +} +#layout div { + background-color: rgba(0, 0, 0, 0.05); + border: 1px solid #ccc; + border-radius: 4px; + font-size: 12px; + margin-top: 4px; + padding: 4px; + word-break: break-all; +} +.cell { + display: flex; +} +.cell label { + font-size: 12px; + font-weight: normal; + flex: 1; + justify-content: flex-start; +} +#layout div ul { + list-style: none; +} +#layout div li { + font-size: 10px; + padding: 2px 4px; + text-align: right; +} diff --git a/demo.js b/demo.js new file mode 100644 index 0000000..4f8f66f --- /dev/null +++ b/demo.js @@ -0,0 +1,85 @@ +import { parquetMetadata, toJson } from './src/hyparquet.js' + +const dropzone = document.getElementById('dropzone') +const layout = document.getElementById('layout') + +dropzone.addEventListener('dragover', e => { + e.preventDefault() + e.dataTransfer.dropEffect = 'copy' + dropzone.classList.add('over') +}) + +dropzone.addEventListener('dragleave', () => { + dropzone.classList.remove('over') +}) + +function group(name) { + return `
${JSON.stringify(metadata, null, 2)}`
+ } catch (e) {
+ dropzone.innerHTML = `${file.name}`
+ dropzone.innerHTML += `