Files
C4IT-F4SD-Client/FasdDesktopUi/Basics/Models/DataCanvasDataModel.cs
2025-11-11 11:03:42 +01:00

192 lines
6.7 KiB
C#

using C4IT.FASD.Base;
using C4IT.MultiLanguage;
using FasdCockpitBase.Models;
using FasdDesktopUi.Basics.UserControls;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using static C4IT.Logging.cLogManager;
namespace FasdDesktopUi.Basics.Models
{
public class cDataCanvasDataModel
{
public cRecommendationDataModel RecommendationData { get; set; }
public Func<Task<cDetailedDataModel>> GetDetailedDataAsync { get; set; }
public Func<Task<cDetailedChartModel>> GetDatailedChartDataAsync { get; set; }
public Func<Task<cChartModel>> GetChartDataAsync { get; set; }
public cDetailedDataModel DetailedData { get; set; }
public cDetailedChartModel DetailedChartData { get; set; }
public cChartModel ChartData { get; set; }
public cQuickActionStatusMonitorModel QuickActionStatusMonitorData { get; set; }
}
public class cRecommendationDataModel
{
public string Category { get; set; }
public string Recommendation { get; set; }
}
public class cDetailedDataModel
{
public string Heading { get; set; }
public bool HasColumnHeaders = true;
public List<object> FullDetailedData { get; set; }
}
public class cDetailedChartModel
{
public List<object[]> Data { get; set; }
public int TimeIndex { get; set; }
public int ValueIndex { get; set; }
public int DurationIndex { get; set; }
public double WarningThreshold { get; set; }
public double ErrorThreshold { get; set; }
public bool IsThresholdActive { get; set; }
public string ChartTitle { get; set; }
}
public class cChartModel
{
public List<object[]> Data { get; set; }
public int TimeIndex { get; set; }
public int ValueIndex { get; set; }
public int DurationIndex { get; set; }
public double WarningThreshold { get; set; }
public double ErrorThreshold { get; set; }
public bool IsThresholdActive { get; set; }
public bool IsDirectionUp { get; set; }
public string ChartTitle { get; set; }
public int StepLengthScale { get; set; }
public int StepLengthLine { get; set; }
public int MaxValue { get; set; }
public int MinValue { get; set; }
public string UnitFormat { get; set; }
}
public class cQuickActionStatusMonitorModel
{
public class cQuickActionStep : INotifyPropertyChanged
{
public enum enumActionStepType
{
main,
connectingToClient,
waitingForUserAcceptance,
running,
finished
}
private enumQuickActionRevisionStatus status;
public enumQuickActionRevisionStatus Status
{
get => status; set
{
status = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Status)));
}
}
public string DisplayName { get; private set; }
public string QuickActionName { get; private set; }
public enumActionStepType StepType { get; private set; }
public List<cQuickActionStep> SubSteps { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
public cQuickActionStep(string displayName, string quickActionName, enumActionStepType stepType)
{
DisplayName = displayName;
QuickActionName = quickActionName;
StepType = stepType;
}
public static void SetQuickActionStepStatuses(List<cQuickActionStep> actionSteps, string quickActionName, enumActionStepType type, enumQuickActionRevisionStatus status = enumQuickActionRevisionStatus.finishedSuccessfull)
{
try
{
foreach (var step in actionSteps)
{
if (step.StepType.Equals(type) && step.QuickActionName.Equals(quickActionName))
step.Status = status;
if (step.SubSteps?.Count > 0)
SetQuickActionStepStatuses(step.SubSteps, quickActionName, type, status);
}
}
catch (Exception E)
{
LogException(E);
}
}
public static void CancelRemainingQuickActionSteps(List<cQuickActionStep> actionSteps)
{
try
{
if (actionSteps is null || actionSteps.Count <= 0)
return;
foreach (var step in actionSteps)
{
if (step.Status == enumQuickActionRevisionStatus.inProgress)
step.Status = enumQuickActionRevisionStatus.canceled;
CancelRemainingQuickActionSteps(step.SubSteps);
}
}
catch (Exception E)
{
LogException(E);
}
}
internal static void SetAllQuickActionStepStatuses(List<cQuickActionStep> actionSteps, enumQuickActionRevisionStatus status = enumQuickActionRevisionStatus.inProgress)
{
try
{
foreach (var step in actionSteps)
{
step.Status = status;
if (step.SubSteps?.Count > 0)
SetAllQuickActionStepStatuses(step.SubSteps, status);
}
}
catch (Exception E)
{
LogException(E);
}
}
}
public bool RequiresUserPermission { get; set; }
public cFasdQuickAction QuickActionDefinition { get; set; }
public string ActionName { get; set; }
public List<cQuickActionStep> ActionSteps { get; set; }
public Dictionary<string, cAdjustableParameter> QuickActionParameters { get; set; }
public delegate Task<List<object>> RunQuickActionDelegate(CancellationToken token, Dictionary<cAdjustableParameter, object> ParameterDictionary = null);
public RunQuickActionDelegate RunQuickAction { get; set; }
}
}