Browse Source

Cleanup. Clear canvas before appending data. Change image loading.

pull/96/head
Evan Theurer 11 years ago
parent
commit
293d05ef29
  1. 37
      static/js/directives/buddypictureupload.js
  2. 5
      static/partials/buddypictureupload.html

37
static/js/directives/buddypictureupload.js

@ -25,16 +25,15 @@ define(['jquery', 'underscore', 'text!partials/buddypictureupload.html'], functi
var controller = ['$scope', 'safeApply', '$timeout', '$q', 'translation', function($scope, safeApply, $timeout, $q, translation) { var controller = ['$scope', 'safeApply', '$timeout', '$q', 'translation', function($scope, safeApply, $timeout, $q, translation) {
var previewWidth = 200; var previewWidth = 205;
var previewHeight = 200; var previewHeight = 205;
$scope.moveHorizontal = false;
$scope.moveVertical = false;
$scope.showUploadPicture = false; $scope.showUploadPicture = false;
$scope.previewUpload = false; $scope.previewUpload = false;
$scope.imgData = null; $scope.imgData = null;
$scope.showEditTools = false;
$scope.error = { $scope.error = {
msg: null read: "The file couldn't be read",
image: "The file is not an image.",
current: null
}; };
$scope.text = { $scope.text = {
initial: 'Please choose a picture to upload', initial: 'Please choose a picture to upload',
@ -42,16 +41,18 @@ define(['jquery', 'underscore', 'text!partials/buddypictureupload.html'], functi
}; };
var setUploadImageDimension = function(data) { var setUploadImageDimension = function(data) {
var img = new Image(); $scope.prevImage.onload = function() {
img.onload = function() { // clear old dimensions
this.style.cssText = null;
// get new dimensions
var dim = getAutoFitDimensions(this, {width: previewWidth, height: previewHeight}); var dim = getAutoFitDimensions(this, {width: previewWidth, height: previewHeight});
$scope.prevImage.style.width = dim.width + 'px'; this.style.width = dim.width + 'px';
$scope.prevImage.style.height = dim.height + 'px'; this.style.height = dim.height + 'px';
$scope.prevImage.style.top = '0px'; this.style.top = '0px';
$scope.prevImage.style.left = '0px'; this.style.left = '0px';
safeApply($scope); safeApply($scope);
}; };
img.src = data; $scope.prevImage.src = data;
}; };
$scope.reset = function() { $scope.reset = function() {
@ -81,12 +82,12 @@ define(['jquery', 'underscore', 'text!partials/buddypictureupload.html'], functi
console.log('file error', event); console.log('file error', event);
if (event.target.error.name == 'NotReadableError') { if (event.target.error.name == 'NotReadableError') {
$scope.$apply(function(scope) { $scope.$apply(function(scope) {
scope.error.msg = "The file couldn't be read"; scope.error.current = scope.error.read;
}); });
} }
if (event.target.error.name == 'NotImage') { if (event.target.error.name == 'NotImage') {
$scope.$apply(function(scope) { $scope.$apply(function(scope) {
scope.error.msg = "The file is not an image."; scope.error.current = scope.error.image;
}); });
} }
}; };
@ -155,7 +156,9 @@ define(['jquery', 'underscore', 'text!partials/buddypictureupload.html'], functi
var writeUploadToCanvas = function(canvas, img) { var writeUploadToCanvas = function(canvas, img) {
var dim = getScaledDimensions(img, canvas); var dim = getScaledDimensions(img, canvas);
canvas.getContext("2d").drawImage(img, dim.x, dim.y, dim.width, dim.height); var context = canvas.getContext("2d");
context.clearRect(0, 0, canvas.width, canvas.height);
context.drawImage(img, dim.x, dim.y, dim.width, dim.height);
console.log('writeUploadToCanvas', dim); console.log('writeUploadToCanvas', dim);
}; };
@ -171,8 +174,6 @@ define(['jquery', 'underscore', 'text!partials/buddypictureupload.html'], functi
var link = function($scope, $element) { var link = function($scope, $element) {
$scope.prevImage = $(".showUploadPicture .preview").get(0); $scope.prevImage = $(".showUploadPicture .preview").get(0);
$element.find("#uploadFile").on('change', $scope.handleUpload); $element.find("#uploadFile").on('change', $scope.handleUpload);
$scope.uploadPrev = $element.find("canvas.uploadPrev").get(0);
$($scope.uploadPrev).attr($scope.captureSize);
var intervalNum = { var intervalNum = {
num: null num: null

5
static/partials/buddypictureupload.html

@ -1,6 +1,5 @@
<div class="buddyPictureUpload collapse" collapse="!showUploadPicture"> <div class="buddyPictureUpload collapse" collapse="!showUploadPicture">
<div class="showUploadPicture"> <div class="showUploadPicture">
<canvas class="uploadPrev hidden"></canvas>
<div class="imageUtilites"> <div class="imageUtilites">
<div class="moveHorizontal"> <div class="moveHorizontal">
<i id="arrow-left" class="fa fa-long-arrow-left"></i> <i id="arrow-left" class="fa fa-long-arrow-left"></i>
@ -15,9 +14,9 @@
<i id="smaller" class="fa fa-minus"></i> <i id="smaller" class="fa fa-minus"></i>
</div> </div>
</div> </div>
<img class="preview" ng-class="{previewUpload: previewUpload}" ng-src="{{imgData}}" /> <img class="preview" ng-class="{previewUpload: previewUpload}" />
</div> </div>
<div class="alert alert-warning" ng-if="error.msg">{{error.msg}}<button type="button" class="close" ng-click="error.msg = null"><span>&times;</span></button></div> <div class="alert alert-warning" ng-if="error.current">{{error.current}}<button type="button" class="close" ng-click="error.current = null"><span>&times;</span></button></div>
<p ng-if="!previewUpload">{{text.initial}}</p> <p ng-if="!previewUpload">{{text.initial}}</p>
<p ng-if="previewUpload">{{text.again}}</p> <p ng-if="previewUpload">{{text.again}}</p>
<div><input id="uploadFile" type="file"></div> <div><input id="uploadFile" type="file"></div>

Loading…
Cancel
Save