From b844c2299159e7ddefad112347f0b2242f3b94db Mon Sep 17 00:00:00 2001 From: Kenny Daniel Date: Sun, 4 Feb 2024 13:34:49 -0800 Subject: [PATCH] Demo drag and drop url --- demo.js | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/demo.js b/demo.js index f0d8469..f18ea53 100644 --- a/demo.js +++ b/demo.js @@ -19,25 +19,39 @@ dropzone.addEventListener('drop', e => { e.preventDefault() // prevent dropped file from being "downloaded" dropzone.classList.remove('over') - const { files } = e.dataTransfer + const { files, items } = e.dataTransfer if (files.length > 0) { const file = files[0] processFile(file) } + if (items.length > 0) { + const item = items[0] + if (item.kind === 'string') { + item.getAsString(str => { + if (str.startsWith('https')) { + processUrl(str) + } + }) + } + } }) +function processUrl(url) { + fetch(url) + .then(response => response.arrayBuffer()) + .then(arrayBuffer => renderSidebar(arrayBuffer, url)) + .catch(e => { + dropzone.innerHTML = `${url}` + dropzone.innerHTML += `
Error fetching file\n${e}
` + }) +} + function processFile(file) { const reader = new FileReader() reader.onload = e => { try { const arrayBuffer = e.target.result - - layout.innerHTML = `${file.name}` - // render file layout - layout.appendChild(fileLayout(metadata, arrayBuffer)) - // display metadata - metadata.innerHTML = '' - metadata.appendChild(fileMetadata(toJson(parquetMetadata(arrayBuffer)))) + renderSidebar(arrayBuffer, file.name) } catch (e) { dropzone.innerHTML = `${file.name}` dropzone.innerHTML += `
Error parsing file\n${e}
` @@ -50,6 +64,15 @@ function processFile(file) { reader.readAsArrayBuffer(file) } +function renderSidebar(asyncBuffer, name) { + layout.innerHTML = `${name}` + // render file layout + layout.appendChild(fileLayout(metadata, asyncBuffer)) + // display metadata + metadata.innerHTML = '' + metadata.appendChild(fileMetadata(toJson(parquetMetadata(asyncBuffer)))) +} + dropzone.addEventListener('click', () => { fileInput.click() })