| Conditions | 2 |
| Paths | 48 |
| Total Lines | 129 |
| Lines | 33 |
| Ratio | 25.58 % |
| Changes | 1 | ||
| Bugs | 0 | Features | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | jQuery(function () { |
||
| 2 | 'use strict'; |
||
| 3 | var $image = jQuery('#image'); |
||
| 4 | var $dataX = jQuery('#x'); |
||
| 5 | var $dataY = jQuery('#y'); |
||
| 6 | var $dataHeight = jQuery('#height'); |
||
| 7 | var $dataWidth = jQuery('#width'); |
||
| 8 | var options = { |
||
| 9 | viewMode: 1, |
||
| 10 | dragMode: 'move', |
||
| 11 | autoCropArea: 1, |
||
| 12 | restore: false, |
||
| 13 | highlight: false, |
||
| 14 | cropBoxMovable: false, |
||
| 15 | cropBoxResizable: false, |
||
| 16 | aspectRatio: 1 / 1, |
||
| 17 | preview: '.img-preview', |
||
| 18 | crop: function (e) { |
||
| 19 | $dataX.val(Math.round(e.x)); |
||
| 20 | $dataY.val(Math.round(e.y)); |
||
| 21 | $dataHeight.val(Math.round(e.height)); |
||
| 22 | $dataWidth.val(Math.round(e.width)); |
||
| 23 | if(!jQuery('#inputImage').val()) { |
||
| 24 | jQuery('.btn-group button').attr('disabled', true); |
||
| 25 | jQuery('.cropper-view-box').hide(); |
||
| 26 | jQuery('.cropper-wrap-box').hide(); |
||
| 27 | } |
||
| 28 | } |
||
| 29 | }; |
||
| 30 | |||
| 31 | // Cropper |
||
| 32 | $image.cropper(options); |
||
| 33 | |||
| 34 | // Methods |
||
| 35 | View Code Duplication | jQuery('.docs-buttons').on('click', '[data-method]', function () { |
|
| 36 | var $this = jQuery(this); |
||
| 37 | var data = $this.data(); |
||
| 38 | var $target; |
||
| 39 | var result; |
||
| 40 | |||
| 41 | if ($this.prop('disabled') || $this.hasClass('disabled')) { |
||
| 42 | return; |
||
| 43 | } |
||
| 44 | |||
| 45 | if ($image.data('cropper') && data.method) { |
||
| 46 | data = jQuery.extend({}, data); // Clone a new one |
||
| 47 | if (typeof data.target !== 'undefined') { |
||
| 48 | $target = jQuery(data.target); |
||
| 49 | if (typeof data.option === 'undefined') { |
||
| 50 | try { |
||
| 51 | data.option = JSON.parse($target.val()); |
||
| 52 | } catch (e) { |
||
| 53 | console.log(e.message); |
||
|
|
|||
| 54 | } |
||
| 55 | } |
||
| 56 | } |
||
| 57 | result = $image.cropper(data.method, data.option, data.secondOption); |
||
| 58 | if ($.isPlainObject(result) && $target) { |
||
| 59 | try { |
||
| 60 | $target.val(JSON.stringify(result)); |
||
| 61 | } catch (e) { |
||
| 62 | console.log(e.message); |
||
| 63 | } |
||
| 64 | } |
||
| 65 | } |
||
| 66 | return false; |
||
| 67 | }); |
||
| 68 | |||
| 69 | |||
| 70 | // Keyboard |
||
| 71 | jQuery(document.body).on('keydown', function (e) { |
||
| 72 | if (!$image.data('cropper') || this.scrollTop > 300) { |
||
| 73 | return; |
||
| 74 | } |
||
| 75 | |||
| 76 | switch (e.which) { |
||
| 77 | case 37: |
||
| 78 | e.preventDefault(); |
||
| 79 | $image.cropper('move', -1, 0); |
||
| 80 | break; |
||
| 81 | |||
| 82 | case 38: |
||
| 83 | e.preventDefault(); |
||
| 84 | $image.cropper('move', 0, -1); |
||
| 85 | break; |
||
| 86 | |||
| 87 | case 39: |
||
| 88 | e.preventDefault(); |
||
| 89 | $image.cropper('move', 1, 0); |
||
| 90 | break; |
||
| 91 | |||
| 92 | case 40: |
||
| 93 | e.preventDefault(); |
||
| 94 | $image.cropper('move', 0, 1); |
||
| 95 | break; |
||
| 96 | } |
||
| 97 | }); |
||
| 98 | |||
| 99 | |||
| 100 | // Import image |
||
| 101 | var $inputImage = jQuery('#inputImage'); |
||
| 102 | var URL = window.URL || window.webkitURL; |
||
| 103 | var blobURL; |
||
| 104 | |||
| 105 | if (URL) { |
||
| 106 | $inputImage.change(function () { |
||
| 107 | var files = this.files; |
||
| 108 | var file; |
||
| 109 | if (!$image.data('cropper')) { |
||
| 110 | return; |
||
| 111 | } |
||
| 112 | if (files && files.length) { |
||
| 113 | file = files[0]; |
||
| 114 | if (/^image\/\w+$/.test(file.type)) { |
||
| 115 | blobURL = URL.createObjectURL(file); |
||
| 116 | $image.one('built.cropper', function () { |
||
| 117 | // Revoke when load complete |
||
| 118 | URL.revokeObjectURL(blobURL); |
||
| 119 | }).cropper('reset').cropper('replace', blobURL); |
||
| 120 | } else { |
||
| 121 | window.alert('Please choose an image file.'); |
||
| 122 | } |
||
| 123 | } |
||
| 124 | jQuery('.btn-group button').removeAttr('disabled'); |
||
| 125 | }); |
||
| 126 | } else { |
||
| 127 | $inputImage.prop('disabled', true).parent().addClass('disabled'); |
||
| 128 | } |
||
| 129 | }); |