nfp_sites/nfp_moe/app/admin/fileupload.js

77 lines
1.8 KiB
JavaScript
Raw Normal View History

2019-02-22 14:53:43 +00:00
const FileUpload = {
2022-07-20 00:33:06 +00:00
fileChanged: function(vnode, event) {
2019-02-22 14:53:43 +00:00
if (!event.target.files[0]) return
2022-07-20 00:33:06 +00:00
let preview = null
if (event.target.files[0].type.startsWith('image')) {
preview = URL.createObjectURL(event.target.files[0])
}
if (this.preview) {
this.preview.clear()
}
2019-02-20 16:10:37 +00:00
2022-07-20 00:33:06 +00:00
let out = {
file: event.target.files[0],
preview: preview,
clear: function() {
URL.revokeObjectURL(preview)
}
2019-09-13 13:33:10 +00:00
}
2022-07-20 00:33:06 +00:00
this.preview = out
vnode.attrs.onfile(out)
2019-09-13 13:33:10 +00:00
},
2019-02-20 16:10:37 +00:00
oninit: function(vnode) {
2022-07-20 00:33:06 +00:00
this.loading = false
this.preview = null
2019-02-20 16:10:37 +00:00
},
view: function(vnode) {
2022-08-08 07:22:41 +00:00
let imageLink = this.preview && this.preview.preview || vnode.attrs.media
2019-02-20 16:10:37 +00:00
2019-09-13 13:33:10 +00:00
return m('fileupload', {
2022-08-08 07:22:41 +00:00
class: (vnode.attrs.class || '') + ' '
+ (!imageLink ? 'empty' : '') + ' '
+ (vnode.attrs.useimg ? 'useimg' : ''),
2019-09-13 13:33:10 +00:00
}, [
2022-08-08 07:22:41 +00:00
imageLink && vnode.attrs.useimg
? m('img', { src: imageLink })
: null,
imageLink && !vnode.attrs.useimg
? m('a', {
href: imageLink,
style: {
'background-image': 'url("' + (imageLink) + '")',
'height': vnode.attrs.height + 'px'
},
})
: null
2022-07-20 00:33:06 +00:00
,
2022-08-08 07:22:41 +00:00
!imageLink
? m('div.noimage', {
style: {
'padding-top': vnode.attrs.useimg ? '56.25%' : null,
'height': !vnode.attrs.useimg ? vnode.attrs.height + 'px' : null,
},
}, vnode.children)
: null,
2019-02-22 14:53:43 +00:00
m('input', {
accept: 'image/*',
type: 'file',
2022-07-20 00:33:06 +00:00
onchange: this.fileChanged.bind(this, vnode),
2019-02-22 14:53:43 +00:00
}),
2022-08-08 07:22:41 +00:00
/*imageLink && vnode.attrs.ondelete
2022-07-20 00:33:06 +00:00
? m('button.remove', { onclick: vnode.attrs.ondelete })
: null,
this.loading
? m('div.loading-spinner')
2022-08-08 07:22:41 +00:00
: null,*/
2019-02-20 16:10:37 +00:00
])
2019-09-14 19:03:38 +00:00
},
2019-02-20 16:10:37 +00:00
}
2019-02-22 14:53:43 +00:00
module.exports = FileUpload