84 lines
4.8 KiB
JavaScript
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' || fieldName === 'customerCompany') {
|
|
widgetDependencyHandlerService.handleValueChange(fieldName, null, source);
|
|
}
|
|
}
|
|
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
|
|
};
|
|
}]);
|
|
})();
|