+ ]
+ return new MergingLoader({
+ sessionKey: key,
+ // For every session, search for every object type
+ children: searchable_objects.map(function(obj_type){
+ return new MultipageLoader({
+ sessionKey: key,
+ objectKind: obj_type.label,
+ loadFunc: function(filters) {
+ var tsquery = to_tsquery(q)
+ if (tsquery) {
+ filters = filters.slice(0)
+ filters.push(['any', '@@', tsquery])
+ }
+ // Apply additional type dependant filters, if any.
+ for (var f of obj_type.filters) {
+ filters.push(f)
+ }
+ return vnode.state.sessionDB.request(session, obj_type.api_path, {
+ data: {
+ filters: JSON.stringify(filters),
+ count: 'none',
+ },
+ }).then(function(resp) {
+ resp.items.map(function(item) {
+ item.workbenchBaseURL = workbenchBaseURL
+ item.objectType = obj_type
+ })
+ return resp
+ })
+ },
+ })
+ })