/* ------------------------------------------------------------------------------ * * # Image Cropper extension * * Specific JS code additions for extension_image_cropper.html page * * Version: 1.1 * Latest update: Jul 5, 2016 * * ---------------------------------------------------------------------------- */ $(function() { // Demo cropper // ------------------------------ // Define variables var $cropper = $(".cropper"), $image = $('#demo-cropper-image'), $download = $('#download'), $dataX = $('#dataX'), $dataY = $('#dataY'), $dataHeight = $('#dataHeight'), $dataWidth = $('#dataWidth'), $dataScaleX = $('#dataScaleX'), $dataScaleY = $('#dataScaleY'), options = { aspectRatio:393/213, preview: '.preview', crop: function (e) { $dataX.val(Math.round(e.x)); $dataY.val(Math.round(e.y)); $dataHeight.val(Math.round(e.height)); $dataWidth.val(Math.round(e.width)); $dataScaleX.val(e.scaleX); $dataScaleY.val(e.scaleY); } }; // Initialize cropper with options $cropper.cropper(options); // // Toolbar // $('.demo-cropper-toolbar').on('click', '[data-method]', function () { var $this = $(this), data = $this.data(), $target, result; if ($image.data('cropper') && data.method) { data = $.extend({}, data); if (typeof data.target !== 'undefined') { $target = $(data.target); if (typeof data.option === 'undefined') { data.option = JSON.parse($target.val()); } } result = $image.cropper(data.method, data.option, data.secondOption); switch (data.method) { case 'scaleX': case 'scaleY': $(this).data('option', -data.option); break; case 'getCroppedCanvas': if (result) { // Init modal $('#getCroppedCanvasModal').modal().find('.modal-body').html(result); // Download image $download.attr('href', result.toDataURL('image/jpeg')); } break; } } }); // // Aspect ratio // $('.demo-cropper-ratio').on('change', 'input[type=radio]', function () { options[$(this).attr('name')] = $(this).val(); $image.cropper('destroy').cropper(options); }); // // Switching modes // // Crop and clear var cropClear = document.querySelector('.clear-crop-switch'); var cropClearInit = new Switchery(cropClear); cropClear.onchange = function() { if(cropClear.checked) { // Crop mode $cropper.cropper('crop'); // Enable other options enableDisableInit.enable(); destroyCreateInit.enable(); } else { // Clear move $cropper.cropper('clear'); // Disable other options enableDisableInit.disable(); destroyCreateInit.disable(); } }; // Enable and disable var enableDisable = document.querySelector('.enable-disable-switch'); var enableDisableInit = new Switchery(enableDisable); enableDisable.onchange = function() { if(enableDisable.checked) { // Enable cropper $cropper.cropper('enable'); // Enable other options cropClearInit.enable(); destroyCreateInit.enable(); } else { // Disable cropper $cropper.cropper('disable'); // Disable other options cropClearInit.disable(); destroyCreateInit.disable(); } }; // Destroy and create var destroyCreate = document.querySelector('.destroy-create-switch'); var destroyCreateInit = new Switchery(destroyCreate); destroyCreate.onchange = function() { if(destroyCreate.checked) { // Initialize again $cropper.cropper({ aspectRatio: 1, preview: ".preview", data: { x: 208, y: 22 } }); // Enable other options cropClearInit.enable(); enableDisableInit.enable(); } else { // Destroy cropper $cropper.cropper('destroy'); // Disable other options cropClearInit.disable(); enableDisableInit.disable(); } }; // // Methods // // Get data $("#getData").on('click', function() { $("#showData1").val(JSON.stringify($cropper.cropper("getData"))); }); // Set data $("#setData").on('click', function() { $cropper.cropper("setData", { x: 0, y: 0, width: 393, height: 230 }); $("#showData1").val('Image data has been changed'); }); // Get container data $("#getContainerData").on('click', function() { $("#showData2").val(JSON.stringify($cropper.cropper("getContainerData"))); }); // Get image data $("#getImageData").on('click', function() { $("#showData2").val(JSON.stringify($cropper.cropper("getImageData"))); }); // Get canvas data $("#getCanvasData").on('click', function() { $("#showData3").val(JSON.stringify($cropper.cropper("getCanvasData"))); }); // Set canvas data $("#setCanvasData").on('click', function() { $cropper.cropper("setCanvasData", { left: -50, top: 0, width: 750, height: 750 }); $("#showData3").val('Canvas data has been changed'); }); // Get crop box data $("#getCropBoxData").on('click', function() { $("#showData4").val(JSON.stringify($cropper.cropper("getCropBoxData"))); }); // Set crop box data $("#setCropBoxData").on('click', function() { $cropper.cropper("setCropBoxData", { left: 395, top: 68, width: 183, height: 183 }); $("#showData4").val('Crop box data has been changed'); }); });