Data model visualization - Simplified and improved VMs

Layer conditions - Added left side property selection
This commit is contained in:
SpoinkyNL committed 2020-07-05 15:34:16 +02:00
1 parent f9d26a8ba3
commit c0f2cf08de
38 files changed
+908 -359

No files matched your search

@@ -1,24 +1,80 @@
using Artemis.UI.Screens.Module.ProfileEditor.DisplayConditions.Abstract;
using System;
using System.Linq;
using Artemis.Core.Models.Profile.Conditions;
using Artemis.UI.Ninject.Factories;
using Artemis.UI.Screens.Module.ProfileEditor.DisplayConditions.Abstract;
using Humanizer;
namespace Artemis.UI.Screens.Module.ProfileEditor.DisplayConditions
{
public class DisplayConditionGroupViewModel : DisplayConditionViewModel
{
private readonly IDisplayConditionsVmFactory _displayConditionsVmFactory;
private bool _isRootGroup;
public DisplayConditionGroupViewModel(DisplayConditionGroup displayConditionGroup, DisplayConditionViewModel parent, IDisplayConditionsVmFactory displayConditionsVmFactory) : base(displayConditionGroup, parent)
{
_displayConditionsVmFactory = displayConditionsVmFactory;
}
public DisplayConditionGroup DisplayConditionGroup => (DisplayConditionGroup) Model;
public bool IsRootGroup
{
get => _isRootGroup;
set => SetAndNotify(ref _isRootGroup, value);
}
public DisplayConditionGroupViewModel()
public string SelectedBooleanOperator => DisplayConditionGroup.BooleanOperator.Humanize();
public void SelectBooleanOperator(string type)
{
var enumValue = Enum.Parse<BooleanOperator>(type);
DisplayConditionGroup.BooleanOperator = enumValue;
NotifyOfPropertyChange(nameof(SelectedBooleanOperator));
}
public void AddCondition()
{
DisplayConditionGroup.AddChild(new DisplayConditionPredicate());
Update();
}
public void AddGroup()
{
DisplayConditionGroup.AddChild(new DisplayConditionGroup());
Update();
}
public override void Update()
{
NotifyOfPropertyChange(nameof(SelectedBooleanOperator));
// Remove VMs of effects no longer applied on the layer
var toRemove = Children.Where(c => !DisplayConditionGroup.Children.Contains(c.Model)).ToList();
Children.RemoveRange(toRemove);
foreach (var childModel in Model.Children)
{
if (Children.Any(c => c.Model == childModel))
continue;
switch (childModel)
{
case DisplayConditionGroup displayConditionGroup:
Children.Add(_displayConditionsVmFactory.DisplayConditionGroupViewModel(displayConditionGroup, this));
break;
case DisplayConditionListPredicate displayConditionListPredicate:
Children.Add(_displayConditionsVmFactory.DisplayConditionListPredicateViewModel(displayConditionListPredicate, this));
break;
case DisplayConditionPredicate displayConditionPredicate:
Children.Add(_displayConditionsVmFactory.DisplayConditionPredicateViewModel(displayConditionPredicate, this));
break;
}
}
foreach (var childViewModel in Children)
childViewModel.Update();
}
}
}