angularjs-file-upload-rails 1.0.1 → 1.1.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.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/app/assets/javascripts/angularjs-file-upload.js +67 -36
- data/lib/angularjs-file-upload/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d75e239c01c206babcb6a20daadd072f18d7aeb
|
4
|
+
data.tar.gz: 73eda9a4f0029589e4f24b401bafcecf818502ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba697fcd751277949893077876d04e50997ddcf64b1f10c9ef71cd3a71f671aa3a1b5c843f2077bc4f8e2781568b0fcf9fef24847f43f02ea76c20cbb39fb89b
|
7
|
+
data.tar.gz: 6832503e9ae59085135d6bd39dcb29fe054491fe43aab950c4b9e8f275690e580f4583c5738b5c60e07811a504ddd273c1c1c29333ca982f63948150d54c4e35
|
data/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
[](http://badge.fury.io/rb/angularjs-file-upload-rails)
|
2
|
+
|
3
|
+
# AngularJS File Upload
|
2
4
|
|
3
5
|
A gem that uses [angular-file-upload](https://github.com/nervgh/angular-file-upload) as an asset in the Rails Asset Pipeline.
|
4
6
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
angular-file-upload v1.0
|
2
|
+
angular-file-upload v1.1.0
|
3
3
|
https://github.com/nervgh/angular-file-upload
|
4
4
|
*/
|
5
5
|
(function(angular, factory) {
|
@@ -10,9 +10,10 @@
|
|
10
10
|
} else {
|
11
11
|
return factory(angular);
|
12
12
|
}
|
13
|
-
}(typeof angular === 'undefined' ? null : angular
|
13
|
+
}(typeof angular === 'undefined' ? null : angular, function(angular) {
|
14
14
|
|
15
15
|
var module = angular.module('angularFileUpload', []);
|
16
|
+
|
16
17
|
'use strict';
|
17
18
|
|
18
19
|
/**
|
@@ -77,28 +78,27 @@ module
|
|
77
78
|
FileUploader.prototype.isHTML5 = !!($window.File && $window.FormData);
|
78
79
|
/**
|
79
80
|
* Adds items to the queue
|
80
|
-
* @param {
|
81
|
+
* @param {File|HTMLInputElement|Object|FileList|Array<Object>} files
|
81
82
|
* @param {Object} [options]
|
82
83
|
* @param {Array<Function>|String} filters
|
83
84
|
*/
|
84
85
|
FileUploader.prototype.addToQueue = function(files, options, filters) {
|
85
|
-
var list =
|
86
|
+
var list = this.isArrayLikeObject(files) ? files: [files];
|
86
87
|
var arrayOfFilters = this._getFilters(filters);
|
87
88
|
var count = this.queue.length;
|
88
89
|
var addedFileItems = [];
|
89
90
|
|
90
|
-
angular.forEach(list, function(
|
91
|
-
var
|
91
|
+
angular.forEach(list, function(some /*{File|HTMLInputElement|Object}*/) {
|
92
|
+
var temp = new FileUploader.FileLikeObject(some);
|
92
93
|
|
93
|
-
if (this._isValidFile(
|
94
|
-
var
|
95
|
-
var fileItem = new FileUploader.FileItem(this, item, options, input);
|
94
|
+
if (this._isValidFile(temp, arrayOfFilters, options)) {
|
95
|
+
var fileItem = new FileUploader.FileItem(this, some, options);
|
96
96
|
addedFileItems.push(fileItem);
|
97
97
|
this.queue.push(fileItem);
|
98
98
|
this._onAfterAddingFile(fileItem);
|
99
99
|
} else {
|
100
100
|
var filter = this.filters[this._failFilterIndex];
|
101
|
-
this._onWhenAddingFileFailed(
|
101
|
+
this._onWhenAddingFileFailed(temp, filter, options);
|
102
102
|
}
|
103
103
|
}, this);
|
104
104
|
|
@@ -198,6 +198,14 @@ module
|
|
198
198
|
FileUploader.prototype.isFileLikeObject = function(value) {
|
199
199
|
return value instanceof FileUploader.FileLikeObject;
|
200
200
|
};
|
201
|
+
/**
|
202
|
+
* Returns "true" if value is array like object
|
203
|
+
* @param {*} value
|
204
|
+
* @returns {Boolean}
|
205
|
+
*/
|
206
|
+
FileUploader.prototype.isArrayLikeObject = function(value) {
|
207
|
+
return (angular.isObject(value) && 'length' in value);
|
208
|
+
};
|
201
209
|
/**
|
202
210
|
* Returns a index of item from the queue
|
203
211
|
* @param {Item|Number} value
|
@@ -380,16 +388,6 @@ module
|
|
380
388
|
return filter.fn.call(this, file, options);
|
381
389
|
}, this);
|
382
390
|
};
|
383
|
-
/**
|
384
|
-
* Returns a file or a file-like object
|
385
|
-
* @param {File|HTMLInputElement} some
|
386
|
-
* @returns {File|Object}
|
387
|
-
* @private
|
388
|
-
*/
|
389
|
-
FileUploader.prototype._getFileOrFileLikeObject = function(some) {
|
390
|
-
if (this.isFile(some) || this.isFileLikeObject(some)) return some;
|
391
|
-
return new FileUploader.FileLikeObject(some.value);
|
392
|
-
};
|
393
391
|
/**
|
394
392
|
* Checks whether upload successful
|
395
393
|
* @param {Number} status
|
@@ -694,6 +692,10 @@ module
|
|
694
692
|
* @borrows FileUploader.prototype.isFileLikeObject
|
695
693
|
*/
|
696
694
|
FileUploader.isFileLikeObject = FileUploader.prototype.isFileLikeObject;
|
695
|
+
/**
|
696
|
+
* @borrows FileUploader.prototype.isArrayLikeObject
|
697
|
+
*/
|
698
|
+
FileUploader.isArrayLikeObject = FileUploader.prototype.isArrayLikeObject;
|
697
699
|
/**
|
698
700
|
* @borrows FileUploader.prototype.isHTML5
|
699
701
|
*/
|
@@ -719,29 +721,53 @@ module
|
|
719
721
|
|
720
722
|
/**
|
721
723
|
* Creates an instance of FileLikeObject
|
722
|
-
* @param {
|
724
|
+
* @param {File|HTMLInputElement|Object} fileOrInput
|
723
725
|
* @constructor
|
724
726
|
*/
|
725
|
-
function FileLikeObject(
|
726
|
-
var
|
727
|
+
function FileLikeObject(fileOrInput) {
|
728
|
+
var isInput = angular.isElement(fileOrInput);
|
729
|
+
var fakePathOrObject = isInput ? fileOrInput.value : fileOrInput;
|
730
|
+
var postfix = angular.isString(fakePathOrObject) ? 'FakePath' : 'Object';
|
731
|
+
var method = '_createFrom' + postfix;
|
732
|
+
this[method](fakePathOrObject);
|
733
|
+
}
|
734
|
+
|
735
|
+
/**
|
736
|
+
* Creates file like object from fake path string
|
737
|
+
* @param {String} path
|
738
|
+
* @private
|
739
|
+
*/
|
740
|
+
FileLikeObject.prototype._createFromFakePath = function(path) {
|
727
741
|
this.lastModifiedDate = null;
|
728
742
|
this.size = null;
|
729
743
|
this.type = 'like/' + path.slice(path.lastIndexOf('.') + 1).toLowerCase();
|
730
744
|
this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\') + 2);
|
731
|
-
}
|
745
|
+
};
|
746
|
+
/**
|
747
|
+
* Creates file like object from object
|
748
|
+
* @param {File|FileLikeObject} object
|
749
|
+
* @private
|
750
|
+
*/
|
751
|
+
FileLikeObject.prototype._createFromObject = function(object) {
|
752
|
+
this.lastModifiedDate = angular.copy(object.lastModifiedDate);
|
753
|
+
this.size = object.size;
|
754
|
+
this.type = object.type;
|
755
|
+
this.name = object.name;
|
756
|
+
};
|
732
757
|
|
733
758
|
// ---------------------------
|
734
759
|
|
735
760
|
/**
|
736
761
|
* Creates an instance of FileItem
|
737
762
|
* @param {FileUploader} uploader
|
738
|
-
* @param {File|
|
739
|
-
* @param {
|
740
|
-
* @param {HTMLInputElement} [input]
|
763
|
+
* @param {File|HTMLInputElement|Object} some
|
764
|
+
* @param {Object} options
|
741
765
|
* @constructor
|
742
766
|
*/
|
743
|
-
function FileItem(uploader,
|
744
|
-
|
767
|
+
function FileItem(uploader, some, options) {
|
768
|
+
var isInput = angular.isElement(some);
|
769
|
+
var input = isInput ? angular.element(some) : null;
|
770
|
+
var file = !isInput ? some : null;
|
745
771
|
|
746
772
|
angular.extend(this, {
|
747
773
|
url: uploader.url,
|
@@ -753,7 +779,7 @@ module
|
|
753
779
|
method: uploader.method
|
754
780
|
}, options, {
|
755
781
|
uploader: uploader,
|
756
|
-
file:
|
782
|
+
file: new FileUploader.FileLikeObject(some),
|
757
783
|
isReady: false,
|
758
784
|
isUploading: false,
|
759
785
|
isUploaded: false,
|
@@ -762,13 +788,11 @@ module
|
|
762
788
|
isError: false,
|
763
789
|
progress: 0,
|
764
790
|
index: null,
|
765
|
-
_file: file
|
791
|
+
_file: file,
|
792
|
+
_input: input
|
766
793
|
});
|
767
794
|
|
768
|
-
if (input)
|
769
|
-
this._input = angular.element(input);
|
770
|
-
this._replaceNode(this._input);
|
771
|
-
}
|
795
|
+
if (input) this._replaceNode(input);
|
772
796
|
}
|
773
797
|
/**********************
|
774
798
|
* PUBLIC
|
@@ -1048,6 +1072,13 @@ module
|
|
1048
1072
|
* @return {Array<Function>|String|undefined}
|
1049
1073
|
*/
|
1050
1074
|
FileSelect.prototype.getFilters = function() {};
|
1075
|
+
/**
|
1076
|
+
* If returns "true" then HTMLInputElement will be cleared
|
1077
|
+
* @returns {Boolean}
|
1078
|
+
*/
|
1079
|
+
FileSelect.prototype.isEmptyAfterSelection = function() {
|
1080
|
+
return !!this.element.attr('multiple');
|
1081
|
+
};
|
1051
1082
|
/**
|
1052
1083
|
* Event handler
|
1053
1084
|
*/
|
@@ -1058,7 +1089,7 @@ module
|
|
1058
1089
|
|
1059
1090
|
if (!this.uploader.isHTML5) this.destroy();
|
1060
1091
|
this.uploader.addToQueue(files, options, filters);
|
1061
|
-
if (this.
|
1092
|
+
if (this.isEmptyAfterSelection()) this.element.prop('value', null);
|
1062
1093
|
};
|
1063
1094
|
|
1064
1095
|
// ---------------------------
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: angularjs-file-upload-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marthyn Olthof
|
@@ -97,3 +97,4 @@ summary: It supports drag-n-drop upload, upload progress, validation filters and
|
|
97
97
|
upload method for older browsers. Works with any server side platform which supports
|
98
98
|
standard HTML form uploads.
|
99
99
|
test_files: []
|
100
|
+
has_rdoc:
|