void Start()
    {
        GenerateConsolePostion();
        cameraRig.transform.position = new Vector3(userX, 0, userZ);


        GameObject go = Instantiate(consoleFab, new Vector3(consolePosX, 0, consolePosZ), Quaternion.identity);

        CB = go.GetComponentInChildren <ConsoleBehavior>();
        CB.controllerLeft = leftController;
        CB.consoleX       = consolePosX;
        CB.consoleZ       = consolePosZ;
        CB.userX          = userX;
        CB.userZ          = userZ;
        CB.cameraRig      = cameraRig;
    }
Пример #2
0
 public static void ReadKey(
     this ConsoleBehavior consoler)
 {
     Console.ReadKey();
 }
Пример #3
0
 public static void WriteLine(
     this ConsoleBehavior consoler,
     string output)
 {
 }
Пример #4
0
        public void GetActionsWithExpressionItems()
        {
            // arrange
            var scientistType = Entity.GetByName <EntityType>("Scientist").First();
            var bornField     = scientistType.GetAllFields().FirstOrDefault(f => f.Name == "Born");

            var scientist = Entity.Create(new EntityRef(scientistType));

            scientist.SetField("core:name", "Alex Engelhardt");
            scientist.SetField(new EntityRef(bornField), new DateTime(1977, 10, 24));
            scientist.Save();

            var alanTuring = Entity.GetByName <Resource>("Alan Turing").First();

            alanTuring.Should().NotBeNull();
            alanTuring.Id.Should().BeGreaterThan(0);

            var report = Entity.Create <ReadiNow.Model.Report>();
            var sb     = new ConsoleBehavior();
            var am     = new ActionMenu();

            var a = new ActionMenuItem
            {
                Name                     = "Test '%Resource%' Action",
                EmptySelectName          = "Test Expression Action",
                IsActionItem             = true,
                IsActionButton           = true,
                IsContextMenu            = true,
                AppliesToSelection       = true,
                ActionRequiresExpression = new ActionExpression
                {
                    ActionExpressionString   = "datediff(year, Born, [Alan].[Born]) = 0",
                    ActionExpressionEntities = new EntityCollection <NamedReference>
                    {
                        new NamedReference
                        {
                            Name             = "Alan",
                            ReferencedEntity = alanTuring
                        }
                    }
                }
            };

            am.MenuItems.Add(a);
            am.IncludeActionsAsButtons.Add(a);
            sb.BehaviorActionMenu    = am;
            report.SelectionBehavior = sb;
            report.Save();

            var svc = new ActionService();

            svc.FlushCaches();

            var request = new ActionRequestExtended
            {
                LastSelectedResourceId = scientist.Id,
                SelectedResourceIds    = new[] { scientist.Id },
                EntityTypeId           = scientistType.Id,
                ReportId        = report.Id,
                ReportBaseType  = scientistType,
                HostResourceIds = new long[0]
            };

            // act
            var result = svc.GetActions(request);

            // assert
            result.Should().NotBeNull();
            result.Actions.Should().NotBeNull();
            result.Actions.Count.Should().BeGreaterThan(0);

            var action = result.Actions.FirstOrDefault(i => i.Name == "Test 'Alex Engelhardt' Action");

            action.Should().NotBeNull();
            action.IsEnabled.Should().BeFalse();
            action.EntityId.Should().Be(scientist.Id);

            request.LastSelectedResourceId = alanTuring.Id;
            request.SelectedResourceIds    = new[] { alanTuring.Id };

            var result2 = svc.GetActions(request);

            result2.Should().NotBeNull();
            result2.Actions.Should().NotBeNull();
            result2.Actions.Count.Should().BeGreaterThan(0);

            var action2 = result2.Actions.FirstOrDefault(i => i.Name == "Test 'Alan Turing' Action");

            action2.Should().NotBeNull();
            action2.IsEnabled.Should().BeTrue();
            action2.EntityId.Should().Be(alanTuring.Id);
        }
Пример #5
0
        public void GetActionsSuppressAllNewItems()
        {
            // arrange
            var testType1 = new EntityType {
                Name = "Test Type 1"
            };

            testType1.Inherits.Add(Entity.Get <EntityType>("core:definition"));
            testType1.Save();
            var testType2 = new EntityType {
                Name = "Test Type 2"
            };

            testType2.Inherits.Add(testType1);
            testType2.Save();

            var report = Entity.Create <ReadiNow.Model.Report>();

            report.ReportUsesDefinition = testType1;
            report.Save();

            var svc = new ActionService();

            svc.FlushCaches();

            var request = new ActionRequestExtended
            {
                ReportId             = report.Id,
                ReportBaseType       = report.ReportUsesDefinition,
                HostResourceIds      = new long[0],
                ActionDisplayContext = ActionContext.ActionsMenu
            };

            // act
            var result = svc.GetActions(request);

            // assert
            result.Should().NotBeNull();
            result.Actions.Should().NotBeNull();
            result.Actions.Count.Should().BeGreaterThan(0);

            var newMenu = result.Actions.FirstOrDefault(a => a.Name == "New");

            newMenu.Should().NotBeNull();
            newMenu.Children.Count.Should().Be(2);

            var t1 = newMenu.Children.FirstOrDefault(a => a.Name == "Test Type 1");

            t1.Should().NotBeNull();
            t1.IsNew.Should().BeTrue();
            t1.HtmlActionMethod.Should().Be("navigate");
            t1.HtmlActionState.Should().Be("createForm");
            t1.EntityId.Should().Be(testType1.Id);

            var t2 = newMenu.Children.FirstOrDefault(a => a.Name == "Test Type 2");

            t2.Should().NotBeNull();
            t2.IsNew.Should().BeTrue();
            t2.HtmlActionMethod.Should().Be("navigate");
            t2.HtmlActionState.Should().Be("createForm");
            t2.EntityId.Should().Be(testType2.Id);

            // suppress the news
            var rcb = new ConsoleBehavior();
            var am  = new ActionMenu {
                SuppressNewActions = true
            };

            rcb.BehaviorActionMenu         = am;
            report.ResourceConsoleBehavior = rcb;
            report.Save();

            svc.FlushCaches();

            var result2 = svc.GetActions(request);

            result2.Should().NotBeNull();
            result2.Actions.Should().NotBeNull();
            result2.Actions.Count.Should().BeGreaterThan(0);
            result2.Actions.Count(a => a.Name == "New").Should().Be(0);
        }
Пример #6
0
        public void GetFormActionsForForm()
        {
            var personType = Entity.Get <Definition>("core:person");
            var personForm = Entity.Get <CustomEditForm>(personType.DefaultEditForm.Id, true);

            // fetch action for the person type
            var request = new ActionRequestExtended
            {
                EntityTypeId         = personType.Id,
                FormId               = personType.DefaultEditForm.Id,
                ActionDisplayContext = ActionContext.All
            };

            var actionSvc = new ActionService();

            actionSvc.FlushCaches();

            var result = actionSvc.GetFormActionsMenuState(request);

            result.Should().NotBeNull();
            result.Actions.Should().NotBeNull().And.NotBeEmpty();
            result.Actions.Count.Should().Be(2);
            result.Actions.Count(a => a.Name == "Assign Data to App").Should().Be(1);
            result.Actions.Count(a => a.Name == "Person Name Update").Should().Be(1);

            // create new action item and assign it to the form
            // form action
            var actionInfo = result.Actions.Find(a => a.Name == "Person Name Update");
            var wf         = Entity.Get <Workflow>(actionInfo.EntityId);

            // create workflow action item
            var wfActionMenuItem = new WorkflowActionMenuItem
            {
                Name                     = actionInfo.Name,
                MenuIconUrl              = actionInfo.Icon,
                MenuOrder                = actionInfo.Order,
                IsActionButton           = actionInfo.IsButton,
                IsMenuSeparator          = actionInfo.IsSeparator,
                IsContextMenu            = actionInfo.IsContextMenu,
                IsActionItem             = actionInfo.IsMenu,
                IsSystem                 = actionInfo.IsSystem,
                AppliesToSelection       = true,
                AppliesToMultiSelection  = false,
                HtmlActionMethod         = actionInfo.HtmlActionMethod,
                HtmlActionState          = actionInfo.HtmlActionState,
                ActionMenuItemToWorkflow = wf
            };

            var cb = new ConsoleBehavior
            {
                Name = $"DeleteMe_PersonForm_rcb {DateTime.Now}",
                BehaviorActionMenu = new ActionMenu
                {
                    Name = $"DeleteMe_PersonForm_rcb_menu {DateTime.Now}",
                    IncludeActionsAsButtons = new EntityCollection <ActionMenuItem>()
                    {
                        (ActionMenuItem)wfActionMenuItem
                    },
                    MenuItems = new EntityCollection <ActionMenuItem>()
                    {
                        (ActionMenuItem)wfActionMenuItem
                    }
                }
            };

            personForm.ResourceConsoleBehavior = cb;
            personForm.Save();

            var formActionQuery = @"{ k:resourceConsoleBehavior }
                                        .k:behaviorActionMenu.{
                                            { k:menuItems, k:suppressedActions, k:includeActionsAsButtons }.{
                                                {   name, 
                                                    description,
                                                    k:menuIconUrl,
                                                    htmlActionState,
                                                    htmlActionMethod,
                                                    k:isActionButton,
                                                    k:appliesToSelection,
                                                    k:isMenuSeparator, 
                                                    k:menuOrder,
                                                    { isOfType }.{ alias,name },
                                                    { k:actionMenuItemToWorkflow }.{ name },
                                                    { k:actionMenuItemToReportTemplate }.{ name }
                                                }
                                            },
                                            { k:includeTypesForNewButtons, k:suppressedTypesForNewMenu }.id
                                    }";

            // fetch form actions and check there is only one action button assigned to the form
            var entitySvc = new EntityInfoService();

            EntityMemberRequest req = EntityRequestHelper.BuildRequest(formActionQuery);
            var result2             = entitySvc.GetEntityData(personForm.Id, req);

            result2.Should().NotBeNull();

            var rcb = result2.Relationships.Find(a => a.RelationshipTypeId.Alias == "resourceConsoleBehavior");

            rcb.Should().NotBeNull();

            var actionMenu = rcb.Entities.First().Relationships.Find(a => a.RelationshipTypeId.Alias == "behaviorActionMenu");

            actionMenu.Should().NotBeNull();

            var actionButtons = actionMenu.Entities.First().Relationships.Find(a => a.RelationshipTypeId.Alias == "includeActionsAsButtons");

            actionButtons.Should().NotBeNull();

            var nameValue = actionButtons.Entities.First().Fields.Find(f => f.FieldId.Alias == "name").Value.Value;

            nameValue.Should().Be("Person Name Update");


            // delete console behavior
            Entity.Delete(cb.Id);
        }