예제 #1
0
        public MoveCriteriaModelAction(ICriteriaModelContainer criteriaModelContainer,
                                       CriteriaModel criteriaModel,
                                       CriteriaModel targetCriteriaModel,
                                       bool insertAtEnd)
        {
            Assert.IsNotNull(criteriaModelContainer);
            Assert.IsNotNull(criteriaModel);
            Assert.IsNotNull(targetCriteriaModel);

            CriteriaModelContainer = criteriaModelContainer;
            CriteriaModel          = criteriaModel;
            TargetCriteriaModel    = targetCriteriaModel;
            InsertAtEnd            = insertAtEnd;
        }
예제 #2
0
        void AddCriteriaModelRow(CriteriaModel criteriaModel,
                                 IGraphElementModel graphElementModel,
                                 ExpandedContainer expandedContainer)
        {
            Assert.IsNotNull(expandedContainer);

            expandedContainer.Add(new CriteriaModelRow(graphElementModel,
                                                       criteriaModel,
                                                       m_Stencil,
                                                       Store,
                                                       m_Blackboard,
                                                       expandedContainer,
                                                       OnDeleteCriteriaModel));
        }
        public Array GetByCondition(CriteriaModel condition, TrackingContext context)
        {
            switch (condition.FieldName)
            {
            case "CreatedDate":
                return(context.ContactActivity.Where(x =>
                                                     x.CreatedDate >= DateTime.Parse(condition.FieldFromValue) &&
                                                     x.CreatedDate <= DateTime.Parse(condition.FieldToValue)
                                                     ).ToArray());

            default:
                return(context.ContactActivity.Where(x => !x.IsRead).ToArray());
            }
        }
예제 #4
0
        public void TestSingleCriteriaModel_ManyCriterion([Values] CodeGenMode mode)
        {
            SetupTestGraph(mode, graphModel =>
            {
                var query            = CreateComponentQuery(graphModel, typeof(DummyFloat3Component), typeof(DummyBoolComponent));
                var onUpdateEntities = CreateOnUpdateAndConnectQuery(graphModel, query);

                // Add criteria
                var f3Criterion             = GetDummyFloat3ValueCriterion();
                var boolCriterion           = GetDummyBoolCriterion();
                var criteria                = new CriteriaModel();
                criteria.UniqueNameProvider = onUpdateEntities;
                criteria.GraphModel         = graphModel;
                criteria.Name               = "criteria";
                criteria.AddCriterionNoUndo(graphModel, f3Criterion);
                criteria.AddCriterionNoUndo(graphModel, boolCriterion);
                onUpdateEntities.AddCriteriaModelNoUndo(criteria);

                AddSharedComponentIfCriteriaMatch(graphModel, onUpdateEntities);
            },
                           (manager, entityIndex, e) =>
            {
                var x = entityIndex % 2 == 0 ? 0f : 25f;
                manager.AddComponentData(e, new DummyFloat3Component {
                    Value = new float3 {
                        x = x
                    }
                });

                var b = entityIndex % 4 == 0;
                manager.AddComponentData(e, new DummyBoolComponent {
                    Value = b
                });
            },
                           (manager, entityIndex, e) =>
            {
                var x = manager.GetComponentData <DummyFloat3Component>(e).Value.x;
                var b = manager.GetComponentData <DummyBoolComponent>(e).Value;

                if (x < 10f && b)
                {
                    Assert.That(manager.HasComponent <DummySharedComponent>(e));
                }
                else
                {
                    Assert.That(!manager.HasComponent <DummySharedComponent>(e));
                }
            });
        }
        public Task <int> UpdateAsync(int id, CriteriaModel model)
        {
            var modelToUpdate = _criteriaDbSet.FirstOrDefault(entity => entity.Id == id);

            modelToUpdate.SetCode(model.Code);
            modelToUpdate.SetGroup(model.Group);
            modelToUpdate.SetIndex(model.Index);
            modelToUpdate.SetName(model.Name);
            modelToUpdate.SetScoreA(model.ScoreA);
            modelToUpdate.SetScoreB(model.ScoreB);
            modelToUpdate.SetScoreC(model.ScoreC);
            modelToUpdate.SetScoreD(model.ScoreD);

            return(_dbContext.SaveChangesAsync());
        }
예제 #6
0
        public AddCriterionAction(ICriteriaModelContainer criteriaModelContainer,
                                  CriteriaModel criteriaModel,
                                  TypeHandle typeHandle,
                                  TypeMember typeMember,
                                  BinaryOperatorKind operatorKind)
        {
            Assert.IsNotNull(criteriaModelContainer);
            Assert.IsNotNull(criteriaModel);

            CriteriaModelContainer = criteriaModelContainer;
            CriteriaModel          = criteriaModel;
            TypeHandle             = typeHandle;
            TypeMember             = typeMember;
            OperatorKind           = operatorKind;
        }
예제 #7
0
        static State DuplicateCriteriaModel(State previousState, DuplicateCriteriaModelAction action)
        {
            CriteriaModel clone = action.CriteriaModelContainer.DuplicateCriteriaModel(
                action.CriteriaModel,
                action.targetCriteriaModelContainer,
                action.TargetCriteriaModel,
                action.InsertAtEnd);

            if (clone != null)
            {
                ((VSGraphModel)clone.GraphModel).LastChanges.ChangedElements.Add(action.CriteriaModelContainer);
                ((VSGraphModel)clone.GraphModel).LastChanges.ChangedElements.Add(action.targetCriteriaModelContainer);
                ((VSGraphModel)clone.GraphModel).LastChanges.DeletedElements++;
                EditorUtility.SetDirty(action.CriteriaModelContainer.SerializableAsset);
            }

            return(previousState);
        }
예제 #8
0
        public bool Update(CriteriaModel model)
        {
            Criteria entity = DbContext.Criteria.Find(model.Id);

            this.CheckNullOrUndefined(entity, $"Criteria with id {model.Id} doesn't exist");

            bool criteriaExists = this.DbSet.Any(criteria => criteria.Name == model.Name);

            if (criteriaExists)
            {
                MessageHelper.PromptErrorMsg(MessageTypeEnum.CriteriaExists);

                return(false);
            }

            entity.Name = model.Name;
            this.DbContext.SaveChanges();

            return(true);
        }
예제 #9
0
        void AddCriterionToCriteriaModel(IGraphElementModel graphElementModel, CriteriaModel criteriaModel)
        {
            if (graphElementModel == null)
            {
                return;
            }

            ComponentQueryDeclarationModel queryDeclarationModel = null;

            switch (graphElementModel)
            {
            case ComponentQueryDeclarationModel criterionQueryDeclarationModel:
                queryDeclarationModel = criterionQueryDeclarationModel;
                break;

            case IIteratorStackModel iteratorStackModel:
                queryDeclarationModel = iteratorStackModel.ComponentQueryDeclarationModel;
                break;
            }

            if (queryDeclarationModel == null)
            {
                return;
            }

            Vector2 mousePosition = Event.current.mousePosition;

            EcsSearcherServices.ShowCriteria(queryDeclarationModel,
                                             k_AddCriterionTitle,
                                             mousePosition,
                                             (typeHandle,
                                              typeMember,
                                              operatorKind) =>
            {
                m_Store.Dispatch(new AddCriterionAction((ICriteriaModelContainer)graphElementModel,
                                                        criteriaModel,
                                                        typeHandle,
                                                        typeMember,
                                                        operatorKind));
            });
        }
예제 #10
0
        public DuplicateCriterionAction(ICriteriaModelContainer criteriaModelContainer,
                                        CriteriaModel criteriaModel,
                                        Criterion criterion,
                                        ICriteriaModelContainer targetCriteriaModelContainer,
                                        CriteriaModel targetCriteriaModel,
                                        Criterion targetCriterion,
                                        bool insertAtEnd)
        {
            Assert.IsNotNull(criteriaModelContainer);
            Assert.IsNotNull(criteriaModel);
            Assert.IsNotNull(criterion);
            Assert.IsNotNull(targetCriteriaModelContainer);
            Assert.IsNotNull(targetCriteriaModel);

            CriteriaModelContainer = criteriaModelContainer;
            CriteriaModel          = criteriaModel;
            Criterion = criterion;
            TargetCriteriaModelContainer = targetCriteriaModelContainer;
            TargetCriteriaModel          = targetCriteriaModel;
            TargetCriterion = targetCriterion;
            InsertAtEnd     = insertAtEnd;
        }
예제 #11
0
        private void BtnCriteriaEdit_MouseClick(object sender, MouseEventArgs e)
        {
            if (CriteriaTxtBox.Text == "")
            {
                MessageHelper.PromptErrorMsg(MessageTypeEnum.NullCriteria);
            }
            else
            {
                CriteriaModel criteria = Store.Criteria.SingleOrDefault(c => c.Id == Store.CriteriaId);
                criteria.Name = CriteriaTxtBox.Text.ToLower();
                bool updateSuccessful = criteriaService.Update(criteria);

                if (updateSuccessful)
                {
                    GetCriteriaList();
                    UpdateSongListBox();
                }
                else
                {
                    CriteriaTxtBox.SelectAll();
                    CriteriaTxtBox.Focus();
                }
            }
        }
예제 #12
0
        public void TestComplexTypeComparisonCriteriaModel([Values] CodeGenMode mode)
        {
            SetupTestGraph(mode, graphModel =>
            {
                var query            = CreateComponentQuery(graphModel, typeof(DummyFloat3Component));
                var onUpdateEntities = CreateOnUpdateAndConnectQuery(graphModel, query);

                // Add criteria
                var criterion = GetDummyFloat3Criterion(BinaryOperatorKind.GreaterThan);
                var criteria  = new CriteriaModel();
                criteria.Name = "cFloat3";
                criteria.AddCriterionNoUndo(graphModel, criterion);
                onUpdateEntities.AddCriteriaModelNoUndo(criteria);

                AddSharedComponentIfCriteriaMatch(graphModel, onUpdateEntities);
            },
                           (manager, entityIndex, e) =>
            {
                var v = entityIndex % 2 == 0 ? 0f : 10f;
                manager.AddComponentData(e, new DummyFloat3Component {
                    Value = new float3(v)
                });
            },
                           (manager, entityIndex, e) =>
            {
                var x = manager.GetComponentData <DummyFloat3Component>(e).Value.x;
                if (x > 10f)
                {
                    Assert.That(manager.HasComponent <DummySharedComponent>(e));
                }
                else
                {
                    Assert.That(!manager.HasComponent <DummySharedComponent>(e));
                }
            });
        }
예제 #13
0
        public bool Create(CriteriaModel model)
        {
            bool criteriaExists = this.DbSet.ToList().Any(criteria => criteria.Name.ToLower() == model.Name.ToLower());

            if (criteriaExists)
            {
                MessageHelper.PromptErrorMsg(MessageTypeEnum.CriteriaExists);

                return(false);
            }

            Criteria entity = new Criteria()
            {
                Name     = model.Name,
                ArtistId = model.ArtistId,
            };

            this.DbSet.Add(entity);
            DbContext.SaveChanges();

            this.PopulateCriteriaStore();

            return(true);
        }
예제 #14
0
 public void RemoveCriteriaModelNoUndo(CriteriaModel criteriaModel)
 {
     m_CriteriaModels.Remove(criteriaModel);
     UpdateTakenNames();
 }
예제 #15
0
 public int GetQuestionCountByCriteria(CriteriaModel criteria)
 {
     return(GetSearchQuery(criteria.CategoryId).Count());
 }
예제 #16
0
        public CriterionRow(IGraphElementModel graphElementModel,
                            CriteriaModel criteriaModel,
                            Criterion criterion,
                            Stencil stencil,
                            Store store,
                            ExpandedContainer parentElement,
                            Action <EventBase> onDeleteCriterion)
            : base(string.Empty, graphElementModel as ComponentQueryDeclarationModel, store, parentElement, null, null)
        {
            GraphElementModel = graphElementModel;
            CriteriaModel     = criteriaModel;
            Criterion         = criterion ?? throw new ArgumentNullException(nameof(criterion), "criterion should not be null");
            ClearClassList();
            AddToClassList("criterionRow");

            capabilities |= Capabilities.Selectable | Capabilities.Deletable;

            styleSheets.Add(AssetDatabase.LoadAssetAtPath <StyleSheet>(UnityEditor.VisualScripting.Editor.UICreationHelper.templatePath + "PropertyField.uss"));

            var deleteCriterionButton = new Button {
                name = "deleteCriterionIcon"
            };

            deleteCriterionButton.clickable.clickedWithEventInfo += onDeleteCriterion;
            ExpandableRowTitleContainer.Insert(0, deleteCriterionButton);

            userData = criterion.GetHashCode();

            var criterionContainer = new VisualElement {
                name = "rowCriterionContainer"
            };

            string criterionNamespace = criterion.ObjectType.GetMetadata(stencil).Namespace;
            string criterionName      = criterion.ObjectType.ToTypeSyntax(stencil).ToString().Replace(criterionNamespace + ".", "");

            var criterionStr = new StringBuilder(criterionName);

            if (criterion.Member.Path.Any())
            {
                criterionStr.Append(" > ");
                criterionStr.Append(string.Join(" > ", criterion.Member.Path));
            }

            var criterionPillContainer = new VisualElement {
                name = "rowPillContainer"
            };
            var criterionPill = new Pill {
                text = criterionStr.ToString()
            };

            criterionPillContainer.Add(criterionPill);

            criterionPillContainer.Add(new Label()
            {
                name = "criterionOperatorKind", text = criterion.Operator.NicifyBinaryOperationKindName(OperatorExtensions.NicifyBinaryOperationKindType.String)
            });

            // TODO SERIALIZATION
//            if (criterion.Value.NodeAssetReference != null)
//                m_WatchedObject = new SerializedObject(criterion.Value.NodeAssetReference);
            m_EditorElement = SetupConstantEditor(criterion.Value);
            var label = m_EditorElement.Q <Label>();

            if (label != null && !EditorNeedsLabel)
            {
                label.style.width = 0;
            }

            criterionPillContainer.Add(m_EditorElement);

            criterionContainer.Add(criterionPillContainer);

            ExpandableRowTitleContainer.Add(criterionContainer);

            // CriterionRow's are NOT expandable (for now, until we find a reason to) but since we need everything
            // else that is provided by SortableExpandableRow, we'll just disable expansion altogether
            ExpandedButton.style.display = DisplayStyle.None;

            RegisterCallback <AttachToPanelEvent>(OnAttachToPanel);
            RegisterCallback <DetachFromPanelEvent>(OnDetachFromPanel);

            this.AddManipulator(new ContextualMenuManipulator(OnContextualMenuEvent));
        }
예제 #17
0
 public HttpResponseMessage GetByCriteria(
     [ModelBinder(typeof(CriteriaModelBinder))] CriteriaModel criteria
     )
 {
     return(new HttpResponseMessage(HttpStatusCode.OK));
 }
 public Task <int> InsertAsync(CriteriaModel model)
 {
     _criteriaDbSet.Add(model);
     return(_dbContext.SaveChangesAsync());
 }
예제 #19
0
 public void AddCriteriaModelNoUndo(CriteriaModel criteriaModel)
 {
     m_CriteriaModels.Add(criteriaModel);
     UpdateTakenNames();
 }
예제 #20
0
 public void InsertCriteriaModelNoUndo(int index, CriteriaModel criteriaModel)
 {
     m_CriteriaModels.Insert(index, criteriaModel);
     UpdateTakenNames();
 }
예제 #21
0
        public CriteriaModelRow(IGraphElementModel graphElementModel,
                                CriteriaModel criteriaModel,
                                Stencil stencil,
                                Store store,
                                Blackboard blackboard,
                                ExpandedContainer parentElement,
                                Action <EventBase> onDeleteCriteriaModel)
            : base(string.Empty,
                   graphElementModel as ComponentQueryDeclarationModel,
                   store,
                   parentElement,
                   rebuildCallback: null,
                   canAcceptDrop: null)
        {
            Sortable = true;

            if (criteriaModel == null)
            {
                throw new ArgumentNullException(nameof(criteriaModel), "criteriaModel should not be null");
            }

            CriteriaModel               = criteriaModel;
            GraphElementModel           = graphElementModel;
            ExpandableGraphElementModel = criteriaModel;

            m_Store = store;

            if (graphElementModel is IIteratorStackModel)
            {
                OnExpanded = e => m_Store.GetState().EditorDataModel?.ExpandElementsUponCreation(new[] { this }, e);
            }
            else if (graphElementModel is ComponentQueryDeclarationModel componentQueryDeclarationModel)
            {
                var expandedRowName =
                    $"{ComponentQueriesRow.BlackboardEcsProviderTypeName}/{typeof(CriteriaSubSection).Name}/{componentQueryDeclarationModel}/{criteriaModel.Name}";

                if (store.GetState().EditorDataModel.ShouldExpandBlackboardRowUponCreation(expandedRowName))
                {
                    Expanded = true;
                }

                OnExpanded = e => Store.GetState().EditorDataModel?.ExpandBlackboardRowsUponCreation(new[] { expandedRowName }, e);
            }

            ClearClassList();
            AddToClassList("criteriaModelRow");

            int nbCriteria = CriteriaModel.Criteria?.Count ?? 0;

            if (nbCriteria > 0)
            {
                if (CriteriaModel.Criteria != null)
                {
                    foreach (var criterion in CriteriaModel.Criteria)
                    {
                        var criterionRow = new CriterionRow(graphElementModel, criteriaModel, criterion, stencil, store, ExpandedContainer, OnDeleteCriterion);
                        ExpandedContainer.Add(criterionRow);
                    }
                }
            }
            else
            {
                ExpandedButton.style.display = DisplayStyle.None;
            }

            var deleteCriteriaModelButton = new Button {
                name = "deleteCriteriaModelIcon"
            };

            deleteCriteriaModelButton.clickable.clickedWithEventInfo += onDeleteCriteriaModel;
            ExpandableRowTitleContainer.Insert(0, deleteCriteriaModelButton);

            var componentContainer = new VisualElement {
                name = "rowFieldContainer"
            };

            userData = $"CriteriaModelRow/{graphElementModel}/{criteriaModel.GetHashCode()}";

            var rowCriteriaModelContainer = new VisualElement {
                name = "rowPillContainer"
            };
            var criteriaModelLabel = new RenamableLabel(criteriaModel,
                                                        criteriaModel.Name,
                                                        store,
                                                        (n) =>
            {
                store.Dispatch(new RenameCriteriaModelAction((ICriteriaModelContainer)GraphElementModel, CriteriaModel, n));
            });

            criteriaModelLabel.MandatoryQ <Label>("label").AddToClassList("criteriaModel");
            rowCriteriaModelContainer.Add(criteriaModelLabel);

            componentContainer.Add(rowCriteriaModelContainer);
            componentContainer.Add(new Button(() => { AddCriterionToCriteriaModel(graphElementModel, criteriaModel); })
            {
                name = "addCriterionButton", text = "+"
            });

            ExpandableRowTitleContainer.Add(componentContainer);

            capabilities |= Capabilities.Selectable | Capabilities.Deletable | Capabilities.Droppable;

            this.AddManipulator(new ContextualMenuManipulator(OnContextualMenuEvent));
        }
예제 #22
0
 public int IndexOfCriteriaModel(CriteriaModel criteriaModel)
 {
     return(m_CriteriaModels.IndexOf(criteriaModel));
 }
 public HttpResponseMessage GetByCriteria(CriteriaModel criteria)
 {
     return(new HttpResponseMessage(HttpStatusCode.OK));
 }