Upon receiving the query from a search box, this component calls the API to send a /search
request.
This component has 2 subcomponents, “contents” and “ratings”. When you add the “ratings” subcomponent directly to the results component, it adds a search rating and a rating inside the “contents” component. When you add the “ratings” subcomponent to the “contents” subcomponent, it adds a rating option only to the content.
Create this component with the following code:
sdk.component('results', target:String, options:Object);
By default, this component looks like this:
This is an HTML component. For example, the "#inbenta" target looks like this:
<div id="inbenta"></div>
You can configure several options for this component:
Name | Type | Default | Description |
---|---|---|---|
categoryId | integer or string | 0 | Knowledge instance category ID. When a string, it is the category IDs separated by commas. |
length | integer | 5 | Maximum number of items that may be returned in collection. Minimum: 1. Max: 100 |
showBackButton | boolean | false | Show back button with event 'back' |
openUniqueContent | boolean | false | When a search returns only one content, this content opens and a click is tracked. |
showLastQueryMessage | boolean | true | When the user question does not obtain any results and this option is set to true , the SDK shows "We're sorry, but we couldn't find any answer for your query [end user's latest query].". If the option is set to false , the SDK shows "We're sorry, but we couldn't find any answer for your query.". |
Default options object
{
categoryId: 0,
length: 5,
showBackButton: false,
contents: { <more info in subcomponent> },
ratings: { <more info in subcomponent> },
showLastQueryMessage: true
}
Methods that can be used in this component.
Name | Description |
---|---|
setQuery(query: String) |
Set the query parameter to make a search. |
getSearchCode() |
Get the searchCode of the last search. |
openContentById(contendId:Integer, doClick:Boolean) |
Open content by id. doclick true by default. |
openContentBySlug(contendSlug:String, doClick:Boolean) |
Open content by slug. doclick true by default. |
linkToSearchBox(component: Component) |
Link a search-box component to this results component. When the search-box is submitted, the query is changed |
linkToAutocompleter(component: Component) |
Link a typeahead autocomplete component to this results component. When the autocompleter is clicked, the content is loaded. |
updateActiveContent(contendId:Integer) |
Set the contentId parameter as the active content |
setContentsDataInterceptor(interceptor:function) |
Set a contents interceptor. |
setContents(contents) |
This method allows to populate the component with any array of contents desired. Contents object passed to the method has to have the same structure that the result obtained from the Inbenta KM API contents routes |
setRelatedDataInterceptor(interceptor:function) |
Set a related interceptor. |
resetResults() |
This method resets the results component to its initial state. |
This component contains the following sub-components that you can configure:
Name | Description |
---|---|
contents | Component to render each content |
ratings | Component to render search rating and content rating |
The “ratings” subcomponent can be used to add ratings to the search results as a whole as well as to each individual content returned as a search result, or to add a rating only inside the “contents” component. The default configuration has both search ratings and content ratings.
Events to listen on this component:
Name | Params | Description |
---|---|---|
back | null |
Sent whether the back button is clicked |
click | content : Content object |
Sent whether a content is clicked |
expand | content : Content object |
Sent whether a content is expanded1 |
changed | searchData : Object with the search data returned by the API |
Sent when results change |
relatedClick | integer : Related content id |
Sent whether a related content is clicked |
decisionTreeClick | decisionTree : Decision tree object |
Sent whether a decision tree content is clicked |
rateContent | rating : Rating object |
Sent whether a content rating is clicked |
rateSearch | rating : Rating object |
Sent whether a search rating is clicked |
1 Contents that open automatically are expanded by default and cannot be contracted. This happens with the option openUniqueContent
and returns only one result, or when the component calls the openContentBySlug
and openContentById
methods.
This component calls the API to do the following:
/search
request to get the result of the question with the tracking option set to true./tracking/events
endpoint.A click is automatically tracked when the component is already opened because there is only one result and either
openUniqueContent
option is set to true
, ORopenContentById
or openContentBySlug
These are the labels for this component. You can replace the default labels of each component when you configure the SDK creation.
Name | Default | Description |
---|---|---|
RESULTS_TITLE | Results: |
Results title. |
RESULTS_TEXT | Search results for |
Results text. Hidden by CSS. |
RESULTS_NOT_FOUND_TITLE | No results found |
This label appear as a title when no results are found. |
RESULTS_NOT_FOUND_TEXT | We’re sorry, but we couldn’t find any answer for your query. |
This label appear as a text when no results are found. |
RESULTS_BACK_BUTTON | Back |
Text for the button that triggers a "Back" event. Only displayed when back button is active. |
var searchBox = sdk.component('searchBox', '#form');
var results = sdk.component('results', '#results');
results.linkToSearchBox(searchBox);
myForm
form, triggers setQuery
from the input to produce the component.var results = sdk.component('results', '#results');
document.querySelector("#myForm").addEventListener("submit", function(e){
results.setQuery(document.getElementById('inbentaInput').value);
});
var searchBox = sdk.component('searchBox', '#form');
var results = sdk.component('results', '#results', {
ratings: {
labels: {
"RATINGS_INTRODUCTION": "Are these results relevant?",
"RATINGS_COMMENT_INTRODUCTION": "Why these results are not relevant?"
},
elements:[
{
id:1,
label: 'Yes',
comment: false
},
{
id:2,
label: 'No',
comment: true
}
]
},
});
results.linkToSearchBox(searchBox);
var results = sdk.component('results', '#results', {
contents: {
ratings: {
elements: [
{
id: 1,
label: 'Yes',
comment: false
},
{
id: 2,
label: 'No',
comment: true
}
]
}
}
});
var results = sdk.component('results', '#results', {});
sdk.client.getContentsById('2,14,10').then(function(response) {
results.setContents(response.data);
});