Files
C4IT-F4SD-Client/FasdDesktopUi/Pages/SlimPage/UserControls/SlimPageDataHistory.xaml.cs
2025-11-11 11:03:42 +01:00

144 lines
5.9 KiB
C#

using System;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Effects;
using C4IT.FASD.Base;
using C4IT.Logging;
using F4SD_AdaptableIcon.Enums;
using FasdDesktopUi.Basics.Enums;
using FasdDesktopUi.Basics.UserControls.AdaptableIcon;
using FasdDesktopUi.Pages.SlimPage.Models;
using static C4IT.Logging.cLogManager;
namespace FasdDesktopUi.Pages.SlimPage.UserControls
{
public partial class SlimPageDataHistory : UserControl
{
#region Properties
#region IsBlurred
private static void IsBlurredChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d is SlimPageDataHistory _me && e.NewValue is bool isBlurred)
_me.ValueBorder.Child.Effect = isBlurred ? new BlurEffect() { Radius = 5, KernelType = KernelType.Gaussian } : null;
}
public static readonly DependencyProperty IsBlurredProperty =
DependencyProperty.Register("IsBlurred", typeof(bool), typeof(SlimPageDataHistory), new PropertyMetadata(false, new PropertyChangedCallback(IsBlurredChangedCallback)));
public bool IsBlurred
{
get { return (bool)GetValue(IsBlurredProperty); }
set { SetValue(IsBlurredProperty, value); }
}
#endregion
#region HistoryData Dependeny Property
private static void HistoryDataChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d is SlimPageDataHistory slimPageDataHistory)
slimPageDataHistory.InitializeHistoryData();
}
public static readonly DependencyProperty HistoryDataProperty =
DependencyProperty.Register("HistoryData", typeof(cSlimPageDataHistoryModel), typeof(SlimPageDataHistory), new PropertyMetadata(new cSlimPageDataHistoryModel(), new PropertyChangedCallback(HistoryDataChangedCallback)));
public cSlimPageDataHistoryModel HistoryData
{
get { return (cSlimPageDataHistoryModel)GetValue(HistoryDataProperty); }
set { SetValue(HistoryDataProperty, value); }
}
#endregion
#endregion
public SlimPageDataHistory()
{
InitializeComponent();
}
private void InitializeHistoryData()
{
try
{
if (HistoryData == null)
return;
MainStack.Children.Clear();
var tempHistoryDataColumns = HistoryData.ValueColumns.Take(7);
foreach (var historyColumn in tempHistoryDataColumns)
{
StackPanel stackPanel = new StackPanel();
stackPanel.Children.Add(new TextBlock() { TextAlignment = TextAlignment.Center, Text = historyColumn.Content });
AdaptableIcon adaptableIcon = new AdaptableIcon();
switch (historyColumn.HighlightColor)
{
case enumHighlightColor.none:
adaptableIcon.SelectedInternIcon = enumInternIcons.status_empty;
adaptableIcon.SetResourceReference(AdaptableIcon.PrimaryIconColorProperty, "Color.SoftContrast");
break;
case enumHighlightColor.blue:
adaptableIcon.SelectedInternIcon = enumInternIcons.status_info;
adaptableIcon.SetResourceReference(AdaptableIcon.PrimaryIconColorProperty, "Color.Blue");
break;
case enumHighlightColor.green:
adaptableIcon.SelectedInternIcon = enumInternIcons.status_good;
adaptableIcon.SetResourceReference(AdaptableIcon.PrimaryIconColorProperty, "Color.Green");
break;
case enumHighlightColor.orange:
adaptableIcon.SelectedInternIcon = enumInternIcons.status_danger;
adaptableIcon.SetResourceReference(AdaptableIcon.PrimaryIconColorProperty, "Color.Orange");
break;
case enumHighlightColor.red:
adaptableIcon.SelectedInternIcon = enumInternIcons.status_bad;
adaptableIcon.SetResourceReference(AdaptableIcon.PrimaryIconColorProperty, "Color.Red");
break;
}
if (historyColumn.IsLoading && historyColumn.HighlightColor != enumHighlightColor.red)
{
//todo: replace loading icon
adaptableIcon.SelectedInternIcon = enumInternIcons.menuBar_more;
adaptableIcon.SetResourceReference(AdaptableIcon.PrimaryIconColorProperty, "Color.Menu.Icon");
}
stackPanel.Children.Add(adaptableIcon);
MainStack.Children.Add(stackPanel);
}
if (tempHistoryDataColumns.Any(data => data.IsLoading))
LoadingIcon.Visibility = Visibility.Visible;
else
LoadingIcon.Visibility = Visibility.Collapsed;
(MainStack.Children[0] as FrameworkElement).Margin = new Thickness(5, 2.5, 2.5, 2.5);
(MainStack.Children[MainStack.Children.Count - 1] as FrameworkElement).Width = 75;
}
catch (Exception E)
{
LogException(E);
}
finally
{
}
}
internal void UpdateHistoryData(cSlimPageDataHistoryModel newHistoryData)
{
HistoryData = newHistoryData;
}
}
}