register method
- String widgetId,
- dynamic searchWidget
This method can be used to register a search widget with a unique id
.
It returns the instance of the SearchWidget class. The following example registers a widget with the second param as a Map.
final searchBase = SearchBase(
'gitxplore-app',
'https://@arc-cluster-appbase-demo-6pjy6z.searchbase.io',
'a03a1cb71321:75b6603d-9456-4a5a-af6b-a487b309eb61'
);
searchBase.register('search-widget', {
dataField: ['title', 'description'],
value: ''
});
The following example registers a SearchWidget with second param as an instance of SearchWidget class.
final searchBase = SearchBase(
'gitxplore-app',
'https://@arc-cluster-appbase-demo-6pjy6z.searchbase.io',
'a03a1cb71321:75b6603d-9456-4a5a-af6b-a487b309eb61'
);
final searchWidget = SearchWidget(
'gitxplore-app',
'https://@arc-cluster-appbase-demo-6pjy6z.searchbase.io',
'a03a1cb71321:75b6603d-9456-4a5a-af6b-a487b309eb61',
'search-widget',
dataField: ['title', 'description'],
value: ''
);
searchBase.register('search-widget', searchWidget);
Additionally, you can override the global configurations by defining it for a particular widget. For example, to register a widget with a different index
name.
Implementation
SearchWidget register(String widgetId, dynamic searchWidget) {
if (widgetId == "") {
throw (ErrorMessages[InvalidIndex]);
}
if (this._searchWidgets.containsKey(widgetId)) {
// return existing instance
return this._searchWidgets[widgetId];
}
SearchWidget componentInstance;
if (searchWidget != null && searchWidget is Map) {
// create instance from object with all the options
componentInstance = SearchWidget(
searchWidget["index"] != null ? searchWidget["index"] : this.index,
searchWidget["url"] != null ? searchWidget["url"] : this.url,
searchWidget["credentials"] != null
? searchWidget["credentials"]
: this.credentials,
widgetId,
headers: searchWidget["headers"] is Map<String, String>
? searchWidget["headers"]
: this.headers,
transformRequest: searchWidget["transformRequest"] is TransformRequest
? searchWidget["transformRequest"]
: this.transformRequest,
transformResponse:
searchWidget["transformResponse"] is TransformResponse
? searchWidget["transformResponse"]
: this.transformResponse,
appbaseConfig: searchWidget["appbaseConfig"] is AppbaseSettings
? searchWidget["appbaseConfig"]
: this.appbaseConfig,
type: searchWidget["type"],
dataField: searchWidget["dataField"],
react: searchWidget["react"],
queryFormat: searchWidget[" queryFormat"],
categoryField: searchWidget["categoryField"],
categoryValue: searchWidget["categoryValue"],
nestedField: searchWidget["nestedField"],
from: searchWidget["from"],
size: searchWidget["size"],
sortBy: searchWidget["sortBy"],
aggregationField: searchWidget["aggregationField"],
after: searchWidget["after"],
includeNullValues: searchWidget["includeNullValues"],
includeFields: searchWidget["includeFields"],
excludeFields: searchWidget["excludeFields"],
results: searchWidget["results"],
fuzziness: searchWidget["fuzziness"],
searchOperators: searchWidget["searchOperators"],
highlight: searchWidget["highlight"],
highlightField: searchWidget["highlightField"],
customHighlight: searchWidget["customHighlight"],
interval: searchWidget["interval"],
aggregations: searchWidget["aggregations"],
missingLabel: searchWidget["missingLabel"],
showMissing: searchWidget["showMissing"],
execute: searchWidget["execute"],
enableSynonyms: searchWidget["enableSynonyms"],
selectAllLabel: searchWidget["selectAllLabel"],
pagination: searchWidget["pagination"],
queryString: searchWidget["queryString"],
defaultQuery: searchWidget["defaultQuery"],
customQuery: searchWidget["customQuery"],
beforeValueChange: searchWidget["beforeValueChange"],
onValueChange: searchWidget["onValueChange"],
onResults: searchWidget["onResults"],
onAggregationData: searchWidget["onAggregationData"],
onError: searchWidget["onError"],
onRequestStatusChange: searchWidget["onRequestStatusChange"],
onQueryChange: searchWidget["onQueryChange"],
enablePopularSuggestions: searchWidget["enablePopularSuggestions"],
maxPopularSuggestions: searchWidget["maxPopularSuggestions"],
showDistinctSuggestions: searchWidget["showDistinctSuggestions"],
preserveResults: searchWidget["preserveResults"],
value: searchWidget["value"],
);
} else if (searchWidget is SearchWidget) {
componentInstance = searchWidget;
// set the id property on instance
componentInstance.id = widgetId;
}
// register component
this._searchWidgets[widgetId] = componentInstance;
// set the search base instance as parent
componentInstance.setParent(this);
return componentInstance;
}