فهرست منبع

Fix #252: Enhance async batch completion

Kartik Visweswaran 10 سال پیش
والد
کامیت
003dbadffc
3فایلهای تغییر یافته به همراه29 افزوده شده و 25 حذف شده
  1. 1 0
      CHANGE.md
  2. 28 25
      js/fileinput.js
  3. 0 0
      js/fileinput.min.js

+ 1 - 0
CHANGE.md

@@ -14,6 +14,7 @@ version 4.1.9
 10. (bug #249): Fix error message content display.
 11. (enh #250): Change default slug routine to allow umlauts in filenames.
 12. (enh #251): Add Italian localizations.
+13. (enh #252): Enhance async batch completion.
 
 version 4.1.8
 =============

+ 28 - 25
js/fileinput.js

@@ -77,7 +77,7 @@
                 }
                 return out;
             },
-            add: function (id, content, config, append) {
+            add: function (id, content, config, tags, append) {
                 var data = $.extend(true, {}, previewCache.data[id]), index;
                 if (!isArray(content)) {
                     content = content.split(data.delimiter);
@@ -85,10 +85,12 @@
                 if (append) {
                     index = data.content.push(content) - 1;
                     data.config[index] = config;
+                    data.tags[index] = tags;
                 } else {
                     index = content.length;
                     data.content = content;
                     data.config = config;
+                    data.tags = tags;
                 }
                 previewCache.data[id] = data;
                 return index;
@@ -911,20 +913,21 @@
                         self.initialCaption = '';
                     }
                 };
+                
             self.$preview.find('.kv-file-remove').each(function () {
-                var $el = $(this), $frame = $el.closest('.file-preview-frame'),
-                    cache = previewCache.data[self.id], settings, params,
-                    vUrl = $el.data('url') || self.deleteUrl, vKey = $el.data('key'),
-                    index = parseInt($frame.data('fileindex').replace('init_', '')),
-                    config = isEmpty(cache.config) && isEmpty(cache.config[index]) ? null : cache.config[index],
-                    extraData = isEmpty(config) || isEmpty(config.extra) ? deleteExtraData : config.extra;
+                var $el = $(this), vUrl = $el.data('url') || self.deleteUrl, vKey = $el.data('key');
+                if (isEmpty(vUrl) || vKey === undefined) {
+                    return;
+                }
+                var $frame = $el.closest('.file-preview-frame'), cache = previewCache.data[self.id], 
+                    settings, params,index = $frame.data('fileindex'), config, extraData;
+                index = parseInt(index.replace('init_', ''));
+                config = isEmpty(cache.config) && isEmpty(cache.config[index]) ? null : cache.config[index];
+                extraData = isEmpty(config) || isEmpty(config.extra) ? deleteExtraData : config.extra;
                 if (typeof extraData === "function") {
                     extraData = extraData();
                 }
                 params = {id: $el.attr('id'), key: vKey, extra: extraData};
-                if (vUrl === undefined || vKey === undefined) {
-                    return;
-                }
                 settings = $.extend({
                     url: vUrl,
                     type: 'DELETE',
@@ -1220,20 +1223,22 @@
             }
             chkComplete = function () {
                 var $thumbs = self.$preview.find(PREVIEW_FRAMES + '.file-uploading');
-                if ($thumbs.length > 0 && self.fileBatchCompleted) {
+                if ($thumbs.length > 0 || self.fileBatchCompleted) {
                     return;
                 }
-                previewCache.set(self.id, self.uploadCache.content, self.uploadCache.config, self.uploadCache.tags,
-                    self.uploadCache.append);
-                if (self.hasInitData) {
-                    self.initPreview();
-                    self.initPreviewDeletes();
-                }
-                self.setProgress(100);
-                self.unlock();
-                self.clearFileInput();
-                self.raise('filebatchuploadcomplete', [self.filestack, self.getExtraData()]);
                 self.fileBatchCompleted = true;
+                setTimeout(function() {
+                    previewCache.set(self.id, self.uploadCache.content, self.uploadCache.config, self.uploadCache.tags,
+                        self.uploadCache.append);
+                    if (self.hasInitData) {
+                        self.initPreview();
+                        self.initPreviewDeletes();
+                    }
+                    self.setProgress(100);
+                    self.unlock();
+                    self.clearFileInput();
+                    self.raise('filebatchuploadcomplete', [self.filestack, self.getExtraData()]);
+                }, 100);
             };
             setIndicator = function (icon, msg) {
                 $indicator.html(config[icon]);
@@ -1297,9 +1302,7 @@
                     if (!allFiles) {
                         self.unlock(false);
                     } else {
-                        setTimeout(function () {
-                            chkComplete();
-                        }, 500);
+                        chkComplete();
                     }
                 }, 100);
             };
@@ -2134,4 +2137,4 @@
             $input.fileinput();
         }
     });
-})(window.jQuery);
+})(window.jQuery);

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
js/fileinput.min.js


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است