nfp_sites/app/widgets/fileupload.js

53 lines
1.1 KiB
JavaScript
Raw Normal View History

2019-02-20 16:10:37 +00:00
const m = require('mithril')
2019-02-22 14:53:43 +00:00
const { uploadMedia } = require('../api/media')
const FileUpload = {
uploadFile(vnode, event) {
if (!event.target.files[0]) return
vnode.state.loading = true
uploadMedia(event.target.files[0])
.then(function(res) {
vnode.state.media = res
console.log(vnode.state.media)
})
.catch(function(err) {
console.log(err)
})
.then(function() {
vnode.state.loading = false
m.redraw()
})
},
2019-02-20 16:10:37 +00:00
oninit: function(vnode) {
2019-02-22 14:53:43 +00:00
vnode.state.loading = false
2019-02-20 16:10:37 +00:00
vnode.state.media = null
vnode.state.error = ''
},
view: function(vnode) {
let media = vnode.state.media
return m('fileupload', [
(media ?
2019-02-22 14:53:43 +00:00
m('a.display', {
2019-02-20 16:10:37 +00:00
href: media.large_url,
style: {
'background-image': 'url(' + media.medium_url + ')',
}
}) :
2019-02-22 14:53:43 +00:00
m('div.showicon')
2019-02-20 16:10:37 +00:00
),
2019-02-22 14:53:43 +00:00
m('input', {
accept: 'image/*',
type: 'file',
onchange: FileUpload.uploadFile.bind(this, vnode),
}),
(vnode.state.loading ? m('div.loading-spinner') : null),
2019-02-20 16:10:37 +00:00
])
}
}
2019-02-22 14:53:43 +00:00
module.exports = FileUpload