[ARVADOS] updated: 75759abc62c0204dbaba016e0fc556843bb94b33
git at public.curoverse.com
git at public.curoverse.com
Thu Nov 13 18:30:05 EST 2014
Summary of changes:
.../workbench/app/assets/javascripts/filterable.js | 42 ++++++++++++++++++----
.../app/assets/javascripts/infinite_scroll.js | 8 +++++
.../integration/filterable_infinite_scroll_test.rb | 2 ++
3 files changed, 46 insertions(+), 6 deletions(-)
via 75759abc62c0204dbaba016e0fc556843bb94b33 (commit)
from 95323ba327cadff2d1cb8c3f38c5dbb65dbd3694 (commit)
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 75759abc62c0204dbaba016e0fc556843bb94b33
Author: Tom Clegg <tom at curoverse.com>
Date: Thu Nov 13 18:29:49 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..915b445 100644
--- a/apps/workbench/app/assets/javascripts/infinite_scroll.js
+++ b/apps/workbench/app/assets/javascripts/infinite_scroll.js
@@ -1,4 +1,12 @@
function maybe_load_more_content(event) {
+ // We use setTimeout here to ensure other handlers have a chance
+ // to run before any loading really starts happening.
+ setTimeout(function() {
+ return maybe_load_more_content_now(event);
+ }, 0);
+}
+
+function maybe_load_more_content_now(event) {
var scroller = this; // element with scroll bars
var $container; // element that receives new content
var src; // url for retrieving content
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