image-picker-rails 0.1.4.1 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1f0f04d7a4aef9ceebddd7dedd0d70bcca36c3d2
4
- data.tar.gz: 5d855563e234c3bbe99ffe51776b092edf4e92cf
3
+ metadata.gz: 4f2d3e87dda1bfb153afc39eec11db1d708abe83
4
+ data.tar.gz: 6b2639122db2e69bca7e04928b5dd3e411e5622d
5
5
  SHA512:
6
- metadata.gz: 41e8359c1fc7dccb777ca1996910b5856ef866dc8ab51bc1ca78543a7dba568871744fb5f6190c51a7911ddebf6b51a45afce8b1d9f87aca9295c8e87146d3bf
7
- data.tar.gz: 6afe24bea1a73a81be3dbeaa1950eb59d32acb321771d80a34dea17235e0d6f263a45a0e8fbaf69c9e387867a442781a6d268a810f5c8d9ca84db2f97f8bc0a2
6
+ metadata.gz: c46720348a0949ce06211b50c8abef1d2fb3b686effc3a4a67b4155eb170ab3eec68fc634cb4281dd9c6ee0ea4f5f3d01f85cdb346eed4f7dffa2a2a636c55e8
7
+ data.tar.gz: 0b955d6c04da03e1ba455a725fb76968d34ead8f0063d888979435fa2b59b69ba4e7c74cf39762ac9476d79facc4a2b1c79249d15f17701c6ed3b1ba5f2b8337
@@ -1,7 +1,7 @@
1
1
  module Image
2
2
  module Picker
3
3
  module Rails
4
- VERSION = "0.1.4.1"
4
+ VERSION = "0.2.4"
5
5
  end
6
6
  end
7
7
  end
@@ -1,12 +1,13 @@
1
1
  // Image Picker
2
2
  // by Rodrigo Vera
3
3
  //
4
- // Version 0.1.4
4
+ // Version 0.2.4
5
5
  // Full source at https://github.com/rvera/image-picker
6
6
  // MIT License, https://github.com/rvera/image-picker/blob/master/LICENSE
7
7
  // Generated by CoffeeScript 1.4.0
8
8
  (function() {
9
9
  var ImagePicker, ImagePickerOption, both_array_are_equal, sanitized_options,
10
+ __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
10
11
  __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
11
12
 
12
13
  jQuery.fn.extend({
@@ -17,10 +18,12 @@
17
18
  return this.each(function() {
18
19
  var select;
19
20
  select = jQuery(this);
20
- select.next("ul.image_picker_selector").remove();
21
+ if (select.data("picker")) {
22
+ select.data("picker").destroy();
23
+ }
21
24
  select.data("picker", new ImagePicker(this, sanitized_options(opts)));
22
25
  if (opts.initialized != null) {
23
- return opts.initialized();
26
+ return opts.initialized.call(select.data("picker"));
24
27
  }
25
28
  });
26
29
  }
@@ -49,6 +52,8 @@
49
52
 
50
53
  function ImagePicker(select_element, opts) {
51
54
  this.opts = opts != null ? opts : {};
55
+ this.sync_picker_with_select = __bind(this.sync_picker_with_select, this);
56
+
52
57
  this.select = jQuery(select_element);
53
58
  this.multiple = this.select.attr("multiple") === "multiple";
54
59
  if (this.select.data("limit") != null) {
@@ -57,14 +62,26 @@
57
62
  this.build_and_append_picker();
58
63
  }
59
64
 
65
+ ImagePicker.prototype.destroy = function() {
66
+ var option, _i, _len, _ref;
67
+ _ref = this.picker_options;
68
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
69
+ option = _ref[_i];
70
+ option.destroy();
71
+ }
72
+ this.picker.remove();
73
+ this.select.unbind("change");
74
+ this.select.removeData("picker");
75
+ return this.select.show();
76
+ };
77
+
60
78
  ImagePicker.prototype.build_and_append_picker = function() {
79
+ var _this = this;
61
80
  if (this.opts.hide_select) {
62
81
  this.select.hide();
63
82
  }
64
- this.select.change({
65
- picker: this
66
- }, function(event) {
67
- return event.data.picker.sync_picker_with_select();
83
+ this.select.change(function() {
84
+ return _this.sync_picker_with_select();
68
85
  });
69
86
  if (this.picker != null) {
70
87
  this.picker.remove();
@@ -90,27 +107,43 @@
90
107
  };
91
108
 
92
109
  ImagePicker.prototype.create_picker = function() {
93
- var option, _i, _len, _ref;
94
110
  this.picker = jQuery("<ul class='thumbnails image_picker_selector'></ul>");
95
- this.picker_options = (function() {
96
- var _i, _len, _ref, _results;
97
- _ref = this.select.find("option");
98
- _results = [];
99
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
100
- option = _ref[_i];
101
- _results.push(new ImagePickerOption(option, this, this.opts));
111
+ this.picker_options = [];
112
+ this.recursively_parse_option_groups(this.select, this.picker);
113
+ return this.picker;
114
+ };
115
+
116
+ ImagePicker.prototype.recursively_parse_option_groups = function(scoped_dom, target_container) {
117
+ var container, option, option_group, _i, _j, _len, _len1, _ref, _ref1, _results;
118
+ _ref = scoped_dom.children("optgroup");
119
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
120
+ option_group = _ref[_i];
121
+ option_group = jQuery(option_group);
122
+ container = jQuery("<ul></ul>");
123
+ container.append(jQuery("<li class='group_title'>" + (option_group.attr("label")) + "</li>"));
124
+ target_container.append(jQuery("<li>").append(container));
125
+ this.recursively_parse_option_groups(option_group, container);
126
+ }
127
+ _ref1 = (function() {
128
+ var _k, _len1, _ref1, _results1;
129
+ _ref1 = scoped_dom.children("option");
130
+ _results1 = [];
131
+ for (_k = 0, _len1 = _ref1.length; _k < _len1; _k++) {
132
+ option = _ref1[_k];
133
+ _results1.push(new ImagePickerOption(option, this, this.opts));
102
134
  }
103
- return _results;
135
+ return _results1;
104
136
  }).call(this);
105
- _ref = this.picker_options;
106
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
107
- option = _ref[_i];
137
+ _results = [];
138
+ for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
139
+ option = _ref1[_j];
140
+ this.picker_options.push(option);
108
141
  if (!option.has_image()) {
109
142
  continue;
110
143
  }
111
- this.picker.append(option.node);
144
+ _results.push(target_container.append(option.node));
112
145
  }
113
- return this.picker;
146
+ return _results;
114
147
  };
115
148
 
116
149
  ImagePicker.prototype.has_implicit_blanks = function() {
@@ -138,34 +171,35 @@
138
171
  };
139
172
 
140
173
  ImagePicker.prototype.toggle = function(imagepicker_option) {
141
- var new_values, old_values, _ref;
174
+ var new_values, old_values, selected_value;
142
175
  old_values = this.selected_values();
176
+ selected_value = imagepicker_option.value().toString();
143
177
  if (this.multiple) {
144
- if (_ref = imagepicker_option.value(), __indexOf.call(this.selected_values(), _ref) >= 0) {
145
- imagepicker_option.option.prop("selected", false);
178
+ if (__indexOf.call(this.selected_values(), selected_value) >= 0) {
179
+ new_values = this.selected_values();
180
+ new_values.splice(jQuery.inArray(selected_value, old_values), 1);
181
+ this.select.val([]);
182
+ this.select.val(new_values);
146
183
  } else {
147
- if (this.opts.limit != null) {
148
- if (this.selected_values().length < this.opts.limit) {
149
- imagepicker_option.option.prop("selected", true);
150
- } else if (this.opts.limit_reached != null) {
151
- this.opts.limit_reached();
184
+ if ((this.opts.limit != null) && this.selected_values().length >= this.opts.limit) {
185
+ if (this.opts.limit_reached != null) {
186
+ this.opts.limit_reached.call(this.select);
152
187
  }
153
188
  } else {
154
- imagepicker_option.option.prop("selected", true);
189
+ this.select.val(this.selected_values().concat(selected_value));
155
190
  }
156
191
  }
157
192
  } else {
158
193
  if (this.has_implicit_blanks() && imagepicker_option.is_selected()) {
159
194
  this.select.val("");
160
195
  } else {
161
- this.select.val(imagepicker_option.value());
196
+ this.select.val(selected_value);
162
197
  }
163
198
  }
164
- new_values = this.selected_values();
165
- if (!both_array_are_equal(old_values, new_values)) {
199
+ if (!both_array_are_equal(old_values, this.selected_values())) {
166
200
  this.select.change();
167
201
  if (this.opts.changed != null) {
168
- return this.opts.changed();
202
+ return this.opts.changed.call(this.select, old_values, this.selected_values());
169
203
  }
170
204
  }
171
205
  };
@@ -179,10 +213,16 @@
179
213
  function ImagePickerOption(option_element, picker, opts) {
180
214
  this.picker = picker;
181
215
  this.opts = opts != null ? opts : {};
216
+ this.clicked = __bind(this.clicked, this);
217
+
182
218
  this.option = jQuery(option_element);
183
219
  this.create_node();
184
220
  }
185
221
 
222
+ ImagePickerOption.prototype.destroy = function() {
223
+ return this.node.find(".thumbnail").unbind();
224
+ };
225
+
186
226
  ImagePickerOption.prototype.has_image = function() {
187
227
  return this.option.data("img-src") != null;
188
228
  };
@@ -224,10 +264,10 @@
224
264
  ImagePickerOption.prototype.clicked = function() {
225
265
  this.picker.toggle(this);
226
266
  if (this.opts.clicked != null) {
227
- this.opts.clicked();
267
+ this.opts.clicked.call(this.picker.select, this);
228
268
  }
229
269
  if ((this.opts.selected != null) && this.is_selected()) {
230
- return this.opts.selected();
270
+ return this.opts.selected.call(this.picker.select, this);
231
271
  }
232
272
  };
233
273
 
@@ -254,4 +294,4 @@
254
294
 
255
295
  })();
256
296
 
257
- }).call(this);
297
+ }).call(this);
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image-picker-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4.1
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Airat Shigapov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-05 00:00:00.000000000 Z
11
+ date: 2014-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: Image Picker is a simple jQuery plugin that transforms a select element
@@ -60,7 +60,7 @@ executables: []
60
60
  extensions: []
61
61
  extra_rdoc_files: []
62
62
  files:
63
- - .gitignore
63
+ - ".gitignore"
64
64
  - Gemfile
65
65
  - LICENSE.txt
66
66
  - README.md
@@ -80,19 +80,20 @@ require_paths:
80
80
  - lib
81
81
  required_ruby_version: !ruby/object:Gem::Requirement
82
82
  requirements:
83
- - - '>='
83
+ - - ">="
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0'
86
86
  required_rubygems_version: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - '>='
88
+ - - ">="
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  requirements: []
92
92
  rubyforge_project:
93
- rubygems_version: 2.0.3
93
+ rubygems_version: 2.2.2
94
94
  signing_key:
95
95
  specification_version: 4
96
96
  summary: Image Picker is a simple jQuery plugin that transforms a select element into
97
97
  a more user friendly graphical interface.
98
98
  test_files: []
99
+ has_rdoc: