refactor file handling in WASM wrapper #872
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR refactors the file handling in the JavaScript wrapper to allow similar behaviour when files come from
<input>
html elements usingwebkitdirectory
and when files come from users drag and drop events where the files will be fromevent.dataTransfer.items
.Unfortunately, the latter case requires some custom event handling by the downstream developer to recursively read files from directories.
We have this same constraint in Niivue, but we attach event handlers directly to the canvas element there. In the case of
dcm2niix
, it does not care about html elements or their events, so that handling has to be taken care of prior to passing files in.The changes in this PR make that process slightly less painful though.
two new methods on the
Dcm2niix
class are available:inputFromWebkitDirectory
inputFromDropItems
event.dataTransfer.items
(i.e. dropped files) must have the custom property_webkitRelativePath
appended.This all works, and is demonstrated in the live demo here: https://niivue.github.io/niivue-dcm2niix/
and in the demo web app repo here: https://github.com/niivue/niivue-dcm2niix