mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 03:48:56 +00:00
Data model visualization - Simplified and improved VMs
Layer conditions - Added left side property selection
This commit is contained in:
1 parent
f9d26a8ba3
commit
c0f2cf08de
38 files changed
+908
-359
No files matched your search
+73
-3
@@ -1,16 +1,86 @@
|
||||
using Artemis.UI.Screens.Module.ProfileEditor.DisplayConditions.Abstract;
|
||||
using Artemis.Core.Models.Profile.Conditions;
|
||||
using Artemis.UI.Screens.Module.ProfileEditor.DisplayConditions.Abstract;
|
||||
using Artemis.UI.Shared.DataModelVisualization.Shared;
|
||||
using Artemis.UI.Shared.Services;
|
||||
using Artemis.UI.Shared.Services.Interfaces;
|
||||
using Artemis.UI.Utilities;
|
||||
|
||||
namespace Artemis.UI.Screens.Module.ProfileEditor.DisplayConditions
|
||||
{
|
||||
public class DisplayConditionPredicateViewModel : DisplayConditionViewModel
|
||||
{
|
||||
public DisplayConditionPredicateViewModel()
|
||||
private readonly IDataModelVisualizationService _dataModelVisualizationService;
|
||||
private readonly IProfileEditorService _profileEditorService;
|
||||
private DataModelPropertiesViewModel _dataModel;
|
||||
private DataModelVisualizationViewModel _selectedLeftSideProperty;
|
||||
private bool _leftSidePropertySelectionOpen;
|
||||
|
||||
public DisplayConditionPredicateViewModel(DisplayConditionPredicate displayConditionPredicate, DisplayConditionViewModel parent,
|
||||
IProfileEditorService profileEditorService, IDataModelVisualizationService dataModelVisualizationService) : base(displayConditionPredicate, parent)
|
||||
{
|
||||
|
||||
_profileEditorService = profileEditorService;
|
||||
_dataModelVisualizationService = dataModelVisualizationService;
|
||||
|
||||
SelectPropertyCommand = new DelegateCommand(ExecuteSelectProperty);
|
||||
|
||||
GetDataModel();
|
||||
}
|
||||
|
||||
public DelegateCommand SelectPropertyCommand { get; }
|
||||
|
||||
public DataModelPropertiesViewModel DataModel
|
||||
{
|
||||
get => _dataModel;
|
||||
set => SetAndNotify(ref _dataModel, value);
|
||||
}
|
||||
|
||||
public DataModelVisualizationViewModel SelectedLeftSideProperty
|
||||
{
|
||||
get => _selectedLeftSideProperty;
|
||||
set => SetAndNotify(ref _selectedLeftSideProperty, value);
|
||||
}
|
||||
|
||||
public bool LeftSidePropertySelectionOpen
|
||||
{
|
||||
get => _leftSidePropertySelectionOpen;
|
||||
set => SetAndNotify(ref _leftSidePropertySelectionOpen, value);
|
||||
}
|
||||
|
||||
|
||||
public DisplayConditionPredicate DisplayConditionPredicate => (DisplayConditionPredicate) Model;
|
||||
|
||||
public void ToggleLeftSidePropertySelectionOpen()
|
||||
{
|
||||
LeftSidePropertySelectionOpen = !LeftSidePropertySelectionOpen;
|
||||
}
|
||||
|
||||
public void GetDataModel()
|
||||
{
|
||||
var mainDataModel = _dataModelVisualizationService.GetMainDataModelVisualization(true);
|
||||
if (!_dataModelVisualizationService.GetPluginExtendsDataModel(_profileEditorService.GetCurrentModule()))
|
||||
mainDataModel.Children.Add(_dataModelVisualizationService.GetPluginDataModelVisualization(_profileEditorService.GetCurrentModule(), true));
|
||||
|
||||
DataModel = mainDataModel;
|
||||
|
||||
Update();
|
||||
}
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
if (DisplayConditionPredicate.PropertyPath != null)
|
||||
SelectedLeftSideProperty = DataModel.GetChildByPath(DisplayConditionPredicate.DataModelGuid, DisplayConditionPredicate.PropertyPath);
|
||||
else
|
||||
SelectedLeftSideProperty = null;
|
||||
}
|
||||
|
||||
private void ExecuteSelectProperty(object context)
|
||||
{
|
||||
if (!(context is DataModelVisualizationViewModel vm))
|
||||
return;
|
||||
|
||||
DisplayConditionPredicate.PropertyPath = vm.GetCurrentPath();
|
||||
DisplayConditionPredicate.DataModelGuid = vm.DataModel.PluginInfo.Guid;
|
||||
Update();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user