/**
* @file Configures the search service client, assembles all parts and attaches it to the ui (start()).
* @version {@link https://github.com/JohT/search-menu-ui/releases/latest latest version}
* @author JohT
*/
var httpSearchClient;
var searchService = searchService || require("./search-service-client"); // supports vanilla js & npm
var searchmenu = searchmenu || require("./search-menu-ui"); // supports vanilla js & npm
var restruct = restruct || require("./restruct-data-client"); // supports vanilla js & npm
var template_resolver = template_resolver || require("data-restructor/devdist/templateResolver"); // supports vanilla js & npm
// Locally mocked search with a view pre-queried search results (for local debugging and testing)
httpSearchClient = new searchService.HttpSearchConfig()
.searchMethod("GET")
.searchUrlTemplate("/data/AccountSearchResult-{{searchtext}}.json")
.debugMode(true)
.build();
// Search using elasticsearch multisearch
httpSearchClient = new searchService.HttpSearchConfig()
.searchMethod("POST")
.searchContentType("application/x-ndjson")
.searchUrlTemplate(
"http://localhost:9200/_msearch/template?filter_path=responses.hits.total.value,responses.hits.hits._source,hits.responses.hits.highlight,responses.aggregations.*.buckets"
)
.searchBodyTemplate(
'{"index": "accounts"}\n' +
'{"id": "account_search_as_you_type_v1", "params":{{jsonSearchParameters}}}\n' +
'{"index": "accounts"}\n' +
'{"id": "account_tags_v1", "params":{"account_aggregations_prefix": "", "account_aggregations_size": 10}}\n' +
'{"index": "sites"}\n' +
'{"id": "sites_default_v1", "params":{"tenantnumber":{{tenantnumber}}}}\n' +
'{"index": "sites"}\n' +
'{"id": "sites_search_as_you_type_v1", "params":{{jsonSearchParameters}}}\n'
)
.debugMode(true)
.build();
// Configure and start the search bar functionality.
new searchmenu.SearchMenuAPI()
.searchService(httpSearchClient.search)
.dataConverter(new restruct.DataConverter().createDataConverter(true))
.templateResolver(function (template, sourceObject) {
return new template_resolver.Resolver(sourceObject).resolveTemplate(template);
})
.addPredefinedParametersTo(function (searchParameters) {
searchParameters.tenantnumber = 999;
})
.addFocusStyleClassOnEveryCreatedElement("searchresultfocus")
.start();