paper_cropper 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/assets/javascripts/paper_cropper.js +18 -2
- data/lib/paper_cropper/helpers.rb +1 -0
- data/lib/paper_cropper/model_extension.rb +2 -2
- data/lib/paper_cropper/schema.rb +10 -5
- data/lib/paper_cropper/version.rb +7 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7629c8e9811d613f894aa4300c2e78b515c31b5a
|
4
|
+
data.tar.gz: 081ca60672ff1b4161984c908e75ffbdb0672fba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba14300199a193190faede4e930867146c8ea5d75f8eebe3f618f0501afca5a0a98ed212738404fa16734cab00144a0ef34ac017ac031e494d9d0185439e557c
|
7
|
+
data.tar.gz: 8226250fb09a2c213df5ca0944add0010b470161d59a3a194eb0400326416a79a7d9af06b9605bed574521c6e441b5e833d2fec86d7c30c209a5833de8b1e93e
|
data/README.md
CHANGED
@@ -30,7 +30,7 @@ crop_attached_file :cover, aspect: false
|
|
30
30
|
Take care of permitted params. Add the following fields to ```permitted``` strong attributes:
|
31
31
|
|
32
32
|
```ruby
|
33
|
-
params.require(:model).permit(:cover, :cover_crop_x, :cover_crop_y, :cover_crop_width, :cover_crop_height)
|
33
|
+
params.require(:model).permit(:cover, :cover_crop_x, :cover_crop_y, :cover_crop_width, :cover_crop_height, :cover_crop_ratio)
|
34
34
|
```
|
35
35
|
|
36
36
|
## javascripts
|
@@ -89,6 +89,7 @@ for example:
|
|
89
89
|
<input class="crop-image-value-y" type="hidden" name="cover_crop_y" value="">
|
90
90
|
<input class="crop-image-value-width" type="hidden" name="cover_crop_width" value="">
|
91
91
|
<input class="crop-image-value-height" type="hidden" name="cover_crop_height" value="">
|
92
|
+
<input class="crop-image-value-ratio" type="hidden" name="cover_crop_ratio" value="">
|
92
93
|
|
93
94
|
<!-- [required] Wrap the image or canvas element with a block element (container) -->
|
94
95
|
<div class="crop-image-wrapper">
|
@@ -16,6 +16,7 @@
|
|
16
16
|
<input class="crop-image-value-y" type="hidden" name="cover_crop_y" value="">
|
17
17
|
<input class="crop-image-value-width" type="hidden" name="cover_crop_width" value="">
|
18
18
|
<input class="crop-image-value-height" type="hidden" name="cover_crop_height" value="">
|
19
|
+
<input class="crop-image-value-ratio" type="hidden" name="cover_crop_ratio" value="">
|
19
20
|
|
20
21
|
<!-- File input for change the image -->
|
21
22
|
<input class="crop-image-file-input" type="file">
|
@@ -46,6 +47,7 @@ function PaperCropper(container, opt) {
|
|
46
47
|
this.inputY = $(container).find('.crop-image-value-y');
|
47
48
|
this.inputWidth = $(container).find('.crop-image-value-width');
|
48
49
|
this.inputHeight = $(container).find('.crop-image-value-height');
|
50
|
+
this.inputRatio = $(container).find('.crop-image-value-ratio');
|
49
51
|
|
50
52
|
var aspect = $(container).attr('data-crop-image-range');
|
51
53
|
if( isNaN(aspect) ) {
|
@@ -54,6 +56,10 @@ function PaperCropper(container, opt) {
|
|
54
56
|
this.aspect = parseFloat(aspect);
|
55
57
|
}
|
56
58
|
|
59
|
+
if ( isNaN(this.inputRatio.val()) ) {
|
60
|
+
this.inputRatio.val(1);
|
61
|
+
}
|
62
|
+
|
57
63
|
this.init();
|
58
64
|
}
|
59
65
|
|
@@ -78,6 +84,9 @@ PaperCropper.prototype.init = function() {
|
|
78
84
|
crop: function(event){
|
79
85
|
that.cropperCrop(event);
|
80
86
|
},
|
87
|
+
zoom: function (event) {
|
88
|
+
that.cropperZomm(event);
|
89
|
+
},
|
81
90
|
built: function() {
|
82
91
|
console.log('cropper build')
|
83
92
|
that.cropperBuild();
|
@@ -109,7 +118,7 @@ PaperCropper.prototype.init = function() {
|
|
109
118
|
/** Callback method used when cropper are full loaded */
|
110
119
|
PaperCropper.prototype.cropperBuild = function() {
|
111
120
|
// set initial values
|
112
|
-
this.setCropperData(this.inputX.val(), this.inputY.val(), this.inputWidth.val(), this.inputHeight.val());
|
121
|
+
this.setCropperData(this.inputX.val(), this.inputY.val(), this.inputWidth.val(), this.inputHeight.val(), this.inputRatio.val());
|
113
122
|
}
|
114
123
|
|
115
124
|
/** Callback method used when the user changes the crop */
|
@@ -122,6 +131,12 @@ PaperCropper.prototype.cropperCrop = function (event) {
|
|
122
131
|
this.inputHeight.val(parseInt(event.detail.height));
|
123
132
|
}
|
124
133
|
|
134
|
+
PaperCropper.prototype.cropperZomm = function (event) {
|
135
|
+
console.log('zoom:', event.detail)
|
136
|
+
console.log('zoom crop data:',this.cropper.getData())
|
137
|
+
this.inputRatio.val(parseFloat(event.detail.ratio));
|
138
|
+
}
|
139
|
+
|
125
140
|
/** Callback method used when the user changes the file */
|
126
141
|
PaperCropper.prototype.fileInputChange = function (event) {
|
127
142
|
var input = event.target;
|
@@ -136,7 +151,8 @@ PaperCropper.prototype.fileInputChange = function (event) {
|
|
136
151
|
}
|
137
152
|
|
138
153
|
/** Set the cropper data */
|
139
|
-
PaperCropper.prototype.setCropperData = function (x, y, width, height) {
|
154
|
+
PaperCropper.prototype.setCropperData = function (x, y, width, height, ratio) {
|
155
|
+
this.cropper.zoomTo(parseFloat(ratio));
|
140
156
|
this.cropper.setData({
|
141
157
|
'x': parseInt(x),
|
142
158
|
'y': parseInt(y),
|
@@ -15,6 +15,7 @@ module PaperCropper
|
|
15
15
|
out << form_helper.hidden_field(:"#{attachment_name}_crop_y", class: 'crop-image-value-y')
|
16
16
|
out << form_helper.hidden_field(:"#{attachment_name}_crop_width", class: 'crop-image-value-width')
|
17
17
|
out << form_helper.hidden_field(:"#{attachment_name}_crop_height", class: 'crop-image-value-height')
|
18
|
+
out << form_helper.hidden_field(:"#{attachment_name}_crop_ratio", class: 'crop-image-value-ratio')
|
18
19
|
|
19
20
|
out << form_helper.file_field(attachment_name, class: 'crop-image-file-input', label_col: "col-sm-3", control_col: "col-sm-9")
|
20
21
|
|
@@ -84,8 +84,8 @@ module PaperCropper
|
|
84
84
|
["#{attachment_name}_name", "#{attachment_name}_content_type",
|
85
85
|
"#{attachment_name}_file_size", "#{attachment_name}_updated_at",
|
86
86
|
"#{attachment_name}_crop_x", "#{attachment_name}_crop_y",
|
87
|
-
"#{attachment_name}_crop_width",
|
88
|
-
"#{attachment_name}
|
87
|
+
"#{attachment_name}_crop_width", "#{attachment_name}_crop_height",
|
88
|
+
"#{attachment_name}_crop_ratio"
|
89
89
|
].any? { |attr|
|
90
90
|
method= "#{attr}_changed?".to_sym
|
91
91
|
if respond_to?(method)
|
data/lib/paper_cropper/schema.rb
CHANGED
@@ -6,7 +6,8 @@ module PaperCropper
|
|
6
6
|
crop_x: :integer,
|
7
7
|
crop_y: :integer,
|
8
8
|
crop_width: :integer,
|
9
|
-
crop_height: :integer
|
9
|
+
crop_height: :integer,
|
10
|
+
crop_ratio: [:decimal, {precision: 8, scale: 4}]
|
10
11
|
}
|
11
12
|
|
12
13
|
#
|
@@ -18,8 +19,10 @@ module PaperCropper
|
|
18
19
|
options = attachment_names.extract_options!
|
19
20
|
|
20
21
|
attachment_names.each do |attachment_name|
|
21
|
-
COLUMNS.each_pair do |column_name,
|
22
|
-
|
22
|
+
COLUMNS.each_pair do |column_name, column_definition|
|
23
|
+
column_type, default_options = column_definition
|
24
|
+
custom_options = options.merge(options[column_name.to_sym] || {})
|
25
|
+
column_options = (default_options || {}).merge(custom_options)
|
23
26
|
add_column(table_name, "#{attachment_name}_#{column_name}", column_type, column_options)
|
24
27
|
end
|
25
28
|
end
|
@@ -42,8 +45,10 @@ module PaperCropper
|
|
42
45
|
def crop_attachment(*attachment_names)
|
43
46
|
options = attachment_names.extract_options!
|
44
47
|
attachment_names.each do |attachment_name|
|
45
|
-
COLUMNS.each_pair do |column_name,
|
46
|
-
|
48
|
+
COLUMNS.each_pair do |column_name, column_definition|
|
49
|
+
column_type, default_options = column_definition
|
50
|
+
custom_options = options.merge(options[column_name.to_sym] || {})
|
51
|
+
column_options = (default_options || {}).merge(custom_options)
|
47
52
|
column("#{attachment_name}_#{column_name}", column_type, column_options)
|
48
53
|
end
|
49
54
|
end
|
@@ -2,6 +2,13 @@ module PaperCropper
|
|
2
2
|
# Changelog based on Semantic Versioning: http://semver.org
|
3
3
|
# REMEMBER: Major version zero (0.y.z) is for initial development. Anything may change at any time. The public API should not be considered stable.
|
4
4
|
|
5
|
+
unless defined?(PaperCropper::VERSION)
|
6
|
+
VERSION = '0.0.4'.freeze
|
7
|
+
end
|
8
|
+
|
9
|
+
# 0.0.4 PATCH
|
10
|
+
# [FIX] Remember ratio attribute used to zoom in and out.
|
11
|
+
|
5
12
|
# 0.0.3 PATCH
|
6
13
|
# [FIX] Invalid method call when invoking attachment_changed?.
|
7
14
|
# [DOC] Improve README.
|
@@ -11,7 +18,4 @@ module PaperCropper
|
|
11
18
|
# [FEATURE] Added ActiveRecord extensions to force attachment updated_at field to be setted
|
12
19
|
# on every attachment change.
|
13
20
|
|
14
|
-
unless defined?(PaperCropper::VERSION)
|
15
|
-
VERSION = '0.0.3'.freeze
|
16
|
-
end
|
17
21
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paper_cropper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Coditramuntana
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|