summaryrefslogtreecommitdiffstats
path: root/apps/files/js
diff options
context:
space:
mode:
authorpdessauw <pdessauw@gmail.com>2014-06-19 14:11:57 -0400
committerpdessauw <pdessauw@gmail.com>2014-09-03 09:59:01 -0400
commit0d078e48ce71d35bf240ec2b3d48a37f1b96115a (patch)
tree2d3400060e6f31b18d9f7c239d0ef3cad682ec01 /apps/files/js
parent373d1c5e9f4c85e86a0ac1b53b3e54a0d9cdf06e (diff)
downloadnextcloud-server-0d078e48ce71d35bf240ec2b3d48a37f1b96115a.tar.gz
nextcloud-server-0d078e48ce71d35bf240ec2b3d48a37f1b96115a.zip
Highlight every uploaded files and scroll down to the last one
Diffstat (limited to 'apps/files/js')
-rw-r--r--apps/files/js/file-upload.js8
-rw-r--r--apps/files/js/filelist.js50
2 files changed, 58 insertions, 0 deletions
diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js
index ff999bae4ff..310799b9513 100644
--- a/apps/files/js/file-upload.js
+++ b/apps/files/js/file-upload.js
@@ -427,6 +427,14 @@ OC.Upload = {
data.textStatus = 'servererror';
data.errorThrown = result[0].data.message; // error message has been translated on server
fu._trigger('fail', e, data);
+ } else { // Successful upload
+ // Checking that the uploaded file is the last one and contained in the current directory
+ if (data.files[0] === data.originalFiles[data.originalFiles.length - 1] &&
+ result[0].directory === FileList.getCurrentDirectory()) {
+ // Scroll to the last uploaded file and highlight all of them
+ var fileList = _.pluck(data.originalFiles, 'name');
+ FileList.highlightFiles(fileList);
+ }
}
},
/**
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index fd11a80248d..037e04db21c 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -1856,6 +1856,56 @@
self.updateStorageStatistics();
});
+ },
+
+ /**
+ * Scroll to the last file of the given list
+ * Highlight the list of files
+ * @param files array of filenames
+ */
+ highlightFiles: function(files) {
+ // Detection of the uploaded element
+ var filename = files[files.length - 1];
+ var $fileRow = this.findFileEl(filename);
+
+ while(!$fileRow.exists() && this._nextPage(false) !== false) { // Checking element existence
+ $fileRow = this.findFileEl(filename);
+ }
+
+ if (!$fileRow.exists()) { // Element not present in the file list
+ return;
+ }
+
+ var currentOffset = this.$container.scrollTop();
+ var additionalOffset = this.$el.find("#controls").height()+this.$el.find("#controls").offset().top;
+
+ // Animation
+ var _this = this;
+ this.$container.animate({
+ // Scrolling to the top of the new element
+ scrollTop: currentOffset + $fileRow.offset().top - $fileRow.height() * 2 - additionalOffset
+ }, {
+ duration: 500,
+ complete: function() {
+ // Highlighting function
+ var highlightRow = function($fileRow) {
+ $fileRow.addClass("highlightUploaded");
+ setTimeout(function() {
+ $fileRow.removeClass("highlightUploaded");
+ }, 2500);
+ };
+
+ // Loop over uploaded files
+ for(var i=0; i<files.length; i++) {
+ var $fileRow = _this.findFileEl(files[i]);
+
+ if($fileRow.length !== 0) { // Checking element existence
+ highlightRow($fileRow);
+ }
+ }
+
+ }
+ });
}
};