jquery.fileupload-rails 1.3.0 → 1.4.0

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.
data/Readme.md CHANGED
@@ -41,6 +41,8 @@ If you downloaded jquery.ui assets into your project, delete them and use [jquer
41
41
 
42
42
  ## Changelog
43
43
 
44
+ 1.4.0. Core 5.28.4.
45
+
44
46
  1.3.0. Core 5.26.
45
47
 
46
48
  1.2.0. Core 5.21.1, demo instructions.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "jquery.fileupload-rails"
5
- s.version = "1.3.0"
5
+ s.version = "1.4.0"
6
6
  s.author = "Semyon Perepelitsa"
7
7
  s.email = "sema@sema.in"
8
8
  s.homepage = "https://github.com/semaperepelitsa/jquery.fileupload-rails"
@@ -2,7 +2,7 @@
2
2
  //= require jquery.iframe-transport
3
3
 
4
4
  /*
5
- * jQuery File Upload Plugin 5.26
5
+ * jQuery File Upload Plugin 5.28.4
6
6
  * https://github.com/blueimp/jQuery-File-Upload
7
7
  *
8
8
  * Copyright 2010, Sebastian Tschan
@@ -218,7 +218,7 @@
218
218
  ],
219
219
 
220
220
  _BitrateTimer: function () {
221
- this.timestamp = +(new Date());
221
+ this.timestamp = (new Date()).getTime();
222
222
  this.loaded = 0;
223
223
  this.bitrate = 0;
224
224
  this.getBitrate = function (now, loaded, interval) {
@@ -246,7 +246,7 @@
246
246
  if ($.isArray(options.formData)) {
247
247
  return options.formData;
248
248
  }
249
- if (options.formData) {
249
+ if ($.type(options.formData) === 'object') {
250
250
  formData = [];
251
251
  $.each(options.formData, function (name, value) {
252
252
  formData.push({name: name, value: value});
@@ -265,16 +265,34 @@
265
265
  },
266
266
 
267
267
  _initProgressObject: function (obj) {
268
- obj._progress = {
268
+ var progress = {
269
269
  loaded: 0,
270
270
  total: 0,
271
271
  bitrate: 0
272
272
  };
273
+ if (obj._progress) {
274
+ $.extend(obj._progress, progress);
275
+ } else {
276
+ obj._progress = progress;
277
+ }
278
+ },
279
+
280
+ _initResponseObject: function (obj) {
281
+ var prop;
282
+ if (obj._response) {
283
+ for (prop in obj._response) {
284
+ if (obj._response.hasOwnProperty(prop)) {
285
+ delete obj._response[prop];
286
+ }
287
+ }
288
+ } else {
289
+ obj._response = {};
290
+ }
273
291
  },
274
292
 
275
293
  _onProgress: function (e, data) {
276
294
  if (e.lengthComputable) {
277
- var now = +(new Date()),
295
+ var now = (new Date()).getTime(),
278
296
  loaded;
279
297
  if (data._time && data.progressInterval &&
280
298
  (now - data._time < data.progressInterval) &&
@@ -544,7 +562,7 @@
544
562
  if (this.jqXHR) {
545
563
  return this.jqXHR.abort();
546
564
  }
547
- return this._getXHRPromise();
565
+ return that._getXHRPromise();
548
566
  };
549
567
  data.state = function () {
550
568
  if (this.jqXHR) {
@@ -554,6 +572,9 @@
554
572
  data.progress = function () {
555
573
  return this._progress;
556
574
  };
575
+ data.response = function () {
576
+ return this._response;
577
+ };
557
578
  },
558
579
 
559
580
  // Parses the Range header from the server response
@@ -682,9 +703,11 @@
682
703
  this._progress.loaded = this._progress.total = 0;
683
704
  this._progress.bitrate = 0;
684
705
  }
685
- if (!data._progress) {
686
- data._progress = {};
687
- }
706
+ // Make sure the container objects for the .response() and
707
+ // .progress() methods on the data object are available
708
+ // and reset to their initial state:
709
+ this._initResponseObject(data);
710
+ this._initProgressObject(data);
688
711
  data._progress.loaded = data.loaded = data.uploadedBytes || 0;
689
712
  data._progress.total = data.total = this._getTotal(data.files) || 1;
690
713
  data._progress.bitrate = data.bitrate = 0;
@@ -695,7 +718,8 @@
695
718
  },
696
719
 
697
720
  _onDone: function (result, textStatus, jqXHR, options) {
698
- var total = options._progress.total;
721
+ var total = options._progress.total,
722
+ response = options._response;
699
723
  if (options._progress.loaded < total) {
700
724
  // Create a progress event if no final progress event
701
725
  // with loaded equaling total has been triggered:
@@ -705,35 +729,30 @@
705
729
  total: total
706
730
  }), options);
707
731
  }
708
- options.result = result;
709
- options.textStatus = textStatus;
710
- options.jqXHR = jqXHR;
732
+ response.result = options.result = result;
733
+ response.textStatus = options.textStatus = textStatus;
734
+ response.jqXHR = options.jqXHR = jqXHR;
711
735
  this._trigger('done', null, options);
712
736
  },
713
737
 
714
738
  _onFail: function (jqXHR, textStatus, errorThrown, options) {
715
- options.jqXHR = jqXHR;
716
- options.textStatus = textStatus;
717
- options.errorThrown = errorThrown;
718
- this._trigger('fail', null, options);
739
+ var response = options._response;
719
740
  if (options.recalculateProgress) {
720
741
  // Remove the failed (error or abort) file upload from
721
742
  // the global progress calculation:
722
743
  this._progress.loaded -= options._progress.loaded;
723
744
  this._progress.total -= options._progress.total;
724
745
  }
746
+ response.jqXHR = options.jqXHR = jqXHR;
747
+ response.textStatus = options.textStatus = textStatus;
748
+ response.errorThrown = options.errorThrown = errorThrown;
749
+ this._trigger('fail', null, options);
725
750
  },
726
751
 
727
752
  _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) {
728
753
  // jqXHRorResult, textStatus and jqXHRorError are added to the
729
754
  // options object via done and fail callbacks
730
- this._active -= 1;
731
755
  this._trigger('always', null, options);
732
- if (this._active === 0) {
733
- // The stop callback is triggered when all uploads have
734
- // been completed, equivalent to the global ajaxStop event:
735
- this._trigger('stop');
736
- }
737
756
  },
738
757
 
739
758
  _onSend: function (e, data) {
@@ -759,13 +778,14 @@
759
778
  }).fail(function (jqXHR, textStatus, errorThrown) {
760
779
  that._onFail(jqXHR, textStatus, errorThrown, options);
761
780
  }).always(function (jqXHRorResult, textStatus, jqXHRorError) {
762
- that._sending -= 1;
763
781
  that._onAlways(
764
782
  jqXHRorResult,
765
783
  textStatus,
766
784
  jqXHRorError,
767
785
  options
768
786
  );
787
+ that._sending -= 1;
788
+ that._active -= 1;
769
789
  if (options.limitConcurrentUploads &&
770
790
  options.limitConcurrentUploads > that._sending) {
771
791
  // Start the next queued upload,
@@ -779,6 +799,11 @@
779
799
  nextSlot = that._slots.shift();
780
800
  }
781
801
  }
802
+ if (that._active === 0) {
803
+ // The stop callback is triggered when all uploads have
804
+ // been completed, equivalent to the global ajaxStop event:
805
+ that._trigger('stop');
806
+ }
782
807
  });
783
808
  return jqXHR;
784
809
  };
@@ -844,6 +869,7 @@
844
869
  var newData = $.extend({}, data);
845
870
  newData.files = fileSet ? element : [element];
846
871
  newData.paramName = paramNameSet[index];
872
+ that._initResponseObject(newData);
847
873
  that._initProgressObject(newData);
848
874
  that._addConvenienceMethods(e, newData);
849
875
  result = that._trigger('add', e, newData);
@@ -1124,6 +1150,12 @@
1124
1150
  this._initEventHandlers();
1125
1151
  },
1126
1152
 
1153
+ // This method is exposed to the widget API and allows to query
1154
+ // the number of active uploads:
1155
+ active: function () {
1156
+ return this._active;
1157
+ },
1158
+
1127
1159
  // This method is exposed to the widget API and allows to query
1128
1160
  // the widget upload progress.
1129
1161
  // It returns an object with loaded, total and bitrate properties
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: jquery.fileupload-rails
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.3.0
5
+ version: 1.4.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Semyon Perepelitsa
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-19 00:00:00.000000000 Z
12
+ date: 2013-03-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  version_requirements: !ruby/object:Gem::Requirement