protected override void CreateScreenPrep(IESpace espace, List <IKey> screenskeys) { var screens = espace.GetAllDescendantsOfType <IMobileScreen>().Where(s => screenskeys.Contains(s.ObjectKey)); //var lib = espace.References.Single(a => a.Name == "FeatureToggle_Lib"); //var getToggleAction = (IServerActionSignature)lib.ServerActions.Single(a => a.Name == "FeatureToggle_IsOn"); //var keyParam = getToggleAction.InputParameters.Single(s => s.Name == "FeatureToggleKey"); //var modParam = getToggleAction.InputParameters.Single(s => s.Name == "ModuleName"); foreach (IMobileScreen sc in screens) { var dataaction = CreateDataActionScreen(espace, sc, null); var ongetdata = sc.GetAllDescendantsOfType <IUILifeCycleEvent>().Single(e => e.GetType().ToString().Contains("OnAfterFetch")); IScreenAction action = (IScreenAction)ongetdata.Destination; var oninitaction = sc.CreateScreenAction(); oninitaction.Name = "OnAfterFetch"; var start = oninitaction.CreateNode <IStartNode>(); //var getToggle = oninitaction.CreateNode<IExecuteServerActionNode>().Below(start); var end = oninitaction.CreateNode <IEndNode>(); var name = sc.Name; /*getToggle.Action = getToggleAction; * getToggle.SetArgumentValue(modParam, "GetEntryEspaceName()"); * start.Target = getToggle; * getToggle.Name = $"FT_{name}_IsOn"; * getToggle.SetArgumentValue(keyParam, $"Entities.FeatureToggles.FT_{espace.Name}_{name}");*/ var ifToggle = oninitaction.CreateNode <IIfNode>().Below(start); ifToggle.SetCondition($"GetToggles.FT_{name}"); end.Below(ifToggle); ifToggle.TrueTarget = end; start.Target = ifToggle; var excep = oninitaction.CreateNode <IRaiseExceptionNode>().ToTheRightOf(ifToggle); excep.SetExceptionMessage("\"Screen not available\""); excep.Exception = espace.GetAllDescendantsOfType <OutSystems.Model.Logic.IException>().Single(sr => sr.ToString().Contains("Abort Activity Change Exception")); ifToggle.FalseTarget = excep; ongetdata.Destination = oninitaction; } }
public void AddModuleAction(IScreenAction action) { }