[ARVADOS] updated: 9100a3b10a79bc07a8b31291dc30e155603ec9b0

git at public.curoverse.com git at public.curoverse.com
Thu Nov 13 21:48:30 EST 2014


Summary of changes:
 apps/workbench/app/assets/javascripts/infinite_scroll.js | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

  discards  75759abc62c0204dbaba016e0fc556843bb94b33 (commit)
       via  9100a3b10a79bc07a8b31291dc30e155603ec9b0 (commit)

This update added new revisions after undoing existing revisions.  That is
to say, the old revision is not a strict subset of the new revision.  This
situation occurs when you --force push a change and generate a repository
containing something like this:

 * -- * -- B -- O -- O -- O (75759abc62c0204dbaba016e0fc556843bb94b33)
            \
             N -- N -- N (9100a3b10a79bc07a8b31291dc30e155603ec9b0)

When this happens we assume that you've already had alert emails for all
of the O revisions, and so we here report only the revisions in the N
branch from the common base, B.

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 9100a3b10a79bc07a8b31291dc30e155603ec9b0
Author: Tom Clegg <tom at curoverse.com>
Date:   Thu Nov 13 21:47:29 2014 -0500

    4024: Use filterable-control input values (if any) when first loading dynamic content.

diff --git a/apps/workbench/app/assets/javascripts/filterable.js b/apps/workbench/app/assets/javascripts/filterable.js
index 8ac1953..6860144 100644
--- a/apps/workbench/app/assets/javascripts/filterable.js
+++ b/apps/workbench/app/assets/javascripts/filterable.js
@@ -49,8 +49,42 @@
 // Combining "select" filterable-controls with infinite-scroll is not
 // yet supported.
 
+function updateFilterableQueryNow($target) {
+    var newquery = $target.data('filterable-query-new');
+    var params = $target.data('infinite-content-params-filterable') || {};
+    params.filters = [['any', 'ilike', '%' + newquery + '%']];
+    $target.data('infinite-content-params-filterable', params);
+    $target.data('filterable-query', newquery);
+}
+
+$(document).on('refresh-content', '[data-infinite-scroller][data-filterable-query]', function(e) {
+    // If some other event causes a refresh-content event while there
+    // is a new query waiting to cooloff, we should use the new query
+    // right away -- otherwise we'd launch an extra ajax request that
+    // would have to be reloaded as soon as the cooloff period ends.
+    if (this != e.target)
+        return;
+    if ($(this).data('filterable-query') == $(this).data('filterable-query-new'))
+        return;
+    updateFilterableQueryNow($(this));
+});
+
 $(document).
-    on('paste keyup input', 'input[type=text].filterable-control', function() {
+    on('ready ajax:success', function() {
+        // Copy any initial input values into
+        // data-filterable-query[-new].
+        $('input[type=text].filterable-control').each(function() {
+            var $this = $(this);
+            var $target = $($this.attr('data-filterable-target'));
+            if ($target.data('filterable-query-new') === undefined) {
+                $target.data('filterable-query', $this.val());
+                $target.data('filterable-query-new', $this.val());
+                updateFilterableQueryNow($target);
+            }
+        });
+    }).
+    on('paste keyup input', 'input[type=text].filterable-control', function(e) {
+        if (this != e.target) return;
         var $target = $($(this).attr('data-filterable-target'));
         var currentquery = $target.data('filterable-query');
         if (currentquery === undefined) currentquery = '';
@@ -74,11 +108,7 @@ $(document).
                 // in the next 1/4 second (like type or erase
                 // characters in the search box), hide the stale
                 // content and ask the server for new results.
-                var newquery = $target.data('filterable-query-new');
-                var params = $target.data('infinite-content-params-filterable') || {};
-                params.filters = [['any', 'ilike', '%' + newquery + '%']];
-                $target.data('infinite-content-params-filterable', params);
-                $target.data('filterable-query', newquery);
+                updateFilterableQueryNow($target);
                 $target.trigger('refresh-content');
             }, 250));
         } else {
diff --git a/apps/workbench/app/assets/javascripts/infinite_scroll.js b/apps/workbench/app/assets/javascripts/infinite_scroll.js
index 0472576..add3a4b 100644
--- a/apps/workbench/app/assets/javascripts/infinite_scroll.js
+++ b/apps/workbench/app/assets/javascripts/infinite_scroll.js
@@ -1,7 +1,17 @@
 function maybe_load_more_content(event) {
-    var scroller = this;        // element with scroll bars
-    var $container;             // element that receives new content
-    var src;                    // url for retrieving content
+    // We use setTimeout here to ensure other handlers have a chance
+    // to run before any loading really starts happening.
+    var scroller, container;
+    if (this != event.target) return;
+    scroller = event.target;
+    $container = $(event.data.container);
+    setTimeout(function() {
+        return maybe_load_more_content_now(scroller, $container)
+    }, 0);
+}
+
+function maybe_load_more_content_now(scroller, $container) {
+    var src;                     // url for retrieving content
     var scrollHeight;
     var spinner, colspan;
     var serial = Date.now();
@@ -11,7 +21,6 @@ function maybe_load_more_content(event) {
         >
         scrollHeight - 50)
     {
-        $container = $(event.data.container);
         if (!$container.attr('data-infinite-content-href0')) {
             // Remember the first page source url, so we can refresh
             // from page 1 later.
diff --git a/apps/workbench/test/integration/filterable_infinite_scroll_test.rb b/apps/workbench/test/integration/filterable_infinite_scroll_test.rb
index 14a0677..4434f9a 100644
--- a/apps/workbench/test/integration/filterable_infinite_scroll_test.rb
+++ b/apps/workbench/test/integration/filterable_infinite_scroll_test.rb
@@ -2,6 +2,8 @@ require 'integration_helper'
 
 class FilterableInfiniteScrollTest < ActionDispatch::IntegrationTest
   setup do
+    headless = Headless.new
+    headless.start
     Capybara.current_driver = :selenium
   end
 

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list