コード例 #1
0
        private void EvaluateValueExpr(EbMobileControl ctrl, string trigger_control, string parent)
        {
            string expr = ctrl.ValueExpr.GetCode();

            string computed = GetComputedExpression(expr, ctrl.Name, parent);

            try
            {
                object value = evaluator.Execute(computed);
                ctrl.SetValue(value);
                ctrl.ValueChanged(trigger_control);
            }
            catch (Exception ex)
            {
                EbLog.Info($"Value script evaluation error in control '{ctrl.Name}'");
                EbLog.Error(ex.Message);
            }
        }
コード例 #2
0
        public Color GetBackGroundColor(MobileTableRow row)
        {
            Color color = Color.White;

            if (RowColorExprCode != null)
            {
                try
                {
                    SetRowData(row);
                    string hexcolur = evaluator.Execute <string>(RowColorExprCode);
                    if (!string.IsNullOrWhiteSpace(hexcolur))
                    {
                        color = Color.FromHex(hexcolur);
                    }
                }
                catch (Exception ex)
                {
                }
            }
            return(color);
        }
コード例 #3
0
        public ApiScript Execute(ApiGlobalParent global)
        {
            ApiScript script = new ApiScript();

            try
            {
                if (this.EvaluatorVersion == EvaluatorVersion.Version_1)
                {
                    Script evaluator = GetScriptEvaluatorV1();

                    ScriptState result = evaluator.RunAsync(global as ApiGlobals).Result;

                    if (result.ReturnValue != null)
                    {
                        script.Data = JsonConvert.SerializeObject(result.ReturnValue);
                    }
                    else
                    {
                        script.Data = "script executed without any return";
                    }
                }
                else
                {
                    evaluator.Context           = global as ApiGlobalsCoreBase;
                    evaluator.EvaluateVariable += EvaluateVariable;
                    object o = evaluator.Execute(this.Script.Code.Trim());
                    script.Data = JsonConvert.SerializeObject(o);
                }
            }
            catch (Exception e)
            {
                if (e.InnerException is ExplicitExitException)
                {
                    throw e.InnerException;
                }
                else
                {
                    throw new Exception("Execution Error: " + e.Message);
                }
            }
            return(script);
        }
コード例 #4
0
        public object ExecuteExpression(string code, int irow, EbPdfGlobals globals, string[] _dataFieldsUsed, bool Isprocessed)
        {
            object value = null;

            try
            {
                string processedCode;
                if (Isprocessed)
                {
                    processedCode = code;
                }
                else
                {
                    processedCode = GetProcessedCode(code, _dataFieldsUsed);
                }

                foreach (string calcfd in _dataFieldsUsed)
                {
                    string TName      = calcfd.Split('.')[0];
                    string fName      = calcfd.Split('.')[1];
                    int    tableIndex = Convert.ToInt32(TName.Substring(1));
                    int    RowIndex   = (tableIndex == this.DetailTableIndex) ? irow : 0;
                    globals[TName].Add(fName, new PdfNTV {
                        Name = fName, Type = (PdfEbDbTypes)(int)this.DataSet.Tables[tableIndex].Columns[fName].Type, Value = this.DataSet.Tables[tableIndex].Rows[irow][fName]
                    });
                }
                AddParamsNCalcsInGlobal(globals);
                SetVariable(globals);

                value = evaluator.Execute(processedCode);
            }
            catch (Exception e)
            {
                string s = e.Message + e.StackTrace;
            }
            return(value);
        }