bitbake: toaster: work-around our lack of a synchronous fetch for typeaheads

The Twitter typeahead.js library expects the developer to use
a source which does a local search for matching suggestions, then
falls back to a remote search if that doesn't return enough
results.

However, in Toaster, we don't do any caching of the suggestions
for a typeahead, so our source only works in asynchronous mode.

Consequently, we see fewer than the expected number of suggestions
if the typeahead has already shown suggestions matching a query.
For example, searching for "meta-n" in the layers typeahead will
show the results for this query; but when the query changes to
"meta-ne", a new set of results is fetched, which mostly overlaps
with the results for "meta-n". The typeahead assumes that the
overlapping items are locally cached and have been delivered
synchronously, and just appends the new results which don't
overlap with the previous query. But because we don't provide any
results synchronously, we just end up with the single
non-overlapping result in the drop-down.

This can be fixed by hacking typeahead.js so that instead of
appending asynchronous results, we always overwrite and redraw
the whole typeahead menu.

This is a temporary fix, and should be properly fixed (when we
have time), perhaps by using typeahead.js's associated Bloodhound
library.

Added a note about the hack to the license file as an explanation
of why the unminified JS file is included in Toaster.

(Bitbake rev: afbaf326e1123c92952fa71e0e820a4ff83488ca)

Signed-off-by: Elliot Smith <elliot.smith@intel.com>
Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Elliot Smith 2016-04-18 16:59:05 +01:00 committed by Richard Purdie
parent cd7b48cd0d
commit 79e0eb9e52
4 changed files with 1553 additions and 9 deletions

View File

@ -9,6 +9,6 @@ Foundation and individual contributors.
* jQuery is redistributed under the MIT license.
* Twitter typeahead.js redistributed under the MIT license.
* Twitter typeahead.js redistributed under the MIT license. Note that the JS source has one small modification, so the full unminified file is currently included to make it obvious where this is.
* QUnit is redistributed under the MIT license.

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -21,7 +21,7 @@
</script>
<script src="{% static 'js/bootstrap.min.js' %}">
</script>
<script src="{% static 'js/typeahead.jquery.min.js' %}">
<script src="{% static 'js/typeahead.jquery.js' %}">
</script>
<script src="{% static 'js/prettify.js' %}">
</script>