From d511acdf665357493fe34bbe631086760a5b9d12 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 11 Oct 2016 10:35:02 +0200 Subject: [PATCH] Better search functionality Signed-off-by: Joas Schilling --- settings/js/apps.js | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/settings/js/apps.js b/settings/js/apps.js index cd554812ec..5fc366c492 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -494,6 +494,24 @@ OC.Settings.Apps = OC.Settings.Apps || { ); }, + /** + * Splits the query by spaces and tries to find all substring in the app + * @param {string} string + * @param {string} query + * @returns {boolean} + */ + _search: function(string, query) { + var keywords = query.split(' '), + stringLower = string.toLowerCase(), + found = true; + + _.each(keywords, function(keyword) { + found = found && stringLower.indexOf(keyword) !== -1; + }); + + return found; + }, + filter: function(query) { var $appList = $('#apps-list'), $emptyList = $('#apps-list-empty'); @@ -510,17 +528,17 @@ OC.Settings.Apps = OC.Settings.Apps || { // App Name var apps = _.filter(OC.Settings.Apps.State.apps, function (app) { - return app.name.toLowerCase().indexOf(query) !== -1; + return OC.Settings.Apps._search(app.name, query); }); // App ID apps = apps.concat(_.filter(OC.Settings.Apps.State.apps, function (app) { - return app.id.toLowerCase().indexOf(query) !== -1; + return OC.Settings.Apps._search(app.id, query); })); // App Description apps = apps.concat(_.filter(OC.Settings.Apps.State.apps, function (app) { - return app.description.toLowerCase().indexOf(query) !== -1; + return OC.Settings.Apps._search(app.description, query); })); // Author Name @@ -540,9 +558,9 @@ OC.Settings.Apps = OC.Settings.Apps || { } } }); - return authors.join(' ').toLowerCase().indexOf(query) !== -1; + return OC.Settings.Apps._search(authors.join(' '), query); } - return app.author.toLowerCase().indexOf(query) !== -1; + return OC.Settings.Apps._search(app.author, query); })); // App status