1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-31 09:43:46 +00:00

Storage - Display conditions WIP

This commit is contained in:
Robert 2020-07-09 20:04:14 +02:00
parent 94f3d84530
commit f39e4d719c
14 changed files with 92 additions and 18 deletions

View File

@ -1,10 +1,13 @@
using System.Collections.Generic; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
namespace Artemis.Core.Models.Profile.Conditions.Abstract namespace Artemis.Core.Models.Profile.Conditions.Abstract
{ {
public abstract class DisplayConditionPart public abstract class DisplayConditionPart
{ {
public Guid EntityId { get; internal set; }
private readonly List<DisplayConditionPart> _children; private readonly List<DisplayConditionPart> _children;
protected DisplayConditionPart() protected DisplayConditionPart()

View File

@ -1,13 +1,42 @@
using Artemis.Core.Models.Profile.Conditions.Abstract; using System;
using Artemis.Core.Models.Profile.Conditions.Abstract;
using Artemis.Storage.Entities.Profile;
namespace Artemis.Core.Models.Profile.Conditions namespace Artemis.Core.Models.Profile.Conditions
{ {
public class DisplayConditionGroup : DisplayConditionPart public class DisplayConditionGroup : DisplayConditionPart
{ {
public DisplayConditionGroup(DisplayConditionPart parent)
{
Parent = parent;
EntityId = Guid.NewGuid();
}
public DisplayConditionGroup(DisplayConditionPart parent, DisplayConditionGroupEntity entity)
{
DisplayConditionGroupEntity = entity;
Parent = parent;
EntityId = DisplayConditionGroupEntity.Id;
BooleanOperator = (BooleanOperator) DisplayConditionGroupEntity.BooleanOperator;
foreach (var childEntity in DisplayConditionGroupEntity.Children)
{
if (childEntity is DisplayConditionGroupEntity groupEntity)
AddChild(new DisplayConditionGroup(this, groupEntity));
if (childEntity is DisplayConditionPredicateEntity predicateEntity)
AddChild(new DisplayConditionPredicate(this, predicateEntity));
}
}
public BooleanOperator BooleanOperator { get; set; } public BooleanOperator BooleanOperator { get; set; }
public DisplayConditionGroupEntity DisplayConditionGroupEntity { get; set; }
public override void ApplyToEntity() public override void ApplyToEntity()
{ {
DisplayConditionGroupEntity.Id = EntityId;
DisplayConditionGroupEntity.ParentId = Parent?.EntityId ?? new Guid();
DisplayConditionGroupEntity.BooleanOperator = (int) BooleanOperator;
foreach (var child in Children) foreach (var child in Children)
child.ApplyToEntity(); child.ApplyToEntity();
} }

View File

@ -4,11 +4,25 @@ using System.Linq.Expressions;
using Artemis.Core.Models.Profile.Conditions.Abstract; using Artemis.Core.Models.Profile.Conditions.Abstract;
using Artemis.Core.Plugins.Abstract.DataModels; using Artemis.Core.Plugins.Abstract.DataModels;
using Artemis.Core.Services.Interfaces; using Artemis.Core.Services.Interfaces;
using Artemis.Storage.Entities.Profile;
namespace Artemis.Core.Models.Profile.Conditions namespace Artemis.Core.Models.Profile.Conditions
{ {
public class DisplayConditionPredicate : DisplayConditionPart public class DisplayConditionPredicate : DisplayConditionPart
{ {
public DisplayConditionPredicate(DisplayConditionPart parent)
{
Parent = parent;
}
public DisplayConditionPredicate(DisplayConditionPart parent, DisplayConditionPredicateEntity entity)
{
Parent = parent;
DisplayConditionPredicateEntity = entity;
}
public DisplayConditionPredicateEntity DisplayConditionPredicateEntity { get; set; }
public PredicateType PredicateType { get; set; } public PredicateType PredicateType { get; set; }
public DisplayConditionOperator Operator { get; set; } public DisplayConditionOperator Operator { get; set; }
@ -96,6 +110,11 @@ namespace Artemis.Core.Models.Profile.Conditions
StaticConditionLambda = Expression.Lambda<Func<DataModel, bool>>(conditionExpression, leftSideParameter); StaticConditionLambda = Expression.Lambda<Func<DataModel, bool>>(conditionExpression, leftSideParameter);
CompiledStaticConditionLambda = StaticConditionLambda.Compile(); CompiledStaticConditionLambda = StaticConditionLambda.Compile();
} }
public override void ApplyToEntity()
{
}
} }
public enum PredicateType public enum PredicateType

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using Artemis.Core.Plugins.LayerEffect.Abstract; using Artemis.Core.Plugins.LayerEffect.Abstract;
using Artemis.Storage.Entities.Profile; using Artemis.Storage.Entities.Profile;
using Artemis.Storage.Entities.Profile.Abstract;
using SkiaSharp; using SkiaSharp;
namespace Artemis.Core.Models.Profile namespace Artemis.Core.Models.Profile

View File

@ -13,6 +13,7 @@ using Artemis.Core.Plugins.LayerEffect.Abstract;
using Artemis.Core.Services; using Artemis.Core.Services;
using Artemis.Core.Services.Interfaces; using Artemis.Core.Services.Interfaces;
using Artemis.Storage.Entities.Profile; using Artemis.Storage.Entities.Profile;
using Artemis.Storage.Entities.Profile.Abstract;
using SkiaSharp; using SkiaSharp;
namespace Artemis.Core.Models.Profile namespace Artemis.Core.Models.Profile

View File

@ -6,6 +6,7 @@ using Artemis.Core.Annotations;
using Artemis.Core.Models.Profile.Conditions; using Artemis.Core.Models.Profile.Conditions;
using Artemis.Core.Plugins.LayerEffect.Abstract; using Artemis.Core.Plugins.LayerEffect.Abstract;
using Artemis.Storage.Entities.Profile; using Artemis.Storage.Entities.Profile;
using Artemis.Storage.Entities.Profile.Abstract;
using SkiaSharp; using SkiaSharp;
namespace Artemis.Core.Models.Profile namespace Artemis.Core.Models.Profile

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
namespace Artemis.Storage.Entities.Profile.Abstract
{
public abstract class DisplayConditionPartEntity
{
public Guid Id { get; set; }
public Guid ParentId { get; set; }
public List<DisplayConditionPartEntity> Children { get; set; }
}
}

View File

@ -1,6 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
namespace Artemis.Storage.Entities.Profile namespace Artemis.Storage.Entities.Profile.Abstract
{ {
public abstract class EffectsEntity : PropertiesEntity public abstract class EffectsEntity : PropertiesEntity
{ {

View File

@ -1,6 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
namespace Artemis.Storage.Entities.Profile namespace Artemis.Storage.Entities.Profile.Abstract
{ {
public abstract class PropertiesEntity public abstract class PropertiesEntity
{ {

View File

@ -1,11 +0,0 @@
using System;
namespace Artemis.Storage.Entities.Profile
{
public class BrushEntity
{
public Guid BrushPluginGuid { get; set; }
public string BrushType { get; set; }
public string Configuration { get; set; }
}
}

View File

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Text;
using Artemis.Storage.Entities.Profile.Abstract;
namespace Artemis.Storage.Entities.Profile
{
public class DisplayConditionGroupEntity : DisplayConditionPartEntity
{
public DisplayConditionGroupEntity()
{
Children = new List<DisplayConditionPartEntity>();
}
public int BooleanOperator { get; set; }
}
}

View File

@ -1,8 +1,9 @@
using System; using System;
using Artemis.Storage.Entities.Profile.Abstract;
namespace Artemis.Storage.Entities.Profile namespace Artemis.Storage.Entities.Profile
{ {
public class DisplayConditionPredicateEntity public class DisplayConditionPredicateEntity : DisplayConditionPartEntity
{ {
public Guid LeftDataModelGuid { get; set; } public Guid LeftDataModelGuid { get; set; }
public string LeftPropertyPath { get; set; } public string LeftPropertyPath { get; set; }

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Artemis.Storage.Entities.Profile.Abstract;
using LiteDB; using LiteDB;
namespace Artemis.Storage.Entities.Profile namespace Artemis.Storage.Entities.Profile
@ -9,7 +10,6 @@ namespace Artemis.Storage.Entities.Profile
public FolderEntity() public FolderEntity()
{ {
PropertyEntities = new List<PropertyEntity>(); PropertyEntities = new List<PropertyEntity>();
Conditions = new List<ProfileConditionEntity>();
LayerEffects = new List<LayerEffectEntity>(); LayerEffects = new List<LayerEffectEntity>();
ExpandedPropertyGroups = new List<string>(); ExpandedPropertyGroups = new List<string>();
} }

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Artemis.Storage.Entities.Profile.Abstract;
using LiteDB; using LiteDB;
namespace Artemis.Storage.Entities.Profile namespace Artemis.Storage.Entities.Profile
@ -10,7 +11,6 @@ namespace Artemis.Storage.Entities.Profile
{ {
Leds = new List<LedEntity>(); Leds = new List<LedEntity>();
PropertyEntities = new List<PropertyEntity>(); PropertyEntities = new List<PropertyEntity>();
Conditions = new List<ProfileConditionEntity>();
LayerEffects = new List<LayerEffectEntity>(); LayerEffects = new List<LayerEffectEntity>();
ExpandedPropertyGroups = new List<string>(); ExpandedPropertyGroups = new List<string>();
} }