You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
4.8 KiB
150 lines
4.8 KiB
/*
|
|
* The SearchRunner is a wrapper to run searches via the core search manager that
|
|
* encapsulates the event handlers to ensure search manager events are handled uniformly
|
|
*/
|
|
|
|
define([
|
|
'common/Class',
|
|
'/static/app/DA-ITSI-CP-windows-dashboards/js/common/contrib/underscore.js'
|
|
],
|
|
function(
|
|
Class,
|
|
_
|
|
) {
|
|
var SearchRunner = function(
|
|
searchManager,
|
|
resultsModel,
|
|
failureCallback,
|
|
successCallback,
|
|
startCallback,
|
|
progressCallback
|
|
) {
|
|
this.checkValidProperty(searchManager);
|
|
this.checkValidProperty(failureCallback);
|
|
this.checkValidProperty(successCallback);
|
|
this.checkValidProperty(startCallback);
|
|
this.checkValidProperty(progressCallback);
|
|
|
|
if (_.isUndefined(resultsModel) || _.isNull(resultsModel)) {
|
|
resultsModel = searchManager.data('preview', {
|
|
count: 0,
|
|
offset: 0
|
|
});
|
|
}
|
|
|
|
this.checkValidProperty(resultsModel);
|
|
|
|
this._searchManager = searchManager;
|
|
this._resultsModel = resultsModel;
|
|
this._failureCallback = failureCallback;
|
|
this._successCallback = successCallback;
|
|
this._startCallback = startCallback;
|
|
this._progressCallback = progressCallback;
|
|
}
|
|
|
|
var SearchRunnerClass = Class.makeClass(SearchRunner);
|
|
|
|
SearchRunnerClass.runSearch = function(deferRun) {
|
|
var that = this;
|
|
|
|
this._searchManager.on(
|
|
"search:cancelled",
|
|
function() {
|
|
that._failureCallback(
|
|
'The search got cancelled.' +
|
|
' Search string is: "' + that._searchManager.settings.get('search') + '"'
|
|
);
|
|
},
|
|
this
|
|
);
|
|
|
|
this._searchManager.on(
|
|
"search:error",
|
|
function(message, error) {
|
|
var errorMessage = 'The search returned error "' + message + '".';
|
|
|
|
if (!_.isUndefined(error) && !_.isNull(error)) {
|
|
errorMessage += 'Detailed error: "' + error.error +
|
|
'(' + error.status + ') - ' + error.data.messages[0].text + '"';
|
|
}
|
|
|
|
that._failureCallback(
|
|
errorMessage + ' Search string is: "' + that._searchManager.settings.get('search') + '"'
|
|
);
|
|
},
|
|
this
|
|
);
|
|
|
|
this._searchManager.on(
|
|
"search:fail",
|
|
function(state, job) {
|
|
that._failureCallback(
|
|
'The search failed with error "' + state.content.messages[0].text + '".' +
|
|
' Search string is: "' + that._searchManager.settings.get('search') + '"'
|
|
);
|
|
},
|
|
this
|
|
);
|
|
|
|
this._searchManager.on(
|
|
"search:start",
|
|
function() {
|
|
that._startCallback();
|
|
},
|
|
this
|
|
);
|
|
|
|
this._searchManager.on(
|
|
"search:progress",
|
|
function(properties) {
|
|
that._progressCallback(properties.content.isDone, properties);
|
|
},
|
|
this
|
|
);
|
|
|
|
this._searchManager.on(
|
|
"search:done",
|
|
function(properties) {
|
|
that._progressCallback(properties.content.isDone, properties);
|
|
},
|
|
this
|
|
);
|
|
|
|
this._resultsModel.on(
|
|
"error",
|
|
function(message, error) {
|
|
var errorMessage = 'The search returned error "' + message + '".';
|
|
|
|
if (!_.isUndefined(error) && !_.isNull(error)) {
|
|
errorMessage += 'Detailed error: "' + error.error +
|
|
'(' + error.status + ') - ' + error.data.messages[0].text + '"';
|
|
}
|
|
|
|
that._failureCallback(
|
|
errorMessage + ' Search string is: "' + that._searchManager.settings.get('search') + '"'
|
|
);
|
|
},
|
|
this
|
|
);
|
|
|
|
this._resultsModel.on(
|
|
"data",
|
|
function() {
|
|
that._successCallback(this._resultsModel.data());
|
|
},
|
|
this
|
|
);
|
|
|
|
if (_.isUndefined(deferRun) || _.isNull(deferRun) || deferRun === true) {
|
|
this._searchManager.startSearch();
|
|
}
|
|
}
|
|
|
|
SearchRunnerClass.checkValidProperty = function(property) {
|
|
if (_.isUndefined(property) || _.isNull(property)) {
|
|
throw property + ' is invalid';
|
|
}
|
|
}
|
|
|
|
return SearchRunner;
|
|
}); |