SmartIT_Extensions/BMC/smart-it-full/scripts/app/common/expression-engine/expression-event-manager-se...

84 lines
4.8 KiB
JavaScript

"use strict";
(function () {
'use strict';
angular.module('myitsmApp')
.service('expressionEventManager', ['objectValueMapperService', 'expressionEvaluatorService', 'widgetDependencyHandlerService', '$log', '$timeout',
function (objectValueMapperService, expressionEvaluatorService, widgetDependencyHandlerService, $log, $timeout) {
function _evaluateFieldExpression(expObj, source) {
if (!objectValueMapperService.isCopyChange()) {
$log.topic('expressions', 'Applying expression ' + expObj.expression + ' to field "' + expObj.field + '", property "' + expObj.property + '"');
var value = expressionEvaluatorService.evaluate(expObj.expression);
objectValueMapperService.setByProperty(expObj.field, expObj.property, value, expObj.isWidget, source);
}
}
function _evaluateProviderActionExpression(fieldName, expObj) {
if (!objectValueMapperService.isCopyChange()) {
$log.topic('expressions', 'Applying Provider action "' + expObj.action.actionName + '" with expression "' + expObj.expression + '"');
var value = expressionEvaluatorService.evaluate(expObj.expression);
if (value) {
objectValueMapperService.setProviderActionToExecute(expObj);
}
else {
objectValueMapperService.clearProviderActionFromList(expObj.action);
objectValueMapperService.clearProviderActionFieldName(fieldName, expObj.actionId);
}
}
}
function handleFieldChange(fieldName, source) {
$log.topic('expressions', 'Widget change "' + fieldName + '"');
var expressions = objectValueMapperService.getExpreesionMapByFieldName(fieldName);
if (expressions && expressions.length) {
_.each(expressions, function (expObj) {
_evaluateFieldExpression(expObj, source);
});
}
if (fieldName === 'company') {
widgetDependencyHandlerService.handleValueChange('company');
}
}
function handleFieldChangeForActions(fieldName) {
$log.topic('provider action expressions', 'Widget change "' + fieldName + '"');
var providerActionExpressions = _.sortBy(objectValueMapperService.getProviderActionExpressionMapByFieldName(fieldName), function (paExpObj) { return paExpObj.action && paExpObj.action.sequenceNo; });
if (providerActionExpressions && providerActionExpressions.length) {
_.each(providerActionExpressions, function (providerActionExpObj) {
$timeout(function () {
if (providerActionExpObj.action) {
providerActionExpObj.action.actionFieldName = fieldName;
providerActionExpObj.action.actionId = providerActionExpObj.actionId;
}
objectValueMapperService.setProviderActionFieldName(fieldName, providerActionExpObj.actionId);
_evaluateProviderActionExpression(fieldName, providerActionExpObj);
});
});
}
}
function handleTicketLoad() {
var fields = objectValueMapperService.getAllExpressionFields();
_.each(fields, function (field) {
handleFieldChange(field, 'fromTicketLoad');
});
}
function handleTicketLoadForActions() {
var fields = objectValueMapperService.getAllProviderActionExpressionFields();
_.each(fields, function (field) {
handleFieldChangeForActions(field);
});
}
function handleOOTBFieldValueChange(fieldName, action, source) {
var members = objectValueMapperService.getWidgetMembers(fieldName);
_.each(members, function (member) {
$log.topic('expressions', 'Field Change "' + fieldName + '"');
handleFieldChange(member, source);
});
widgetDependencyHandlerService.handleValueChange(fieldName, action);
}
return {
handleFieldChange: handleFieldChange,
handleOOTBFieldValueChange: handleOOTBFieldValueChange,
handleTicketLoad: handleTicketLoad,
handleTicketLoadForActions: handleTicketLoadForActions,
handleFieldChangeForActions: handleFieldChangeForActions
};
}]);
})();