From e50641e969602bf43986d66e80ba33522d6f16df Mon Sep 17 00:00:00 2001 From: James Cole Date: Sun, 30 Sep 2018 19:11:49 +0200 Subject: [PATCH] Fix #1751 --- .../Json/AutoCompleteController.php | 27 +++++----- public/js/ff/transactions/show.js | 54 +++++++++---------- 2 files changed, 38 insertions(+), 43 deletions(-) diff --git a/app/Http/Controllers/Json/AutoCompleteController.php b/app/Http/Controllers/Json/AutoCompleteController.php index 2fa745ba89..2aaeb29c03 100644 --- a/app/Http/Controllers/Json/AutoCompleteController.php +++ b/app/Http/Controllers/Json/AutoCompleteController.php @@ -206,17 +206,14 @@ class AutoCompleteController extends Controller sort($return); if ('' !== $search) { - $return = array_values( - array_unique( - array_filter( - $return, function (array $array) use ($search) { - $value = $array['name']; - - return !(false === stripos($value, $search)); - }, ARRAY_FILTER_USE_BOTH - ) - ) + $return = array_filter( + $return, function (array $array) use ($search) { + $haystack = $array['name']; + $result = stripos($haystack, $search); + return !(false === $result); + } ); + } $cache->store($return); @@ -311,10 +308,12 @@ class AutoCompleteController extends Controller // find everything: /** @var Collection $collection */ $collection = $repository->getAccountsByType($types); - $filtered =$collection->filter(function(Account $account) { - return $account->active === true; - }); - $return = array_values(array_unique($filtered->pluck('name')->toArray())); + $filtered = $collection->filter( + function (Account $account) { + return $account->active === true; + } + ); + $return = array_values(array_unique($filtered->pluck('name')->toArray())); return $return; diff --git a/public/js/ff/transactions/show.js b/public/js/ff/transactions/show.js index 3a63d137ae..d3dad51d6b 100644 --- a/public/js/ff/transactions/show.js +++ b/public/js/ff/transactions/show.js @@ -25,41 +25,37 @@ $(function () { var transactions = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), queryTokenizer: Bloodhound.tokenizers.whitespace, + identify: function (obj) { + return obj.id; + }, prefetch: { - url: autoCompleteUri, - filter: function (list) { - return $.map(list, function (name) { - return {name: name.name}; - }); - } + url: autoCompleteUri + // filter: function (list) { + // return $.map(list, function (name) { + // return {name: name.name}; + // }); + // } }, remote: { url: autoCompleteUri + '?search=%QUERY', - wildcard: '%QUERY', - filter: function (list) { - return $.map(list, function (name) { - return {name: name.name}; - }); - } + wildcard: '%QUERY' + // filter: function (list) { + // return $.map(list, function (name) { + // return {name: name.name}; + // }); + // } } }); transactions.initialize(); - var input=$("#link_other"); + var input = $("#link_other"); input.typeahead({hint: true, highlight: true,}, {source: transactions, displayKey: 'name', autoSelect: false}); - - input.change(function () { - var current = input.typeahead("getActive"); - if (current) { - // Some item from your model is active! - if (current.name.toLowerCase() === - input.val().toLowerCase()) { - // This means the exact match is found. Use toLowerCase() if you want case insensitive match. - $('input[name="link_journal_id"]').val(current.id); - } else { - $('input[name="link_journal_id"]').val(0); - } - } else { - $('input[name="link_journal_id"]').val(0); - } - }); + input.bind('typeahead:select', function (ev, suggestion) { + console.log('Selection: ' + suggestion.name); + if (suggestion.name.toLowerCase() === input.val().toLowerCase()) { + // This means the exact match is found. Use toLowerCase() if you want case insensitive match. + $('input[name="link_journal_id"]').val(suggestion.id); + } else { + $('input[name="link_journal_id"]').val(0); + } + }); }); \ No newline at end of file