Better search functionality

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling 2016-10-11 10:35:02 +02:00
parent b1314942d7
commit d511acdf66
No known key found for this signature in database
GPG Key ID: E166FD8976B3BAC8
1 changed files with 23 additions and 5 deletions

View File

@ -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) { filter: function(query) {
var $appList = $('#apps-list'), var $appList = $('#apps-list'),
$emptyList = $('#apps-list-empty'); $emptyList = $('#apps-list-empty');
@ -510,17 +528,17 @@ OC.Settings.Apps = OC.Settings.Apps || {
// App Name // App Name
var apps = _.filter(OC.Settings.Apps.State.apps, function (app) { 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 // App ID
apps = apps.concat(_.filter(OC.Settings.Apps.State.apps, function (app) { 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 // App Description
apps = apps.concat(_.filter(OC.Settings.Apps.State.apps, function (app) { 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 // 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 // App status