[Pkg-owncloud-commits] [owncloud] 34/258: Fixed scrollto for search results

David Prévot taffit at moszumanska.debian.org
Sat Oct 11 17:22:17 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository owncloud.

commit 8e77ca62012591953cbbfcdfeed076a490d0052c
Author: Vincent Petry <pvince81 at owncloud.com>
Date:   Thu Sep 4 12:20:11 2014 +0200

    Fixed scrollto for search results
    
    Now passing the "scrollto" URL argument to the file list class which
    will also automatically scroll and highlight the matching element.
    
    This code is triggered by the search box when in a different folder and
    also by the activity app.
---
 apps/files/js/app.js      |  6 ++++--
 apps/files/js/filelist.js | 52 +++++++++++++++++++++++++++++------------------
 2 files changed, 36 insertions(+), 22 deletions(-)

diff --git a/apps/files/js/app.js b/apps/files/js/app.js
index 6f5206f..89098e3 100644
--- a/apps/files/js/app.js
+++ b/apps/files/js/app.js
@@ -24,6 +24,7 @@
 		initialize: function() {
 			this.navigation = new OCA.Files.Navigation($('#app-navigation'));
 
+			var urlParams = OC.Util.History.parseUrlQuery();
 			var fileActions = new OCA.Files.FileActions();
 			// default actions
 			fileActions.registerDefaultActions();
@@ -47,7 +48,8 @@
 					dragOptions: dragOptions,
 					folderDropOptions: folderDropOptions,
 					fileActions: fileActions,
-					allowLegacyActions: true
+					allowLegacyActions: true,
+					scrollTo: urlParams.scrollto
 				}
 			);
 			this.files.initialize();
@@ -58,7 +60,7 @@
 
 			this._setupEvents();
 			// trigger URL change event handlers
-			this._onPopState(OC.Util.History.parseUrlQuery());
+			this._onPopState(urlParams);
 		},
 
 		/**
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 7d568fd..402abbd 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -103,9 +103,10 @@
 		 * @param $el container element with existing markup for the #controls
 		 * and a table
 		 * @param options map of options, see other parameters
-		 * @param scrollContainer scrollable container, defaults to $(window)
-		 * @param dragOptions drag options, disabled by default
-		 * @param folderDropOptions folder drop options, disabled by default
+		 * @param options.scrollContainer scrollable container, defaults to $(window)
+		 * @param options.dragOptions drag options, disabled by default
+		 * @param options.folderDropOptions folder drop options, disabled by default
+		 * @param options.scrollTo name of file to scroll to after the first load
 		 */
 		initialize: function($el, options) {
 			var self = this;
@@ -165,6 +166,12 @@
 			this.setupUploadEvents();
 
 			this.$container.on('scroll', _.bind(this._onScroll, this));
+
+			if (options.scrollTo) {
+				this.$fileList.one('updated', function() {
+					self.scrollTo(options.scrollTo);
+				});
+			}
 		},
 
 		/**
@@ -1507,16 +1514,15 @@
 			this.$table.removeClass('hidden');
 		},
 		scrollTo:function(file) {
-			//scroll to and highlight preselected file
-			var $scrollToRow = this.findFileEl(file);
-			if ($scrollToRow.exists()) {
-				$scrollToRow.addClass('searchresult');
-				$(window).scrollTop($scrollToRow.position().top);
-				//remove highlight when hovered over
-				$scrollToRow.one('hover', function() {
-					$scrollToRow.removeClass('searchresult');
-				});
+			if (!_.isArray(file)) {
+				file = [file];
 			}
+			this.highlightFiles(file, function($tr) {
+				$tr.addClass('searchresult');
+				$tr.one('hover', function() {
+					$tr.removeClass('searchresult');
+				});
+			});
 		},
 		filter:function(query) {
 			this.$fileList.find('tr').each(function(i,e) {
@@ -1864,9 +1870,11 @@
 		/**
 		 * Scroll to the last file of the given list
 		 * Highlight the list of files
-		 * @param files array of filenames
+		 * @param files array of filenames,
+		 * @param {Function} [highlightFunction] optional function
+		 * to be called after the scrolling is finished
 		 */
-		highlightFiles: function(files) {
+		highlightFiles: function(files, highlightFunction) {
 			// Detection of the uploaded element
 			var filename = files[files.length - 1];
 			var $fileRow = this.findFileEl(filename);
@@ -1891,12 +1899,16 @@
 				duration: 500,
 				complete: function() {
 					// Highlighting function
-					var highlightRow = function($fileRow) {
-						$fileRow.addClass("highlightUploaded");
-						setTimeout(function() {
-							$fileRow.removeClass("highlightUploaded");
-						}, 2500);
-					};
+					var highlightRow = highlightFunction;
+
+					if (!highlightRow) {
+						highlightRow = function($fileRow) {
+							$fileRow.addClass("highlightUploaded");
+							setTimeout(function() {
+								$fileRow.removeClass("highlightUploaded");
+							}, 2500);
+						};
+					}
 
 					// Loop over uploaded files
 					for(var i=0; i<files.length; i++) {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list