image-picker-rails 0.1.4.1 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
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: