Daniel Bachler
2016-07-28 21:17:51 UTC
I'd love to see support for the File and ArrayBuffer Apis, and maybe
TypedArrays/DataViews as well. IMHO they are an important piece of the Web
Platform that is still missing in Elm.
Evan suggested collecting concrete use cases to guide the design. I would
like this thread to be the starting point of this effort. I would like to
ask anyone who would also like this feature or who has substantial
experience using either Api to add use cases or comment here so that we can
try to define the user story for both apis. From there, we could decide
what we would like to see supported and what, if anything, we don't need
for now and suggest Elm Apis.
I have two stories from a side project of mine. It is a slideshow editor
that allows the user to select photos and audio files from the local
system, uploads them to a web service, let's the user arrange and
manipulate photos and music and then share the result with others. For
this, I have two immediate use cases plus some more ideas:
*Upload local files as binary blob to AWS S3*
In my current, (hacky) version, I use the FileReader api (via simonH1000's
filereader library) to read the content of a file into an ArrayBuffer,
(represented as Json.Value in Elm) then use a modified version of elm-http
to upload the content of the ArrayBuffer to an S3 storage bucket.
*Download mp3 files, decode them and play them back via the AudioApi*
Currently I do this with my modified http library to download the mp3 file
into an arraybuffer, then pass the resulting arraybuffer through a port to
some native javascript that then uses the Audio Api to decode the mp3 file
into a playable audiobuffer.
*Parsing or otherwise processing local text files. *
For another project I would be interested in reading and parsing
Swagger/OpenAPI definition files and then providing a UI to compare rest
apis. Since the processing will be done on simple Strings, this would only
require FileReader support (specifically the readAsText method). This would
already work with the FileReader library as is (though that one is not
available on package.elm-lang.org because it contains native code and is
not whitelisted).
*TypedArrays and DataViews*
I haven't worked with these yet, but I can anticipate some cases that would
be interesting:
*Parsing/manipulating of binary data via the ArrayBuffer api.*
One case I personally would like to do with this, is to parse the Exif
header of the jpeg files the user loaded from the local file system. My
slideshow could then display metadata information without roundtripping to
the server.
*Create geometry for WebGL in the form of Vertex Buffers*
*Generating sound/music by writing raw audio samples*
These could then be played back via the Web audio apis.
Please add your own ideas to this thread. Once we have compiled a list of
use cases, we can look at the JS Apis available under the Web Platform for
Files, ArrayBuffers, Typed Arrays etc. and think how these could be exposed
to Elm.
TypedArrays/DataViews as well. IMHO they are an important piece of the Web
Platform that is still missing in Elm.
Evan suggested collecting concrete use cases to guide the design. I would
like this thread to be the starting point of this effort. I would like to
ask anyone who would also like this feature or who has substantial
experience using either Api to add use cases or comment here so that we can
try to define the user story for both apis. From there, we could decide
what we would like to see supported and what, if anything, we don't need
for now and suggest Elm Apis.
I have two stories from a side project of mine. It is a slideshow editor
that allows the user to select photos and audio files from the local
system, uploads them to a web service, let's the user arrange and
manipulate photos and music and then share the result with others. For
this, I have two immediate use cases plus some more ideas:
*Upload local files as binary blob to AWS S3*
In my current, (hacky) version, I use the FileReader api (via simonH1000's
filereader library) to read the content of a file into an ArrayBuffer,
(represented as Json.Value in Elm) then use a modified version of elm-http
to upload the content of the ArrayBuffer to an S3 storage bucket.
*Download mp3 files, decode them and play them back via the AudioApi*
Currently I do this with my modified http library to download the mp3 file
into an arraybuffer, then pass the resulting arraybuffer through a port to
some native javascript that then uses the Audio Api to decode the mp3 file
into a playable audiobuffer.
*Parsing or otherwise processing local text files. *
For another project I would be interested in reading and parsing
Swagger/OpenAPI definition files and then providing a UI to compare rest
apis. Since the processing will be done on simple Strings, this would only
require FileReader support (specifically the readAsText method). This would
already work with the FileReader library as is (though that one is not
available on package.elm-lang.org because it contains native code and is
not whitelisted).
*TypedArrays and DataViews*
I haven't worked with these yet, but I can anticipate some cases that would
be interesting:
*Parsing/manipulating of binary data via the ArrayBuffer api.*
One case I personally would like to do with this, is to parse the Exif
header of the jpeg files the user loaded from the local file system. My
slideshow could then display metadata information without roundtripping to
the server.
*Create geometry for WebGL in the form of Vertex Buffers*
*Generating sound/music by writing raw audio samples*
These could then be played back via the Web audio apis.
Please add your own ideas to this thread. Once we have compiled a list of
use cases, we can look at the JS Apis available under the Web Platform for
Files, ArrayBuffers, Typed Arrays etc. and think how these could be exposed
to Elm.
--
You received this message because you are subscribed to the Google Groups "Elm Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elm-discuss+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to the Google Groups "Elm Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elm-discuss+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.