'use strict'; /* globals define, socket, app, templates */ define('pictureCropper', ['translator', 'cropper'], function (translator, cropper) { var module = {}; module.handleImageCrop = function (data, callback) { $('#crop-picture-modal').remove(); templates.parse('modals/crop_picture', {url: data.url}, function (cropperHtml) { translator.translate(cropperHtml, function (translated) { var cropperModal = $(translated); cropperModal.modal('show'); var img = document.getElementById('cropped-image'); var cropperTool = new cropper.default(img, { aspectRatio: data.aspectRatio, viewMode: 1 }); cropperModal.find('.rotate').on('click', function () { var degrees = this.getAttribute("data-degrees"); cropperTool.rotate(degrees); }); cropperModal.find('.flip').on('click', function () { var option = this.getAttribute("data-option"); var method = this.getAttribute("data-method"); method === 'scaleX' ? cropperTool.scaleX(option) : cropperTool.scaleY(option); this.setAttribute("data-option", option * -1); }); cropperModal.find('.reset').on('click', function () { cropperTool.reset(); }); cropperModal.find('.crop-btn').on('click', function () { $(this).addClass('disabled'); var imageData = data.imageType ? cropperTool.getCroppedCanvas().toDataURL(data.imageType) : cropperTool.getCroppedCanvas().toDataURL(); cropperModal.find('#upload-progress-bar').css('width', '100%'); cropperModal.find('#upload-progress-box').show().removeClass('hide'); var socketData = {}; socketData[data.paramName] = data.paramValue; socketData['imageData'] = imageData; socket.emit(data.socketMethod, socketData, function (err, imageData) { if (err) { cropperModal.find('#upload-progress-box').hide(); cropperModal.find('.upload-btn').removeClass('disabled'); cropperModal.find('.crop-btn').removeClass('disabled'); return app.alertError(err.message); } callback(imageData.url); cropperModal.modal('hide'); }); }); cropperModal.find('.upload-btn').on('click', function () { $(this).addClass('disabled'); cropperTool.destroy(); cropperTool = new cropper.default(img, { viewMode: 1, autoCropArea: 1 }); cropperModal.find('.crop-btn').trigger('click'); }); }); }); }; return module; });