summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/ui/lib
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-08-27 17:28:52 -0400
committerJules Laplace <jules@okfoc.us>2014-08-27 17:28:52 -0400
commitb6ce465de3e07cd88175078f7a1017b63a91646e (patch)
treeb573a887bab99549fe9204bb997d49e29cb6fb66 /public/assets/javascripts/ui/lib
parent63b0e94e3e36838240c2d86e780a641c2255ed89 (diff)
split out uploadview
Diffstat (limited to 'public/assets/javascripts/ui/lib')
-rw-r--r--public/assets/javascripts/ui/lib/ModalView.js9
-rw-r--r--public/assets/javascripts/ui/lib/UploadView.js83
2 files changed, 91 insertions, 1 deletions
diff --git a/public/assets/javascripts/ui/lib/ModalView.js b/public/assets/javascripts/ui/lib/ModalView.js
index 937c1e9..d9b518a 100644
--- a/public/assets/javascripts/ui/lib/ModalView.js
+++ b/public/assets/javascripts/ui/lib/ModalView.js
@@ -10,9 +10,15 @@ var ModalView = View.extend({
}
},
+ usesFileUpload: false,
+
show: function(){
$(".mediaDrawer").removeClass("active")
- $(".fileUpload").removeClass("active")
+
+ if (! this.usesFileUpload) {
+ $(".fileUpload").removeClass("active")
+ }
+
this.$el.addClass("active")
$("body").addClass("noOverflow")
},
@@ -32,4 +38,5 @@ var ModalView = View.extend({
this.hide()
}
}
+
})
diff --git a/public/assets/javascripts/ui/lib/UploadView.js b/public/assets/javascripts/ui/lib/UploadView.js
new file mode 100644
index 0000000..c237e36
--- /dev/null
+++ b/public/assets/javascripts/ui/lib/UploadView.js
@@ -0,0 +1,83 @@
+
+var UploadView = View.extend({
+
+ // define uploadAction
+
+ events: {
+ "change .file": "handleFileSelect",
+ "submit form": "preventDefault",
+ },
+
+ initialize: function(){
+ this.$file = this.$(".file")
+ this.$upload = this.$(".upload-icon")
+ },
+
+ handleFileSelect: function(e) {
+ e.stopPropagation();
+ e.preventDefault();
+
+ this.parent.mediaViewer.deleteArmed(false)
+
+ var files = e.dataTransfer ? e.dataTransfer.files : e.target.files;
+
+ for (var i = 0, f; f = files[i]; i++) {
+ if ( ! f.type.match('image.*')) {
+ continue;
+ }
+
+ this.getImageDimensions(f)
+ }
+ },
+
+ getImageDimensions: function(f){
+ var base = this
+
+ this.$upload.addClass('uploading')
+
+ var reader = new FileReader();
+
+ reader.onload = function(e) {
+ var image = new Image()
+ image.onload = function(){
+ var width = image.naturalWidth,
+ height = image.naturalHeight
+ base.upload(f, width, height)
+ }
+ image.src = e.target.result
+ }
+
+ reader.readAsDataURL(f);
+ },
+
+ upload: function(f, width, height){
+ var fd = new FormData()
+ fd.append('image', f)
+ fd.append('width', width)
+ fd.append('height', height)
+ fd.append('_csrf', $("[name=_csrf]").val())
+
+ var request = $.ajax({
+ url: this.uploadAction,
+ type: "post",
+ data: fd,
+ dataType: "json",
+ processData: false,
+ contentType: false,
+ })
+ request.done(this.success.bind(this))
+ },
+
+ success: function(media){
+ if (media.error) {
+ return
+ }
+ this.$upload.removeClass('uploading')
+ this.add(media)
+ },
+
+ add: function(media){
+ console.log(media)
+ },
+
+})