private void InitValueExpr(ExprDependency exprDep, string trigger_control, string parent = CTRL_PARENT_FORM)
 {
     if (exprDep.HasValueDependency)
     {
         foreach (string name in exprDep.ValueExpr)
         {
             EbMobileControl ctrl = GetControl(name);
             EvaluateValueExpr(ctrl, trigger_control, parent);
         }
     }
 }
        public static bool ContainsInValExpr(string dependencySource, string dependency, string parent = CTRL_PARENT_FORM)
        {
            if (!Instance.dependencyMap.HasDependency($"{parent}.{dependencySource}"))
            {
                return(false);
            }

            ExprDependency map = Instance.dependencyMap.GetDependency($"{parent}.{dependencySource}");

            return(map.ValueExpr.Contains(dependency));
        }
 private void InitDisableExpr(ExprDependency exprDep, EbMobileControl currentControl = null, string parent = CTRL_PARENT_FORM)
 {
     if (exprDep.HasDisableDependency)
     {
         foreach (var name in exprDep.DisableExpr)
         {
             EbMobileControl ctrl = GetControl(name);
             this.EvaluateDisableExpr(ctrl, parent);
         }
     }
     else if (currentControl != null && currentControl.DisableExpr?.IsEmpty() == false)
     {
         this.EvaluateDisableExpr(currentControl, parent);
     }
 }
        public static void EvaluateExprOnLoad(EbMobileControl ctrl, FormMode mode)
        {
            string parent = ctrl.Parent;

            if (Instance.dependencyMap.HasDependency($"{parent}.{ctrl.Name}"))
            {
                ExprDependency exprDep = Instance.dependencyMap.GetDependency($"{parent}.{ctrl.Name}");

                if (mode == FormMode.NEW || mode == FormMode.EDIT || mode == FormMode.PREFILL)
                {
                    if (mode == FormMode.NEW || mode == FormMode.PREFILL)
                    {
                        Instance.InitHideExpr(exprDep, ctrl, parent);
                        Instance.InitDisableExpr(exprDep, ctrl, parent);
                    }
                    else if (mode == FormMode.EDIT)
                    {
                        if (ctrl.DoNotPersist)
                        {
                            Instance.InitValueExpr(exprDep, ctrl.Name, parent);
                        }

                        Instance.InitHideExpr(exprDep, ctrl, parent);
                    }
                }
            }
            else
            {
                if (mode == FormMode.NEW || mode == FormMode.EDIT || mode == FormMode.PREFILL)
                {
                    if (ctrl.HasExpression(ExpressionType.HideExpression))
                    {
                        Instance.EvaluateHideExpr(ctrl, parent);
                    }
                    if ((mode == FormMode.NEW || mode == FormMode.PREFILL) && ctrl.HasExpression(ExpressionType.DisableExpression))
                    {
                        Instance.EvaluateDisableExpr(ctrl, parent);
                    }
                }
            }
        }
        private void SetDefaultValueInternal(string controlName, string parent = CTRL_PARENT_FORM)
        {
            if (this.dependencyMap.HasDependency($"{parent}.{controlName}"))
            {
                ExprDependency exprDep = this.dependencyMap.GetDependency($"{parent}.{controlName}");

                if (exprDep.HasDefaultDependency)
                {
                    foreach (string name in exprDep.DefaultValueExpr)
                    {
                        this.SetDefaultValueInternal(name, parent);
                    }
                }
            }

            EbMobileControl ctrl = GetControl($"{parent}.{controlName}");

            if (ctrl.DefaultValueExpression != null && !ctrl.DefaultValueExpression.IsEmpty())
            {
                this.EvaluateDefaultValueExpr(ctrl, parent);
            }
        }
        public static void SwitchViewToEdit()
        {
            foreach (EbMobileControl ctrl in Instance.controls.Values)
            {
                if (!ctrl.ReadOnly)
                {
                    ctrl.SetAsReadOnly(false);
                }

                if (Instance.dependencyMap.HasDependency($"{ctrl.Parent}.{ctrl.Name}"))
                {
                    ExprDependency exprDep = Instance.dependencyMap.GetDependency($"{ctrl.Parent}.{ctrl.Name}");

                    if (ctrl.DoNotPersist)
                    {
                        Instance.InitValueExpr(exprDep, ctrl.Name, ctrl.Parent);
                    }

                    Instance.InitDisableExpr(exprDep, parent: ctrl.Parent);
                }
            }
        }