cluedin-widget
Version:
This project contains all the pages needed for browsing entities and searching them. The aim is to replace the CluedIn.Webapp project with this one when all the pages ( including the Admin page ) will be ported to REACT.
65 lines (48 loc) • 1.49 kB
JavaScript
var request = require( '../helpers/request' );
var entityAPI = require( '../../iso/entity' );
export function search( q, order, filters, page ) {
let url = 'api/search?q=';
let filterUrl = '';
if( filters && filters.length > 0 ) {
filters.forEach( function( f ) {
if( filterUrl ) {
filterUrl += ' AND ';
}
filterUrl += f.filterType + ':' + ( f.facet.term || f.facet.time );
} );
filterUrl = filterUrl.replace( 'entitytype', 'entityType' );
}
url += q;
if( filterUrl ) {
url += ('&type=' + filterUrl);
}
if( page ) {
url += ('&page=' + page);
}
if( order && order !== 'relevance' ) {
let direction = '';
if( order === 'new' ) {
direction = 'desc'
}
if( order === 'old' ) {
direction = 'asc'
}
url += '&dateSort=true&direction=' + direction;
}
return request.apiRequest( 'GET', url ).then( function( resp ) {
var result = resp.body;
if( result.Hits ) {
result.Hits = result.Hits.map( ( entity )=> {
return entityAPI.toVM( entity, false, resp.__token );
} );
}
return result;
} );
}
export function suggestedSearch( q ) {
let url = 'api/search/suggest?q=';
url += q;
return request.apiRequest( 'GET', url ).then( function( resp ) {
return resp.body;
} );
}