1var RedNaoFormulaManager = /** @class */ (function () { 2 function RedNaoFormulaManager() { 3 this.Formulas = []; 4 this.RefreshAllFormulas = function () { 5 for (var i = 0; i < this.Formulas.length; i++) 6 this.Formulas[i].UpdateFieldWithValue(this.Data); 7 }; 8 this.Formulas = []; 9 this.Data = {}; 10 var self = this; 11 RedNaoEventManager.Subscribe('formPropertyChanged', function (data) { 12 self.PropertyChanged(data); 13 }); 14 RedNaoEventManager.Subscribe('CalculateFormula', function (data) { 15 return self.CalculateFormula(data.FormulaInstance, data.Formula, data.Values); 16 }); 17 } 18 RedNaoFormulaManager.prototype.CalculateFormula = function (instance, formula, values) { 19 return (function () { 20 var Remote = instance.GetRemote(); 21 formula = new Function('formData,Remote,current', 'return ' + formula.CompiledFormula); 22 return formula(values, Remote, instance.FormElement); 23 })(); 24 }; 25 RedNaoFormulaManager.prototype.PropertyChanged = function (data) { 26 this.SetFormulaValue(data.Field, data.FieldName, data.Value); 27 this.UpdateFormulaFieldsIfNeeded(data.FieldName, data.SubField); 28 RedNaoEventManager.Publish('FormValueChanged', { FieldName: data.FieldName, Data: this.Data }); 29 var actionData = { FieldName: data.FieldName, Data: this.Data, Actions: [] }; 30 RedNaoEventManager.Publish('ProcessConditionsAfterValueChanged', actionData); 31 actionData = actionData.Actions; 32 var i; 33 for (i = 0; i < actionData.length; i++) { 34 this.ExecuteAfterComplete(actionData[i], "hide"); 35 } 36 for (i = 0; i < actionData.length; i++) { 37 this.ExecuteAfterComplete(actionData[i], "show"); 38 } 39 }; 40 ; 41 RedNaoFormulaManager.prototype.ExecuteAfterComplete = function (actionData, type) { 42 actionData.then(function (result) { 43 if (result == null) 44 return; 45 if (typeof result.Actions != 'undefined' && Array.isArray(result.Actions)) 46 for (var _i = 0, _a = result.Actions; _i < _a.length; _i++) { 47 var current = _a[_i]; 48 current.Execute(); 49 } 50 else if (result.ActionType == type) 51 result.Execute(); 52 }); 53 }; 54 RedNaoFormulaManager.prototype.SetFormulaValue = function (field, fieldName, data) { 55 var fieldData = field.GetDataStore(); 56 fieldData.OriginalValues = data; 57 fieldData.numericalValue = 0; 58 if (typeof data.value != 'undefined') 59 fieldData.value = data.value; 60 if (typeof data.selectedValues != 'undefined') 61 fieldData.selectedValues = data.selectedValues; 62 if (typeof data.amount != 'undefined') { 63 fieldData.amount = data.amount; 64 fieldData.numericalValue = data.amount; 65 } 66 if (RedNaoPathExists(fieldData, 'value')) { 67 fieldData.label = fieldData.value.toString(); 68 if (fieldData.value == '') 69 fieldData.value = 0; 70 else if (!isNaN(fieldData.value)) { 71 fieldData.value = parseFloat(data.value); 72 fieldData.numericalValue = data.value; 73 } 74 if (typeof data.numericalValue != 'undefined') 75 fieldData.numericalValue = data.numericalValue; 76 } 77 else { 78 if (typeof fieldData.selectedValues != 'undefined') { 79 fieldData.label = ""; 80 for (var i = 0; i < fieldData.selectedValues.length; i++) { 81 fieldData.label += ";" + fieldData.selectedValues[i].label; 82 } 83 if (fieldData.label.length > 0) 84 fieldData.label = fieldData.label.substring(1); 85 } 86 else { 87 fieldData.label = ''; 88 fieldData.numericalValue = 0; 89 } 90 } 91 this.Data[fieldName] = fieldData; 92 }; 93 RedNaoFormulaManager.prototype.UpdateFormulaFieldsIfNeeded = function (fieldName, subField) { 94 for (var i = 0; i < this.Formulas.length; i++) { 95 if (this.Formulas[i].FieldUsedInFormula(fieldName) && (!this.Formulas[i].FormElement.IsInternal || (this.Formulas[i].FormElement.IsInternal && this.Formulas[i].FormElement.OriginalId != subField))) 96 this.Formulas[i].UpdateFieldWithValue(this.Data); 97 } 98 }; 99 RedNaoFormulaManager.prototype.AddFormula = function (formElement, formula) { 100 this.Formulas.push(new RedNaoFormula(formElement, formula)); 101 }; 102 return RedNaoFormulaManager; 103}()); 104window.RedNaoFormulaManagerVar = new RedNaoFormulaManager(); 105//# sourceMappingURL=formulamanager.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.