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 7ce29c6eef
commit d831156d78
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) {
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