coffeescript-ui
Version:
Coffeescript User Interface System
88 lines (70 loc) • 1.75 kB
text/coffeescript
###
* coffeescript-ui - Coffeescript User Interface System (CUI)
* Copyright (c) 2013 - 2016 Programmfabrik GmbH
* MIT Licence
* https://github.com/programmfabrik/coffeescript-ui, http://www.coffeescript-ui.org
###
class CUI.FileReaderFile extends CUI.FileUploadFile
initOpts: ->
super()
format:
mandatory: true
default: "Text"
check: ["ArrayBuffer", "Text"]
upload: (file) ->
# console.debug "upload file", file
= new FileReader()
for key in [
"loadStart"
"progress"
"abort"
"error"
"load"
"loadend"
]
do (key) =>
.addEventListener key.toLowerCase(), (ev) =>
# console.debug "caught event", key,
@["__event_"+key](ev)
switch
when "Text"
.readAsText()
when "ArrayBuffer"
.readAsArrayBuffer()
return
getResult: ->
.result
__event_loadStart: ->
.status = "STARTED"
.percent = 0
.notify(@)
return
__event_progress: (ev) ->
total = ev.total
loaded = ev.loaded
if ev.lengthComputable
percent = Math.floor(ev.loaded / ev.total * 100)
else
percent = -1
if loaded == total
.status = "COMPLETED"
else
.status = "PROGRESS"
.loaded = loaded
.total = total
.percent = percent
# console.debug @,
.notify(@)
return
__event_abort: ->
__event_error: ->
__event_load: ->
__event_loadend: ->
# console.debug .name, "result:", .result.length, .result.byteLength
.data = .result
.status = "DONE"
= null
.resolve(@)
abort: ->
.abort()