Панель управления сверстанная и с встроенным jQuery.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

326 lines
7.5 KiB

/* ------------------------------------------------------------------------------
*
* # Image Cropper extension
*
* Specific JS code additions for extension_image_cropper.html page
*
* Version: 1.1
* Latest update: Jul 5, 2016
*
* ---------------------------------------------------------------------------- */
$(function() {
// Basic setup
// ------------------------------
// Default initialization
$('.crop-basic').cropper();
// Hidden overlay
$('.crop-modal').cropper({
modal: false
});
// Fixed position
$('.crop-not-movable').cropper({
cropBoxMovable: false,
data: {
x: 75,
y: 50,
width: 350,
height: 250
}
});
// Fixed size
$('.crop-not-resizable').cropper({
cropBoxResizable: false,
data: {
x: 10,
y: 10,
width: 300,
height: 300
}
});
// Disabled autocrop
$('.crop-auto').cropper({
autoCrop: false
});
// Disabled drag
$('.crop-drag').cropper({
movable: false
});
// 16:9 ratio
$('.crop-16-9').cropper({
aspectRatio: 16/9
});
// 4:3 ratio
$('.crop-4-3').cropper({
aspectRatio: 4/3
});
// Minimum zone size
$('.crop-min').cropper({
minCropBoxWidth: 150,
minCropBoxHeight: 150
});
// Disabled zoom
$('.crop-zoomable').cropper({
zoomable: false
});
// 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: 1,
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: 291,
y: 86,
width: 158,
height: 158
});
$("#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');
});
});